39 lines
1.1 KiB
Common Lisp
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)
|
|
)
|