发一个获取图元矩形包围框的函数
;;; 本程序用于获取图元对象的矩形范围 ;;;;;; 返回点列表((左下角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)
)
虽然是很基础的功能 但是搜了一下 资料还真不多 新人必学的一个子函数,而且使用率很高很高。。。 万变不离其中,其核心代码就是
(vla-getboundingbox (vlax-ename->vla-object name) 'minpoint 'maxpoint)
(setq pmax (vlax-safearray->list maxpoint)pmin (vlax-safearray->list minpoint)) 太棒了, 要是能多选就更好了 请问包围框每条边的中点,怎么求得?
页:
[1]