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 Cytuj
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 Cytuj
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. Cytuj
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 Cytuj
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ą.