Archive for October, 2015
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:

, ,