pop3k Opublikowano 8 Lutego 2021 Zgłoś Opublikowano 8 Lutego 2021 Witam, poszukuję informacji jak napisać kod w VBA, który zaznaczy mi bloki (zaznaczy tak, jakbym jeździł po modelu i klikał LPM dany blok) o określonej nazwie, które dodatkowo w swoim pierwszym atrybucie mają nazwę "pozycja". Da się coś takiego w ogóle zrobić? Czytałem gdzieś, że w ogóle nie ma możliwości zwykłego zaznaczenia obiektów poprzez VBA Cytuj
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Opublikowano 8 Lutego 2021 Wybitnie brzydki i nieintuicyjny fragment kodu. Tak przyjmuję wszelką krytykę z pokorą. Ale zaznacza wszystkie bloki w tym przypadku o nazwie "A-1". Public Sub Test() Dim ssh As ZcadSelectionSet Dim Ftyp(1) As Integer Dim Fdat(1) As Variant Dim BlockName As String BlockName = "A-1" Dim F1, F2 As Variant Ftyp(0) = 0: Fdat(0) = "Insert" Ftyp(1) = 2: Fdat(1) = BlockName Set sstest = ThisDrawing.SelectionSets.Add("sstest") F1 = Ftyp F2 = Fdat sstest.Select zcSelectionSetAll, , , Ftyp, Fdat Dim GroupName As String GroupName = "sstest" Dim group As ZcadGroup Set group = ThisDrawing.Groups.Add(GroupName) For Each Item In sstest group.AppendItems (Item) Next sstest.Delete ThisDrawing.SendCommand ("_SELECT" + vbCr + "G" + vbCr + GroupName + vbCr + vbCr) group.Delete End Sub Pozostaje odfiltrować bloki po atrybucie. Iteracyjnie, w pętli trzeba sprawdzić wartość każdego atrybutu w każdym zaznazconym bloku. Który atrybut jest pierwszy? ten który został wcześniej wstawiony do rysunku? a może ten najwyżej? Raczej posługiwałbym się tu nazwą atrybutu (TagString) niż tym który jest pierwszy. ale... to już temat na inna historię. Cytuj
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Opublikowano 8 Lutego 2021 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). Cytuj
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Opublikowano 8 Lutego 2021 Chwila bo czegoś nie rozumiem. Może mamy coś inaczej. U mnie okienko właściwości jest otwarte cały czas. Po uruchomieniu takiej funkcji we właściwościach pojawiają mi sie zaznaczone bloki z możliwością zmian. Cytuj
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Opublikowano 8 Lutego 2021 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 😕 Cytuj
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Opublikowano 8 Lutego 2021 Jaki vernum? i ile obiektów powinno zaznaczyć tak mniej-więcej? Cytuj
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Opublikowano 8 Lutego 2021 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 Cytuj
wedzik Opublikowano 8 Lutego 2021 Zgłoś Opublikowano 8 Lutego 2021 Na VBA się nie znam, na lispie też, ale jak coś ostatnio próbowałem robić to też miałem problem z zaznaczaniem. Obiekty były wybrane ale nie były podświetlone. Może to pomoże? Cytuj
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Opublikowano 8 Lutego 2021 (edytowane) Słuchajcie, działa! zamiast "_SELECT" należy wpisać "_.pSELECT" Dzięki za pomoc! Jesteście MISTRZAMI Edytowane 8 Lutego 2021 przez pop3k kruszynski 1 Cytuj
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.