giskumar 发表于 2022-7-6 10:16:56

插入顶点

大家好,
 
有谁能帮我在不使用vlisp的情况下在二维多段线中插入顶点吗。
我需要这个用于intelli cad的例程。
 
谢谢

MarcoW 发表于 2022-7-6 10:28:05

我对AutoCAD 2006不是舒尔。。。但是双击多段线,就会得到一些菜单/选项。选择“插入”并选择新顶点的位置(如“最近”)。现在保留该命令并再次选择多段线(单击)。如果一切正常,你会看到新的顶点。
 
这是你需要的吗?
 
当做
马可。

giskumar 发表于 2022-7-6 10:36:04

谢谢你的回复。
 
我想使用purly lisp函数而不是Visual lisp函数来实现这一点。
bcz Intelli cad不支持Visual lisp。
 
谢谢

David Bethel 发表于 2022-7-6 10:43:31

可以这样做,但如果添加的顶点位于柱脚线的圆弧(凸起)段中,也可能是一个相当复杂的过程。此外,宽度不同的柱脚也是一个挑战。您需要满足哪些参数-大卫

irneb 发表于 2022-7-6 10:49:49

多段线是否总是LWPolies?或者你也会有更老的2d政策?使用2dPolies,您必须从头开始重新创建多边形,因为多段线实际上由多段线实体组成,后面是顶点实体,最后是Sequend实体。所以你必须删除所有内容,然后重新创建。请参阅开发人员关于创建复杂DXF实体的帮助。
 
对于LWPolyline,每个顶点的顶点都是DXF代码10、40、41和42的简单组。因此,您需要将新顶点的代码插入DXF列表中的正确位置-“最简单”的方法是遍历该位置之前的每个项目(将它们添加到新的临时列表),然后添加新项目,最后继续添加旧列表中的其余项目。然后更改代码90以更新顶点总数-使用subst。最后使用entmod将实体更新到调整后的DXF数据列表。
 
顺便说一句,你在用哪个IntelliCAD?我知道其中一些函数也可以使用vlax函数(例如BricsCAD)

giskumar 发表于 2022-7-6 10:58:23

谢谢大家,
 
最后,我成功地完成了我写的以下内容。
请告知任何改进。
 

(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) "" "")
))
)

irneb 发表于 2022-7-6 11:06:15

这可能是个好方法。如果设置了对象捕捉,请小心在选定点上打断。您可以在将每个点传递给break命令之前添加“_None”。我对直接使用选定点有点怀疑。它几乎不会直接位于多段线的顶部。但要在多段线的弯曲部分上找到这样的点会非常复杂。这就是我想要vlax曲线函数的地方,但你说它们不可用
 
这就是你想停止日常生活的地方吗?还是要将新插入的顶点移动到新位置?

giskumar 发表于 2022-7-6 11:10:45

是的,它符合我的要求。
 
谢谢

VVA 发表于 2022-7-6 11:19:57

看这里,将顶点添加到多段线
页: [1]
查看完整版本: 插入顶点