27
Oct
Um möglichst schnell alle Punkte einer Wolke, die mittels DXF-Export von einem Leica-Nivellierer erstellt wurden, zu beschriften wurde auf die schnelle folgendes Skript entwickelt.
;; get attribute from block marked with tag (attribute-name) (defun get_attribute (blk tag / enx) (if (= "ATTRIB" (cdr (assoc 0 (setq enx (entget (setq blk (entnext blk)))))) ) (if (= (strcase tag) (strcase (cdr (assoc 2 enx)))) (cdr (assoc 1 enx)) (get_attribute blk tag) ) ) ) ;; get_attribute ;; extrahiert den namen und schreibt ihn auf den block (defun c:leica_extract_names (/ v i ename) (setq v (ssget "x" (list (cons 0 "insert") (cons 2 "cross")))) (setq i 0) (repeat (sslength v) (progn (setq ename (ssname v i)) (entmake (list (cons 0 "text") (cons 1 (get_attribute ename "name")) (cons 10 (cdr (assoc 10 (entget ename)))) (cons 40 1.0)) ;; text height ) (setq i (+ i 1)) ) ) )
Beispielvideo: