(defun c:CDL (/ ss strnum bnm val lst d l Pname)
;;; pBe Arpil 2012 ;;;
(vl-load-com)
(setq Pname "DistanceX"
lst nil
)
(defun strnum (var val / p)
(repeat (abs (- val (strlen var)))
(setq p (strcat " "
(if p p " "))))
(strcat var p)
)
(if (ssget "_X" '((0 . "INSERT")(2 . "STD PANELS,STD CORNER,H SECTION,`*U*")))
(progn
(vlax-for itm (setq ss (vla-get-activeselectionset
(vla-get-activedocument
(vlax-get-acad-object)
)
)
)
(if (and (= :vlax-true (vla-get-isdynamicblock itm) )
(setq bnm (vla-get-effectivename itm))
(setq val (vl-remove-if-not
'(lambda (x)
(eq (vla-get-PropertyName
x ) Pname ))
(vlax-invoke itm
'getdynamicblockproperties
)
)
)
)
(if (setq d
(assoc (list (setq l (vlax-get (car val) 'value)) bnm) lst)
)
(setq lst (subst (list (list l bnm) (1+ (cadr d))) d lst))
(setq lst (cons (list (list l bnm) 1 ) lst))
)
)
)
(vla-delete ss)
(textscr)
(princ "\nBlock Name QTY Length Total")
(foreach it (vl-sort lst '(lambda (k l) (< (cadar k) (cadar l))))
(princ (strcat "\n"
(strnum (cadar it) 16)
(strnum (itoa (last it)) 7)
(strnum (rtos (caar it) 2 2) 14)
(rtos (* (caar it) (last it)) 2 2)))
)
)
(prompt "\n** Nothing selected ** ")
)
(princ)
)