- A+
无论是块还是其他线段或者多段线想要获取到图形的最大外形,其实很简单的。我们先分析最大为外形是由那些尺寸构成,比如一个正方形是由对角线的两端点,圆弧、圆是由直接或半径的最高点。下面贴出求块的最大外形、在上面画一个矩形
lsp源码例子:
(defun c:aaa ()
(vl-load-com)
(setq ZZZ (vla-get-utility
(vla-get-activedocument
(vlax-get-acad-object))))
;上面获取指针,固定代码
(vla-getentity ZZZ 'obj 'ip "\n选择对象: ")
(vla-GetBoundingBox obj 'minpoint 'maxpoint)
;转换为表
(setq minpoint (vlax-safeArray->list minpoint));转换边界最小点
(setq maxpoint (vlax-safeArray->list maxpoint)) ;转换边界最大点
(princ minpoint)
(terpri)
(princ maxpoint)
(command "_rectang" minpoint maxpoint);最大外形画方
(princ)
)
复制
上面的lisp代码的缺点,如果是一个对象是整圆的话,有的时候最大外形并不是过直径,要想达到任意图获取很准确的最大外形这个是不可取的,所以说这个时候获取块的最大外形,,样条曲线等,
实现任意图的最大外形,思路
框选的对象后,分别判断出对象的类别,是直线还是圆弧,或者块,在分别读取每个图形的最大外形的坐标点。在以坐标原点0.0作为基点,测出每个点到原点的距离,在以小到大或者大到小排序,取最大的和最小的一个点的距离,结果就是我们想要的最大外形,而且很精确的那种,当然,测量的时候也绑定数据坐标点,不然拍出来的也不知道是那个点。
祝你好运