autocad/block-dimensions.lsp
2025-07-23 20:57:16 +04:00

39 lines
1.1 KiB
Common Lisp

(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)
)