如何删除多边形的多余顶点
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=101010
找到这个帖子,但是不行,我想这样,输入一个命令,然后选择一个多边形,然后再点击那个点,然后就那个顶点就删掉
本帖最后由 vectra 于 2015-2-5 22:54 编辑
(defun c:tt (/ code ent n obj p pr)
(princ "\n选择多段线上要移除的顶点:")
(setq ent (ssget ":S" '((0 . "*POLYLINE"))))
(if ent
(progn
(setq ent (ssname ent 0))
(redraw ent 3)
(setq p(getpoint "指定顶点:")
obj(vlax-ename->vla-object ent)
p(vlax-curve-getclosestpointto obj (trans p 1 0))
n(fix (+ 0.5 (vlax-curve-getparamatpoint obj p))) ;_ 所选的顶点序号
pr(vlax-safearray->list
(vlax-variant-value (vla-get-coordinate obj n))
)
)
(cond
((= "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
(setq code (entget ent)
code (vl-remove-if '(lambda (x) (equal pr (cdr x) 0.1)) code)
)
(entmod code)
)
((= "POLYLINE" (cdr (assoc 0 (entget ent))))
(while(and (setq ent (entnext ent))
(/= "SEQEND" (cdr (assoc 0 (entget ent))))
)
(if (and (= "VERTEX" (cdr (assoc 0 (entget ent))))
(equal (cdr (assoc 10 (entget ent))) pr 0.1)
)
(vla-delete (vlax-ename->vla-object ent))
)
)
)
)
(redraw ent 4)
)
)
(princ)
) 搜一下关于多线段。。。里面有很全的关于多线段的处理。。
黄大师出品 根本不用求助,搜搜就有 应该有用,收藏了,谢谢分享 非常不错的程序,谢谢楼主分享
页:
[1]