GrzegorzBe Posted November 28, 2014 Report Share Posted November 28, 2014 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 More sharing options...
perlon Posted November 28, 2014 Report Share Posted November 28, 2014 Jeśli mogę dać rybę to w załączeniu kawałek zel'a który zlicza niebieskie linie. Podepnij pod przycisk c:countBlueLine załaduj lisp'a i używaj ;-) countBlueLine.zel dmatusz3 1 Link to comment Share on other sites More sharing options...
kojacek Posted December 1, 2014 Report Share Posted December 1, 2014 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? dmatusz3 1 Link to comment Share on other sites More sharing options...
Martin_S Posted December 1, 2014 Report Share Posted December 1, 2014 Ok fajnie, ale o takim programowaniu ja nie mam pojęcia i nawet nie wiem jak się zabrać do nauki takich podstaw, mało kto tak potrafi. :) Ale każda pomoc cenna :hi: Link to comment Share on other sites More sharing options...
GrzegorzBe Posted December 1, 2014 Author Report Share Posted December 1, 2014 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 More sharing options...
kojacek Posted December 1, 2014 Report Share Posted December 1, 2014 To proste, z wymienionej wyżej linii usuń sekwencję znaków "_x" Wtedy wywołanie: (if (setq % (ssget '((0 . "LINE")(62 . 5)(410 . "Model"))))(sslength %) 0) poprosi Cię o wskazanie obiektów GrzegorzBe 1 Link to comment Share on other sites More sharing options...
GrzegorzBe Posted December 1, 2014 Author Report Share Posted December 1, 2014 (edited) Kojacek - wielkie dzięki, właśnie o to mi chodziło. Działa super. Powiedz mi jeszcze tylko co to za język programowania abym w przyszłości mógł sam coś kombinować. Edited December 1, 2014 by GrzegorzBe Link to comment Share on other sites More sharing options...
kojacek Posted December 1, 2014 Report Share Posted December 1, 2014 To jeszcze prostsze ;) Język ów nazywa się: AutoLISP Link to comment Share on other sites More sharing options...
perlon Posted December 1, 2014 Report Share Posted December 1, 2014 (edited) 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 December 1, 2014 by perlon Link to comment Share on other sites More sharing options...
Recommended Posts