- 积分
- 7981
- 明经币
- 个
- 注册时间
- 2015-9-13
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2020-7-2 14:25:54
|
显示全部楼层
整理资讯
如 start4444 ' 原地踏步 所说,目前无法利用块名,直接得块的长跟宽
只能通过先插入块,得块的长跟宽
如程式本身是先输入得到块名与块座标点
插入第一个块后,得到长跟宽,再去插入第二个块
可以利用以下 Gu_xl 版主 的 函数
;;参数 pt = 点 blockname = 块名
(defun getinertBypt (pt BlockName / h p1 ss sl en ll ur)
(setq h (getvar 'viewsize)) ;_ 屏幕高
(setq p1 (list (car pt) (+ (cadr pt) (* 0.5 h)) 0))
(setq ss (ssget "F"
(list pt p1)
(list (cons 0 "insert") (cons 2 BlockName))))
(if ss
(progn
(repeat (setq i (sslength ss))
(setq sl (cons (ssname ss (setq i (1- i))) s))
)
(setq sl
(vl-sort sl
'(lambda (a b)
(< (distance pt (cdr (assoc 10 (entget a))))
(distance pt (cdr (assoc 10 (entget b))))
)
)
)
)
;;得到点位置处的块图元名
(setq en (car sl))
(vla-getboundingbox (vlax-ename->vla-object en) 'll 'ur)
(setq ll (vlax-safearray->list ll)
ur (vlax-safearray->list ur) ;得到长跟宽
)
(if (<= (cadr ll) (cadr pt) (cadr ur))
(progn
(redraw en 3) ;_ 亮显
;;返回值
en
)
)
)
)
)
|
|