13763815647 发表于 2024-9-9 13:12:46

多段线生成4个顶点坐标?

有时候用bo生成的矩形会有不止4个顶点,会有5个或者6个顶点。怎么求出4个角点的坐标?谢谢各位大佬

自贡黄明儒 发表于 2024-9-9 13:16:53

bo可能生成多个多段线,你求最大那个的(vla-getboundingbox (vlax-ename->vla-object end) 'minp 'maxp)

kozmosovia 发表于 2024-9-9 14:09:53

得overkill一下,或者写段代码,清理共线的点以及重复的点

qazxswk 发表于 2024-9-9 21:05:44

本帖最后由 qazxswk 于 2024-9-9 21:11 编辑

试试这个。(defun c:11(/ pta ent minp maxp p1 p2 p3 p4)
(setq pta (getpoint "\n封闭图形内指定点:"))
(vl-cmdf "-BOUNDARY" pta "")
(setq ent (entlast))
(vla-getboundingbox (vlax-ename->vla-object ent) 'minp 'maxp)
(setq p1 (vlax-safearray->list minp) p3 (vlax-safearray->list maxp))
(entdel ent)
(setq p2 (list (car p1) (cadr p3)))    ;;矩形左上点
(setq p4 (list (car p3) (cadr p1)))    ;;矩形右下点
(entmake (list'(0 . "LWPOLYLINE")'(62 . 1)'(100 . "AcDbEntity")'(100 . "AcDbPolyline")
(cons 90 4)(cons 10 p1)(cons 10 p2)(cons 10 p3)(cons 10 p4)'(70 . 1)))
(princ))




xyp1964 发表于 2024-9-9 23:07:22

(defun c:tt ()
(setq p0 (getpoint "\n封闭图形内指定点: "))
(setq s1 (bpoly p0))
(vla-getboundingbox (vlax-ename->vla-object s1) 'p1 'p9)
(setq p1 (vlax-safearray->list p1))
(setq p9 (vlax-safearray->list p9))
(entdel s1)
(command "rectang" "non" p1 "non" p9)
(princ)
)

13763815647 发表于 2024-9-9 23:34:02

自贡黄明儒 发表于 2024-9-9 13:16
bo可能生成多个多段线,你求最大那个的(vla-getboundingbox (vlax-ename->vla-object end) 'minp 'maxp)

好的,谢谢

13763815647 发表于 2024-9-9 23:37:37

qazxswk 发表于 2024-9-9 21:05
试试这个。

谢谢大佬。

13763815647 发表于 2024-9-9 23:40:47

xyp1964 发表于 2024-9-9 23:07


谢谢,太给力了。

xyp1964 发表于 2024-9-10 08:38:11

bpoly多余节点处理测试:


页: [1]
查看完整版本: 多段线生成4个顶点坐标?