Własny przycisk zaznaczający linie


GrzegorzBe
 Share

Recommended Posts

Witam

Dzięki wpisowi:

http://forum.cad.info.pl/blog/3/entry-81-jak-w-zwcad-doda%C4%87-polecenie-do-paska-narz%C4%99dzi-w-interfejsie-klasycznym/

wiem jak utworzyć swój przycisk.  

 

Prosiłbym jednak o odesłanie mnie do materiałów dzięki, którym mógłbym wiedziałbym co wpisać w polu "makro" w mojej sytuacji. Chciałbym aby mój przycisk zaznaczał mi wszystkie linie wybranego koloru (tu: niebieski) w określonym przeze mnie zakresie rysunku. 

 

Np: Zaznaczam cały rysunek, klikam mój przycisk i jedyne elementy, które są dalej zaznaczone to tylko linie w kolorze niebieskim - chodzi mi jedynie o odczytanie ich ilości. 

 

Powyższą sytuację mogę osiągnąć oczywiście używając polecenia "szybki wybór" następnie zaznaczając obszar, oraz to czego szukam. Jednak z racji, że do pewnych czynności potrzebne mi jest zliczenie linii tylko w kolorze niebieskim chciałbym stworzyć sobie taki przycisk. Dużo z tym roboty? Jak to wykonać? Proszę o poradę.

Link to comment
Share on other sites

Nie tam żebym się wtrącał czy coś,... ale wystarczy w linii poleceń wpisać:

(if (setq % (ssget "_x" '((0 . "LINE")(62 . 5)(410 . "Model"))))(sslength %) 0)

i zaakceptować enterem...

Takie proste (bezbajtowe wręcz) wklepanie z klawiaturki, ma tę przewagę nad skompilowanymi plikami *.zel (nic im nie ujmując), że można zawsze zmienić dowolnie albo rodzaj obiektu czy kolor, bez tworzenia nowego pliku, definicji polecenia i podpinania ikonek. Może to i mniej spektakularne rozwiązanie, ale w mojej opinii bardziej elastyczne... Jutro kolega będzie chciał wybrać czerwone łuki... i co będzie?

Link to comment
Share on other sites

Witam

Przede wszystkim dziękuję za szybką pomoc. I tak:

 

@perlon:

Zapisałem plik countBlueLine.zel na dysku.

W ZWCADzie: Narzędzia > Wczytaj aplikację i wczytałem i otrzymałem:

Polecenie: _appload
C:\e-cad\e-cad wlasne aplikacje\countBlueLine.zel załadowane pomyślnie!


Polecenie:
Zliczanie niebieskich linii we wskazaniu
Copyright (c)2014 by Perlon
Ładowanie funkcji c:countBlueLine....... Załadowane.; błąd: źle odczytany znak 
(ósemkowy): 0

 

Pod przycisk wpisałem komendę: c:countBlueLine
Przy próbie użycia mojego magicznego przycisku dostaję komunikat:
Polecenie: c:countBlueLine Nieznane polecenie "C:COUNTBLUELINE".

Jak to naprawić?

 

@kojacek

Twoje rozwiązanie faktycznie zwraca ilość linii w kolorze niebieskim. Brakuje mi tu jednak możliwości zaznaczania obszaru modelu. Dla przykładu mam 5 rysunków w modelu i chcę zliczyć niebieskie linie tylko na jednym z nich - nad którym aktualnie pracuję. Da się to jakoś poprawić? Warto dodać, że docelowo i tak komendę tę podepnę pod mój magiczny przycisk. 

 

Link to comment
Share on other sites

 

Witam

Przede wszystkim dziękuję za szybką pomoc. I tak:

 

@perlon:

Zapisałem plik countBlueLine.zel na dysku.

W ZWCADzie: Narzędzia > Wczytaj aplikację i wczytałem i otrzymałem:

Polecenie: _appload
C:\e-cad\e-cad wlasne aplikacje\countBlueLine.zel załadowane pomyślnie!


Polecenie:
Zliczanie niebieskich linii we wskazaniu
Copyright (c)2014 by Perlon
Ładowanie funkcji c:countBlueLine....... Załadowane.; błąd: źle odczytany znak 
(ósemkowy): 0

 

Pod przycisk wpisałem komendę: c:countBlueLine
Przy próbie użycia mojego magicznego przycisku dostaję komunikat:

Polecenie: c:countBlueLine Nieznane polecenie "C:COUNTBLUELINE".

Jak to naprawić?

Pod przyciskiem powinno być coś w tym stylu :

 

^C^C(if (not c:countBlueLine)(load"countBlueLine.zel")) countBlueLine

 

plik zel powinien być na ścieżce przeszukiwania zwcad'a

albo po load wpisać nazwę pliku z pełną ścieżką dostępu

 

kol. kojcek podał bardzo proste rozwiązanie, moje w zel'u jest nieco bardziej skomplikowane (w tym przypadku gorsze bo dłuższe szacun dla kojacka  :hi: ) ale w zasadzie robi dokładnie to samo - zlicza obiekty AcDbLine które mają kolor nr 5 ( dokładnie para z kropką (62 . 5) 62 oznacza kolor obiektu, 5 - kolor niebieski

Edited by perlon
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share