插入顶点
大家好,有谁能帮我在不使用vlisp的情况下在二维多段线中插入顶点吗。
我需要这个用于intelli cad的例程。
谢谢 我对AutoCAD 2006不是舒尔。。。但是双击多段线,就会得到一些菜单/选项。选择“插入”并选择新顶点的位置(如“最近”)。现在保留该命令并再次选择多段线(单击)。如果一切正常,你会看到新的顶点。
这是你需要的吗?
当做
马可。 谢谢你的回复。
我想使用purly lisp函数而不是Visual lisp函数来实现这一点。
bcz Intelli cad不支持Visual lisp。
谢谢 可以这样做,但如果添加的顶点位于柱脚线的圆弧(凸起)段中,也可能是一个相当复杂的过程。此外,宽度不同的柱脚也是一个挑战。您需要满足哪些参数-大卫 多段线是否总是LWPolies?或者你也会有更老的2d政策?使用2dPolies,您必须从头开始重新创建多边形,因为多段线实际上由多段线实体组成,后面是顶点实体,最后是Sequend实体。所以你必须删除所有内容,然后重新创建。请参阅开发人员关于创建复杂DXF实体的帮助。
对于LWPolyline,每个顶点的顶点都是DXF代码10、40、41和42的简单组。因此,您需要将新顶点的代码插入DXF列表中的正确位置-“最简单”的方法是遍历该位置之前的每个项目(将它们添加到新的临时列表),然后添加新项目,最后继续添加旧列表中的其余项目。然后更改代码90以更新顶点总数-使用subst。最后使用entmod将实体更新到调整后的DXF数据列表。
顺便说一句,你在用哪个IntelliCAD?我知道其中一些函数也可以使用vlax函数(例如BricsCAD) 谢谢大家,
最后,我成功地完成了我写的以下内容。
请告知任何改进。
(defun c:ins(/ obj obj1 po str)
(setq obj (entsel "\n Select entity to insert vertex"))
(setq obj1 (car obj))
(setq po (cadr obj))
(if (/= (cdr (assoc 0 (entget (car obj)))) "LWPOLYLINE")
(progn
(alert "The selected line is not polyline")
(setq str (getstring "\n Do u want to continue: <y / n>"))
(cond
((= str "y")
(progn
(command "pedit" obj "")
(setq obj1 (entlast))
));cond
);cond
));if
(if (= (cdr (assoc 0 (entget obj1))) "LWPOLYLINE")
(progn
(command "break" obj1 po po)
(command "pedit" obj1 "j" (entlast) "" "")
))
)
这可能是个好方法。如果设置了对象捕捉,请小心在选定点上打断。您可以在将每个点传递给break命令之前添加“_None”。我对直接使用选定点有点怀疑。它几乎不会直接位于多段线的顶部。但要在多段线的弯曲部分上找到这样的点会非常复杂。这就是我想要vlax曲线函数的地方,但你说它们不可用
这就是你想停止日常生活的地方吗?还是要将新插入的顶点移动到新位置? 是的,它符合我的要求。
谢谢 看这里,将顶点添加到多段线
页:
[1]