(defun c:GetBlockDimensions ( / ss ent vlaObj minPt maxPt width height txtStr insPt) (setq ss (ssget "_+.:S" '((0 . "INSERT")))) ; Select a block (if ss (progn (setq ent (ssname ss 0)) (setq vlaObj (vlax-ename->vla-object ent)) (vla-GetBoundingBox vlaObj 'minPt 'maxPt) (setq minPt (vlax-safearray->list minPt)) (setq maxPt (vlax-safearray->list maxPt)) ;; Calculate width and height (setq width (- (car maxPt) (car minPt))) (setq height (- (cadr maxPt) (cadr minPt))) ;; Build string like "120.50 x 75.30" (setq txtStr (strcat (rtos width 2 2) " x " (rtos height 2 2))) ;; Ask user where to place the label (setq insPt (getpoint "\nPick insertion point for label: ")) ;; Create the text entity (entmakex (list '(0 . "TEXT") (cons 10 insPt) (cons 40 2.5) ; Text height (cons 1 txtStr) (cons 7 "Standard") ; Text style (cons 8 "0") ; Layer ) ) (princ (strcat "\nLabeled block as: " txtStr)) ) (princ "\nNo block selected.") ) (princ) )