lisp获取块最大外形尺寸,任意图形最大尺寸

  • A+
所属分类:CAD二次开发

无论是块还是其他线段或者多段线想要获取到图形的最大外形,其实很简单的。我们先分析最大为外形是由那些尺寸构成,比如一个正方形是由对角线的两端点,圆弧、圆是由直接或半径的最高点。下面贴出求块的最大外形、在上面画一个矩形

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作为基点,测出每个点到原点的距离,在以小到大或者大到小排序,取最大的和最小的一个点的距离,结果就是我们想要的最大外形,而且很精确的那种,当然,测量的时候也绑定数据坐标点,不然拍出来的也不知道是那个点。

祝你好运

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: