adrian_SKA Opublikowano 14 Maja 2021 Zgłoś Opublikowano 14 Maja 2021 Cześć, jestem tutaj nowy i chce się przywitać. Czy byłby ktoś w stanie mi pomóc? Mam bloki z atrybutami, chciałbym zrobić aby po wskazaniu polilini automatycznie zczytywało jej długość. Znalazłem potobny temat https://kojacek.wordpress.com/2018/01/23/etykietowanbloki.dwgie-polilinii/ ale potrzebuje to dostosować to swoich bloków. Bardzo dziękuję za pomoc
perlon Opublikowano 14 Maja 2021 Zgłoś Opublikowano 14 Maja 2021 A na czym miałaby polegać ta pomoc? Co chcesz konkretnie osiągnąć. Jaki jest związek bloku z atrybutami z polilinią? dmatusz3 1
kojacek Opublikowano 15 Maja 2021 Zgłoś Opublikowano 15 Maja 2021 Może tak (czując się wywołanym linkiem): Uproszczony kod: ; -------------------------------------------------------------------------------------- ; ; 2021 by kojacek (defun C:LPOLY (/ GetObjectID getObj l b v i) (defun GetObjectID (obj doc) ;; Lee Mac (if (eq "64" (strcase (getenv "PROCESSOR_ARCHITECTURE"))) (vlax-invoke-method (vla-get-Utility doc) 'GetObjectIdString obj :vlax-false) (itoa (vla-get-Objectid obj)) ) ) (defun getObj (/ e) (if (setq e (car (entsel "\nWybierz obiekt do zmierzenia: "))) (if (member (cdr (assoc 0 (entget e))) (list "LINE" "ARC" "LWPOLYLINE") ) e ) ) ) (defun GetBlk (BlkList ATT / e d a) (if (setq e (car (entsel "\nWybierz blok opisuący: "))) (if (and (setq d (entget e)) (setq a (mapcar '(lambda (%)(cdr (assoc 2 (entget %)))) (cd:BLK_GetAttEntity e) ) ) (= "INSERT" (cdr (assoc 0 d))) (member (cdr (assoc 2 d)) BlkList ) (member Att a) ) e ) ) ) (if (and (setq l (getObj)) (setq b (GetBlk (list "KABEL" "OBIEKT_OCHRONNY") "MEASURED_LENGTH" ) ) ) (progn (setq v (GetObjectID (vlax-ename->vla-object l) (cd:ACX_ADoc) ) i (strcat "%<\\AcObjProp Object(%<\\_ObjId " v ">%).Length \\f \"%lu2%pr2\">%" ) ) (cd:SYS_UndoBegin) (cd:BLK_SetAttValueVLA b "MEASURED_LENGTH" i ) (vla-Regen (cd:ACX_ADoc) acActiveViewport) (cd:SYS_UndoEnd) ) (princ "\nZły wybór") ) (princ) ) ; -------------------------------------------------------------------------------------------- ; Wymagane jest załadowanie CADPL-Pack'a: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ Nazwy bloków, tagi atrybutów i format Field-a, trezba sobie "podkręcić" po swojemu.
adrian_SKA Opublikowano 15 Maja 2021 Autor Zgłoś Opublikowano 15 Maja 2021 (edytowane) Bardzo dziękuję za odpowiedź w temacie. Jesteśmy już bardzo blisko rozwiązania. chciałbym aby to działało podobnie jak byl przykład z etykietowaniem z tą różnicą że zamiast bloku z wielolinią odneisieniaaby były to te moje bloki. Lisp powinien dzialać następująco: kiedy wstawiam blok punktem wstawienia (małe kółeczko) dotykam polilini i wtedy wpisuje sie długośc polilini do atrybutu. Edytowane 15 Maja 2021 przez adrian_SKA
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się