Hej,
Napisałem skrypt który przepisuje wartość atrybutu o wskazanej nazwie do hiperłącza w wybranych blokach.
Zwróć uwagę na wielkość liter w nazwach, ponieważ ma ona znaczenie.
Skrypt uruchamia polecenie PrzepiszDoHiperlinku.
(vl-load-com)
(princ (strcat "
Copyright © 2000 — 2025 Usługi Informatyczne Szansa www.zwcad.pl
Dostępne polecenia:
PRZEPISZDOHIPERLINKU - skrypt automatycznie przepisuje wartość wskazanego atrybutu do hiperłącza w wybranych blokach
") )
(defun LM:vl-getattributevalue ( blk tag )
(setq tag (strcase tag))
(vl-some '(lambda ( att ) (if (= tag (strcase (vla-get-tagstring att))) (vla-get-textstring att))) (vlax-invoke blk 'getattributes))
)
(defun C:PRZEPISZDOHIPERLINKU (/ blockName przepiszVal ss i ent val)
(setq blockName (getstring t "\nWpisz nazwę bloku: "))
(setq attName (getstring t "\nWpisz nazwę atrybutu: "))
(setq ss (ssget "_X" (list (cons 2 blockName))))
(setq i 0)
(repeat (sslength ss)
(setq ent (ssname ss i))
(setq obj (vlax-ename->vla-object ent))
(setq val (LM:vl-getattributevalue obj attName))
(vla-add (vla-get-hyperlinks obj) val (vl-filename-base val))
(setq i (+ i 1))
)
(princ)
)
PrzepiszDoHiperlinku.lsp