hjmjtd 发表于 2024-9-28 22:44:33

发一个获取图元矩形包围框的函数

;;; 本程序用于获取图元对象的矩形范围   ;;;
;;; 返回点列表((左下角x 左下角y 0.0) (右上角x 右上角y 0.0)) ;;;
(defun vla-GetBound (ename / pSelectedObject minpoint maxpoint lwLeft upRight)
(vl-load-com)
(if (= (type ename) 'ENAME)
    (setq pSelectedObject (vlax-ename->vla-object ename))
    (setq pSelectedObject ename)
)
(vla-GetBoundingBox pSelectedObject 'minpoint 'maxpoint)
(setq lwLeft (vlax-safearray->list minpoint))
(setq upRight (vlax-safearray->list maxpoint));;;   把z值改为0
(setq lwLeft (list (nth 0 lwLeft) (nth 1 lwLeft) 0.0))
(setq upRight (list (nth 0 upRight) (nth 1 upRight) 0.0))
(list lwLeft upRight)
)

飞雪神光 发表于 2024-9-29 06:34:45

虽然是很基础的功能 但是搜了一下 资料还真不多

aws 发表于 2024-9-29 08:49:53

新人必学的一个子函数,而且使用率很高很高。。。

qazxswk 发表于 2024-9-30 21:05:19

万变不离其中,其核心代码就是
(vla-getboundingbox (vlax-ename->vla-object name) 'minpoint 'maxpoint)
(setq pmax (vlax-safearray->list maxpoint)pmin (vlax-safearray->list minpoint))

魔法披风 发表于 2024-10-13 17:42:34

太棒了, 要是能多选就更好了

jcmtxgt 发表于 2024-11-28 01:30:37

请问包围框每条边的中点,怎么求得?
页: [1]
查看完整版本: 发一个获取图元矩形包围框的函数