KBR Opublikowano 29 Lipca 2013 Zgłoś Udostępnij Opublikowano 29 Lipca 2013 (edytowane) Mam taki skrypt do opisu prętów zbrojeniowych. Wskazuję pręt a skrypt odczytuję jego długość i nadaje odpowiednią wartość atrybutowi. Do niedawna wszystko działało ok. Tzn na początku używałem komendy "Lengthen" i odczytywałem "perimeter" Później zastąpiłem komendą "area", Teraz jednak przestało mi to działać w odniesieniu do obiektów typu linia. Wcześniej działało do linii i polilinii. Jaj napisać skrypt, żeby działał dla linii i polilinii? (setq obiekt (ssget ":S"));(command "lengthen" obiekt ))(command "area" "o" obiekt)(SETQ dlug (GETVAR "perimeter" )) Dodatkowo przydałoby się jeszcze żeby ze wskazanego obiektu odczytać kąt i wstawić blok z odpowiednim kątem. W przypadku polilinii powinien to być kąt wskazanego odcinka. Nie umiem tego odczytać, A nie mam czasu wgłębiać się w literaturę. Edytowane 29 Lipca 2013 przez KBR Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kruszynski Opublikowano 30 Lipca 2013 Zgłoś Udostępnij Opublikowano 30 Lipca 2013 WitamJakiej wersji programu Pan używa? Proszę o podanie numeru wyświetlonego po wpisaniu polecenia _vernum Pozdrawiam Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assgarth Opublikowano 30 Lipca 2013 Zgłoś Udostępnij Opublikowano 30 Lipca 2013 (edytowane) Proszę spróbować w ten sposób: (command "_lengthen" (car (entsel "\nWskaż obiekt do odczytu długości: "))) (getvar "perimeter") lub jeszcze lepiej, pobrać bibliotekę stąd: http://cad.pl/ftp/Pack/v1/CADPL-Pack-v1.lsp a następnie użyć polecenia: (cd:ACX_GetProp (car(entsel "\nWskaż obiekt: ")) '("Length" "Angle")) Dla LWPOLYLINE, trzeba by określić kąt dla wskazanego segmentu (w przypadku gdy nie jest to łuk). Ale to dopiero wówczas można zrobić, kiedy faktycznie okaże się konieczne. EDIT: lub też użyć funkcji Lee-Mac: (defun c:tlen ( / e i l s ) (if (setq s (ssget '( (0 . "ARC,CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE") (-4 . "<NOT") (-4 . "<AND") (0 . "POLYLINE") (-4 . "&") (70 . 80) (-4 . "AND>") (-4 . "NOT>") ) ) ) (progn (setq l 0.0) (repeat (setq i (sslength s)) (setq e (ssname s (setq i (1- i))) l (+ l (vlax-curve-getdistatparam e (vlax-curve-getendparam e))) ) ) (princ "\nTotal Length: ") (princ (rtos l)) ) ) (princ) ) pozdrawiam Edytowane 30 Lipca 2013 przez Assgarth KBR 1 Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KBR Opublikowano 30 Lipca 2013 Autor Zgłoś Udostępnij Opublikowano 30 Lipca 2013 Dzięki! mam wersję "2013.07.09(14388)" Użyłem tego pierwszego rozwiązania, ale nie kończyło mi polecenia lengthen musiałem zapisać (command "_lengthen" (car (entsel "\n Wskażpręt żebrowazny do opisu")) "" )(SETQ dlug (GETVAR "perimeter" )) Na rozwiązanie z kontem jednak jestem za słaby:). Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kojacek Opublikowano 30 Lipca 2013 Zgłoś Udostępnij Opublikowano 30 Lipca 2013 (edytowane) Zależy w jakim banku masz (to konto)... ;) Jeżeli zaś chodzi o polilinie, jej długości etc. Tutaj jest parę różności: http://forum.cad.pl/wiczenie-lisp-lwpolyline-t74939.html O kątach segmentów nie ma chyba nic, niemniej uważny czytelnik na podstawie tej lektury powinien sobie z tym dać spokojnie radę. Przy sprawdzaniu kątów swgmentów, dodatkowo (dla tekstów) należy zwrócić uwagę, na ich prwidłową orientację. Przykładowo pionowy odcinek może mieć kąt 90 stopni, jak i 180, zatem powinno się je trakować tożsamo - tekst zaś powinien mieć w obu przypadkach jedną orientację. Zabawy (z obrotem) dowolnego wymiaru liniowego dobrze to ilustrują. kojacek Edytowane 30 Lipca 2013 przez kojacek Cytuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
KBR Opublikowano 31 Lipca 2013 Autor Zgłoś Udostępnij Opublikowano 31 Lipca 2013 Chyba byłem mocno zmęczony :). 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ą.