pop3k Opublikowano 8 Lutego 2021 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 8 Lutego 2021 Zgłoś Udostępnij Opublikowano 8 Lutego 2021 Jaki vernum? i ile obiektów powinno zaznaczyć tak mniej-więcej? Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
wedzik Opublikowano 8 Lutego 2021 Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pop3k Opublikowano 8 Lutego 2021 Autor Zgłoś Udostępnij 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 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ą.