
pop3k
Użytkownik forum-
Postów
71 -
Dołączył
-
Ostatnia wizyta
Treść opublikowana przez pop3k
-
Super robota! Dziękuję
-
Super!
-
Ten addselected jakby jeszcze pobierał skalę, szerokość i rodzaj linii to byłoby super
-
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Dziękuję bardzo za pomoc, spróbuję poskładać wszystko do kupy i stworzyć mój superblok. Co do zliczania pozycji to już mam takie makro (ewentualnie korzystam z już dostępnych) -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Co do 3. Może nie edytujmy bloku, bo zaraz wszystkie bloki o tej nazwie będą miały zmieniony kolor a mi zależy tylko na jednym. Może da się zatem zmienić tylko kolor jego atrybutów? -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Tak też o tym myślałem. Tak będę kombinował Do stworzenia superbloku potrzebne mi jeszcze kilka patentów. 1. Jaka komenda vba poda mi współrzędne zaznaczonego bloku? 2. Czy istnieje możliwość podania współrzędnych w jakiejś funkcji a funkcja zwróci nazwy wszystkich bloków występujących w tym punkcie i je zaznaczy? 3. Czy jest możliwość zaingerowania w blok nie edytując go. Na przykład po spełnieniu określonego warunku wszystko co jest wewnątrz bloku zmieni kolor na żółty. -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Tak jak pisałem, chcę odczytać tę wartość i zapisać ją w atrybucie bloku (odczytywać to, co jest w czerwonej ramce i zapisywać w niebieskiej - patrz 9 post) za każdym razem, gdy blok zostanie zmieniony. -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
No dobra, pomożecie powalczyć z reaktorem? Plik z blokiem dynamicznym - bohaterem w załączniku Procedura: Private Sub ZcadDocument_ObjectModified(ByVal Object As Object) Dim att As ZcadAttributeReference Dim atts As Variant If TypeOf Object Is ZcadBlockReference Then Set blk = Object If blk.EffectiveName = "Konstruktor_dozbrojenia" Then atts = blk.GetAttributes For j = 0 To UBound(atts) Set att = atts(j) If j = 0 Then MsgBox "Udało się" & att.TextString Next End If End If End Sub OK, trochę dziwnie wygląda odniesienie się do atrybutu tego bloku, ale działa.. Procedura powoduje wywalenie msgboxa z pokazaniem atrybutu po każdorazowej zmianie bloku. Zmieniona procedura: Private Sub ZcadDocument_ObjectModified(ByVal Object As Object) Dim att As ZcadAttributeReference Dim atts As Variant If TypeOf Object Is ZcadBlockReference Then Set blk = Object If blk.EffectiveName = "Konstruktor_dozbrojenia" Then atts = blk.GetAttributes For j = 0 To UBound(atts) Set att = atts(j) 'If i = 0 Then MsgBox "Udało się" & att.TextString Dim ss As ZcadSelectionSet Dim ent As ZcadEntity Dim bname As String Dim props() As ZcadDynamicBlockReferenceProperty Dim pvalue As Variant Dim blkref As ZcadBlockReference With ThisDrawing.SelectionSets While .Count > 0 .item(0).Delete Wend Set ss = .Add("$DynBlocks$") End With Dim ftype(0 To 1) As Integer Dim fdata(0 To 1) As Variant ftype(0) = 0: ftype(1) = 66 fdata(0) = "INSERT": fdata(1) = 1 ss.SelectOnScreen ftype, fdata If ss.Count = 0 Then MsgBox "Nie wybrano bloku...Kończymy" Exit Sub End If Set blkref = ss.item(0) 'Dim i As Integer props = blkref.GetDynamicBlockProperties MsgBox props(0).Value Dim prop As ZcadDynamicBlockReferenceProperty 'For i = LBound(props) To UBound(props) - 1 Set prop = props(0) pvalue = prop.Value Dim asTxt As String asTxt = CStr(pvalue) MsgBox (asTxt) 'Next i Next End If End If End Sub Na chama wrzucone to co Kruszynski wymyślił. Tym razem procedura pokazuje długość pręta po każdorazowej zmianie. Niestety mogę się odnieść jedynie do pierwszej długości props(0), wyłączyłem pętle, bo przy props(1) wywala już błąd. CEL: Po zmianie długości pręta lub wymiaru, chcę podmienić atrybut. Czuję, że jestem już blisko, ale działam na ślepo. Pomożecie? blok.dwg -
Witam, czy znajdę funkcję podobną do addselected z autocad? Funkcja pobiera warstwę, kolor, grubość i typ linii z wybranego obiektu a następnie chce ją rysować. A może ma ktoś lispa który to robi?
-
[VBA] Zwcad - zaznacz blok ale uważaj na grupy
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Ok, znalazłem. Za dużo pętli w For I = 0 To ssetObj.Count powinno być For I = 0 To ssetObj.Count -1 Dziękuję bardzo. Ładnie działa! -
[VBA] Zwcad - zaznacz blok ale uważaj na grupy
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Jeżeli ssetObj jest moim oSset to wyskakuje mi błąd Run-time error '-2147467259 (80004005)': Method 'Item" of object "IZcadSelectionSet' failed -> Set ent = oSset.item(i) -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Dzięki wszystkim za odpowiedzi. Ten etap już mamy ogarnięty. Teraz chciałem wywoływać jakąś funkcję (choćby MsgBox) VBA za każdym razem jak ten właśnie blok zmodyfikuję (rozszerzę, wydłużę) -
[VBA] Zwcad - zaznacz blok ale uważaj na grupy
pop3k opublikował(a) temat w Wsparcie programistyczne LISP i VisualLISP
Cześć, używam kodu do zaznaczania bloków i filtruje je aby pobierało tylko te z nazwą "test". Czasem bloki te grupuję. Czy makro może wychwycić, że dany blok o nazwie "test" jest już w jakiejś grupie, wyrzuci mi błąd (msgbox) i wyjdzie z funkcji? Dim oSset As ZcadSelectionSet With ThisDrawing.SelectionSets While .count > 0 .item(0).Delete Wend Set oSset = .Add("*") End With ftype(0) = 2: fdata(0) = "test" dxfCode = ftype: dxfValue = fdata oSset.SelectOnScreen dxfCode, dxfValue -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Aha... reaktorów -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Aha, elegancko. Teraz jak już mam dostęp do bloku dynamicznego, jego parametrów i atrybutów to chodzi mi po głowie takie makro, które byłoby wczytywane wraz z oknem zwcada i śledziłoby zmianę któregokolwiek parametru (lub atrybutu) bloku o nazwie "Test_blok" i za każdym razem wyrzucałoby Msgbox typu "parametr bloku o współrzędnych x,y został zmieniony" lub "atrybut bloku o współrzędnych x,y został zmieniony". Byłby to blok superdynamiczny, który mógłby reagować na każdą zmianę Jest to w ogóle możliwe? Czy takie makro ciągle działające w tle nie zajmowałoby za dużo zasobów? Co o tym myślicie? -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Chodziło mi o pobranie danych z czerwonej ramki. Z niebieskiej już miałem opanowane. -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
OK, więc w pliku blok dynamiczny, który posiada parametry rozciągania długości o nazwach Rozstaw i Dlugosc_preta (na zdjęciu w czerwonej ramce), blok będzie posiadał również atrybuty do przechowywania informacji itp. (niebieska ramka), ale o nich proszę nie myśleć - wiem jak się do nich dostać przez VBA. Teraz pytanie, czy mogę wczytać wartości z czerwonej ramki z pod VBA i wyświetlić je w msgBox, a może mogę je też podmienić? PS. Na początku chodziło mi o to, żeby któryś z atrybutów (z niebieskiej ramki) podczytywał na żywo po każdej zmianie długości (z czerwonej ramki) forum_cad_blok.dwg -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Kiedyś rozmawiałem z e-cadem, chyba mają za dużo pracy żeby wprowadzać nowe pomysły -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Mam e-cad, jednak tworzę coś na własne potrzeby. A co do mojego pytania? -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Nie nie, nie o to chodzi. No dobrze.. a można wczytać wartość długości rozciąganych elementów do VBA? To znaczy, mam blok dynamiczny, w którym rozciągam dwie prostopadłe linie. Wartości te są edytowalne i można je zmieniać poprzez kliknięcie myszką lub wpisanie wartości. Te wartości są sobie tożsame. Czy można stworzyć makro VBA w którym to klikamy na blok i np. msgbox podaje nam wartości długości tych dwóch linii? -
ZWCAD - Bloki dynamiczne i atrybuty
pop3k opublikował(a) temat w Wsparcie programistyczne LISP i VisualLISP
Chcę zrobić blok dynamiczny pręta do zbrojenia płyty. Pręt ma określoną długość, którą mogę rozciągać (a więc zmieniać jego długość) a prostopadle do niego mam linię wymiarową określającą jego rozstaw, którą też mogę rozciągać (też mam długość rozkładu). Po środku stoi blok z atrybutami. Czy mogę powiązać atrybuty bloku ze zmiennymi atrybutami? Aby blok wiedział, że zmieniła się długość pręta i wciągała do siebie jego wartość? Macie jakiś pomysł czy można to zautomatyzować? -
[VBA] zaznacz bloki z modelu
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Słuchajcie, działa! zamiast "_SELECT" należy wpisać "_.pSELECT" Dzięki za pomoc! Jesteście MISTRZAMI -
[VBA] zaznacz bloki z modelu
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
VERNUM = "2019.11.06(51422)_Win32" (tylko do odczytu) testuję na 2 zaznaczeniach. Po usunięciu group.Delete widzę, że grupa tworzy się prawidłowo, można ją kliknąć. Ale to tylko pośrednie roziwązanie -
[VBA] zaznacz bloki z modelu
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
To u mnie polecenie _SELECT i wybraniu nawet ręcznie obiektów nie zmienia nic w oknie Właściwości. Ciągle jest "brak wyboru". Hmmm 😕 -
[VBA] zaznacz bloki z modelu
pop3k odpowiedział(a) na pop3k temat w Wsparcie programistyczne LISP i VisualLISP
Dla mnie kod piękny. Z tym, że komenda _select nie jest tym samym co lewy klik myszy na obiekt (nie pojawia się okienko właściwości do ewentualnych zmian).