padon Opublikowano 9 godzin temu Zgłoś Opublikowano 9 godzin temu Witam, potrzebujemy połączyć długość wskazanej polilinii z atrybutem w bloku. Mam dużo polilinii i chcę opisać dowolną wielolinią odniesienia do której mam podpięty blok w którym jednym z atrybutów jest długość wskazanej polilinii.
kojacek Opublikowano 8 godzin temu Zgłoś Opublikowano 8 godzin temu https://kojacek.wordpress.com/2018/01/23/etykietowanie-polilinii/
padon Opublikowano 8 godzin temu Autor Zgłoś Opublikowano 8 godzin temu kojacek - dzięki za odzew, oczywiście doszedłem do Twojego forum (od tego zawsze zaczynam 😉 i znam przykład ale jest on dla mnie za "skomplikowany" - pracuję na GstarCAD 2022 i ratuję się też "chatem" "copilotem" i "gemini" i nawet już to wygląda tak jak chcę mam problem z powiązaniem długości polilinii przy zimianie jej długości (oczywiście po regeneracji) się mój lisp sypie - przy wersji bez zmiany długości było OK.
padon Opublikowano 8 godzin temu Autor Zgłoś Opublikowano 8 godzin temu ... ewentualnie fragment kodu który powiąże zwykłą wieloliniię odniesienia z zmieniającą się długością polilinii?
kojacek Opublikowano 3 godziny temu Zgłoś Opublikowano 3 godziny temu Voila! Musisz mieć wczytany CADPL-Pack. I ten kod: ; -------------------------------------------------------------------- ; ; MLELEN by kojacek 2026 ; -------------------------------------------------------------------- ; (defun C:MLELEN ()(jk:ACX_MLePlineLen)(princ)) ; -------------------------------------------------------------------- ; (defun jk:ACX_MLePlineLen (/ %e %o %s %f %l %m %a %v) (if (and (setq %s (car (setq %e (entsel "\nWskaz polilinie:")))) (= "LWPOLYLINE" (cdr (assoc 0 (entget %s)))) ) (if (setq %e (getpoint (setq %f (cadr %e)) "\nPunkt opisu:")) (progn (setq %l (strcat "%<\\AcObjProp Object(%<\\_ObjId " (GetObjectID (vlax-ename->vla-object %s)(cd:ACX_ADoc)) ">%).Length \\f \"%lu2%pr2\">%" ) %a (angle %f %e) ) (cd:SYS_UndoBegin) (setq %m (jk:ACX_AddMleader (cd:ACX_ASpace) %l %f %e 1) ) (vla-SetDogLegDirection %m 0 (vlax-3D-point (list (if (<= (car %f)(car %e)) 1 -1) 0 0) ) ) (vla-update %m) (vla-Regen (cd:ACX_ADoc) acActiveViewport) (cd:SYS_UndoEnd) ) ) ) ) ; -------------------------------------------------------------------- ; (defun jk:ACX_AddMleader (Space txt Ps Pe Dir / v vo) (if (= (length Ps) 2)(setq Ps (append Ps (list 0.0)))) (if (= (length Pe) 2)(setq Pe (append Pe (list 0.0)))) (setq v (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble '(0 . 5)) (apply 'append (list Ps Pe)) ) ) ) (setq vo (vla-addMleader Space v 0)) (if txt (vla-put-TextString vo txt)) (vla-SetDogLegDirection vo 0 (vlax-3D-point (list Dir 0.0 0.0 ) ) ) (vla-SetLeaderLineVertices vo 0 v) vo ) ; -------------------------------------------------------------------- ; (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)) ) ) ; -------------------------------------------------------------------- ; A wygląda to tak:
kojacek Opublikowano 3 godziny temu Zgłoś Opublikowano 3 godziny temu Po edycji polilinii zaś (i REGEN) tak:
padon Opublikowano 3 godziny temu Autor Zgłoś Opublikowano 3 godziny temu Chapeau bas! Dzięki - o to chodziło!
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ę