各位大神:我从资料上复制的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 多段线图元



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

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

网友答: (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)                           ;更新图元在屏幕中的显示


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

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

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

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

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

网友答: 可以通过鼠标指定  也可以提取多段线点表
  • 上一篇:[分享]按圆大小自动画中心线
  • 下一篇:没有了