suiran 发表于 2022-10-23 20:46:03

请教 entupd 函数的用法!!!

各位大神:我从资料上复制的entupd的用法,程序红色部分总感觉不对,语法结构也不理解,哪位大神指点一下?其中(1,2)是什么意思?谢谢!语法     (entupd ename)功能及参数    正如前面所描述, 由 entmod 修改多段线的顶点或图块的属性后, 其整体图元将不会在屏幕上更新。例如, 将复杂多段线上的 100 个顶点全部修改, 则需要重新计算和再投影, 时间十分长。而 entupd 函数是将修改好的聚合线或图块直接在屏幕上更新。 entupd 函数可以使用多重折线或图块任何部分的图元名来调用它, 它不需要开头的图元——entupd 将可找的到开头。当entupd 是专为有属性的多段线和图块而设计时, 它可以使用任何图元来调用它。它都会在屏幕上重新产生这个图元, 并且包括所有的子图元。    【注意】如果 entupd 被用于一个呈嵌套的图元上(即一个包含在一个图块中的图元)或在一个包含嵌套图素的图块上, 它可能不会重新产生该图块的所有嵌套图元。您必须调用 REGEN 命令才能保证整个图块和它的嵌套图元都会被重新产出来。您可以在 AutoLISP 中键入(Command“regen”)来完成这件工作。范例假设在图形中的第一个图元是一条有几个顶点的多段线, 则:(setq e1 (entnext));          将多段线的图元名设定为 E1(setq e2 (entnext e1));       将多段线的第一个顶点设定为 E2(setq ed (entget e2));      将顶点数据设定为 ED(setq ed      (subst ' (10 1.0 2.0);   在 ED 中将顶点的位置改变到坐标点上      (assoc 10 ed); (1, 2)       ed       )    )(entmod ed);                     移动在图形中的顶点(entupd e1);                     重新再产生 E1 多段线图元

suiran 发表于 2022-10-23 20:49:28

能不能把 subst 函数这个地方换一个好理解的写法?

飞雪神光 发表于 2022-10-23 21:16:53

看的一头雾水 这是哪来的范例 前两句就不对

飞雪神光 发表于 2022-10-23 21:23:57

(setq e1(car(entsel "\n选择多段线:")));将多段线的图元名设定为 E1
(setq e2 (assoc 10(entget e1)))       ;将多段线的第一个顶点设定为 E2
(setq ed (entget e1))               ;将多段线的数据设定为 ED
(setq ed (subst '(10 1.0 2.0) e2 ed)) ;在 ED 中将顶点的位置改变到坐标点上
(entmod ed)                           ;更新在图形中的顶点
(entupd e1)                           ;更新图元在屏幕中的显示

陨落 发表于 2022-10-23 23:33:13

多段线的dxf表里面包含多个组码为10的表,要对应取出你想改变的那个表,然后再去subst,不然都是白忙活

suiran 发表于 2022-10-24 18:19:34

陨落 发表于 2022-10-23 23:33
多段线的dxf表里面包含多个组码为10的表,要对应取出你想改变的那个表,然后再去subst,不然都是白忙活

“多段线的dxf表里面包含多个组码为10的表,要对应取出你想改变的那个表”,就是不知道怎么取所以才研究一下这些函数,也是一头雾水:(

suiran 发表于 2022-10-24 18:26:35

飞雪神光 发表于 2022-10-23 21:23
(setq e1(car(entsel "\n选择多段线:")));将多段线的图元名设定为 E1
(setq e2 (assoc 10(entget e1)))    ...

感谢大神指点,试了一下确实可以实现第一个定点坐标的更新,可是怎么更新第2个,第3个呢,如果n个顶点呢?该使用什么函数?

飞雪神光 发表于 2022-10-25 00:31:20

可以通过鼠标指定也可以提取多段线点表
页: [1]
查看完整版本: 请教 entupd 函数的用法!!!