So - war gar nicht so schlimm.
Layername, Blockbezeichnung und Attributbezeichnung mußt du noch für dich anpassen.
Wenns funktioniert - viel Spass damit !
Wenn nicht - gib Bescheid (geht nicht gibts nicht)
Gruß
Andreas
(defun work_commandEnded (dummy1 dummy2 / satz n
ent_data p_list p_min p_max xp_min
yp_min xp_max yp_max
)
;;; hier Layername für Rahmen setzen
(setq lay "Rahmen")
(if (setq satz (ssget "x"
(list (cons 0 "LWPOLYLINE")
(cons 8 lay)
(cons 410 (getvar "ctab"))
)
)
)
(progn
(setq n (1- (sslength satz)))
(repeat (sslength satz)
(setq ent_data (entget (ssname satz n)))
(setq p_list (mapcar 'cdr
(vl-remove-if-not
'(lambda (data) (= (car data) 10))
ent_data
)
)
)
(if p_min
(setq p_list (cons p_min p_list))
)
(if p_max
(setq p_list (cons p_max p_list))
)
(setq xp_min
(car
(vl-sort (mapcar '(lambda (p) (nth 0 p)) p_list) '< )
)
)
(setq yp_min
(car
(vl-sort (mapcar '(lambda (p) (nth 1 p)) p_list) '< )
)
)
(setq xp_max
(car
(vl-sort (mapcar '(lambda (p) (nth 0 p)) p_list) '> )
)
)
(setq yp_max
(car
(vl-sort (mapcar '(lambda (p) (nth 1 p)) p_list) '> )
)
)
(setq p_min (list xp_min yp_min))
(setq p_max (list xp_max yp_max))
(setq n (1- n))
)
(setq xy (mapcar '- p_max p_min))
(setq txt (strcat (rtos (nth 0 xy))
"x"
(rtos (nth 1 xy))
"="
(rtos (* 0.000001 (nth 0 xy) (nth 1 xy)))
"m²"
)
)
;;; hier Blockbezeichnung und Attributbezeichnung setzen
(setq block_bez "kopf")
(setq att_bez "Blattgrösse")
(if
(setq
satz
(ssget
"x"
(list (cons 0 "INSERT") (cons 66 1) (cons 2 block_bez))
)
)
(progn
(setq n (1- (sslength satz)))
(repeat (sslength satz)
(setq ent_data (entget (setq ent_name (ssname satz n))))
(while (/= (cdr (assoc 0 ent_data)) "SEQEND")
(if (= (cdr (assoc 0 ent_data)) "ATTRIB")
(if (= (cdr (assoc 2 ent_data)) (strcase att_bez))
(progn
(vlax-put-property
(vlax-ename->vla-object e_name)
"TextString"
txt
)
)
)
)
(setq ent_name (entnext ent_name))
(setq ent_data (entget ent_name))
)
(setq n (1- n))
)
)
)
)
)
)
(if (null (vlr-reactors :vlr-command-reactor))
(vlr-command-reactor
nil
'((:vlr-commandEnded . work_commandEnded))
)
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP