包围后续顶点o
我的任务是找到具有相同坐标或零距离的多段线的后续顶点,并删除一个顶点。在多段线属性上滚动地块的上千个角并不容易。
请向任何制作lisp的人寻求帮助,以找到距离为零的两个顶点,并删除或删除另一个顶点。并询问是否包围该点。
可能会要求包围它,只是为了给我们一个标记,我应该从哪里开始编辑角标签。任何帮助都将不胜感激。 不要搜索www,我将从我的图书馆中挖掘与此任务相关的内容。。。它只涉及删除重复顶点,而不是对其进行加密-为此,您必须使代码足以满足您的特定要求,这是不必要的。。。
您好,M.R。
HTH公司
清洁多边形。lsp :)真的很有帮助!!感谢M.R.分享。。我只问circle只是为了给我一些线索,从哪里开始更正我的标签,因为标记的顶点与顶点数相等。但这个Lisp程序还行,它会消除我工作中的麻烦。。 巧克力
(defun c:remseg (/ ss pts_ pts i before after bd dup)
;;; pBe 23Nov2013 ;;;
(setvar 'pdmode 34)
(if (setq pts_ nil
ss (ssget "_:L" '((0 . "LWPOLYLINE")))
)
(repeat (setq i (sslength ss))
(setq pts_ nil dup nil
pl (vlax-ename->vla-object (ssname ss (setq i (1- i))))
)
(setq before (/ (length
(setq pts (Vlax-get pl 'Coordinates))
)
2
)
)
(while pts
(setq pts_ (cons (list (car pts) (cadr pts)) pts_)
pts(cddr pts)
)
)
(while pts_
(setq pts(cons (car pts_) pts)
bf (length pts_)
pts_ (vl-remove (car pts_) pts_)
)
(if (> (- bf (length pts_) ) 1)
(setq dup (cons (car pts) dup)))
)
(setq after (length pts))
(vlax-put pl 'Coordinates (apply 'append pts))
(if (> before after)
(progn
(foreach p dup
(entmakex (list (cons 0 "POINT")
(cons 10 p))))
(princ (Strcat "\nBefore: "
(itoa before)
"\tAfter : "
(itoa after)
)
)
)
(princ "\n<<No Duplicates found>>")
)
)
)
(princ)
)
(vl-load-com)
适用于清理多段线。Thanx。。我唯一的问题是之前和之后。与重复顶点的位置不匹配。
不确定你的意思是什么notview,之前和之后的打印是为了显示它在处理之前和之后有多少个“点”。你真的想在这个位置上做个标记吗? 是的,这就是我真正想要的,重复顶点所在的标记。谢谢你之前和之后的解释,我以为那是顶点的位置。
更新了#4后的代码[目前我使用“点”实体作为标记]。
尽管如此,我还是不明白这个标记的原因。 谢谢pBe,我会试试代码的。。 干杯它工作完美!!非常感谢您!!
页:
[1]
2