增强属性块改值问题不能更新问题
说明:;;toshuxing (N-att str N / M s)
;;N-att :entsel获取后用car取得图元名
;;str: 从另外一个相同增强属性块提取同位置属性值
;;N: 替换属性块中第N个属性值
(defun toshuxing (N-att str N / M s)
(setq MN)
(repeat N
(setq s (entget (entnext (cdr (car (entget N-att))))))
(setq M (- M 1))
(if (/= M 0)
(setq N-att(entnext N-att))
)
)
(entmod (subst (cons 1 str) (assoc 1 s) s))
)
问题:能替换成功,但是必须用(command "REGEN") 执行刷新之后才能看到替换后效果。要不然改了数据库值,但是图上不能显示。各位大大,怎么修改? 对于块,通常要(entupd e) (entupd ename)
功能及参数
正如前面所描述, 由 entmod 修改多段线的顶点或图块的属性后, 其整体图元将不会在屏幕上更新。例如, 将复杂多段线上的 100 个顶点全部修改, 则需要重新计算和再投影, 时间十分长。而 entupd 函数是将修改好的聚合线或图块直接在屏幕上更新。 entupd 函数可以使用多重折线或图块任何部分的图元名来调用它, 它不需要开头的图元——entupd 将可找的到开头。当entupd 是专为有属性的多段线和图块而设计时, 它可以使用任何图元来调用它。它都会在屏幕上重新产生这个图元, 并且包括所有的子图元。
【注意】如果 entupd 被用于一个呈嵌套的图元上(即一个包含在一个图块中的图元)或在一个包含嵌套图素的图块上, 它可能不会重新产生该图块的所有嵌套图元。您必须调用 REGEN 命令才能保证整个图块和它的嵌套图元都会被重新产出来。您可以在 AutoLISP 中键入(Command“regen”)来完成这件工作
entupd 能否问一下怎么用? 自贡黄明儒 发表于 2016-7-28 16:48 http://bbs.mjtd.com/static/image/common/back.gif
对于块,通常要(entupd e)
entupd 能否问一下怎么用?
(entmod (subst (cons 1 str) (assoc 1 s) s))
只修改这一句?对于含有10个左右属性的增强属性块。 entupd怎么用
实验下不就行了
无非两种可能
(entupd (car (entsel))
(entupd blk'att) ;;(entupd (cdr (assoc -1 s)))
楼主的程序是存在隐患的
两个同名属性块
特殊情况下
同位置的属性可能是不同的属性定义
举个例子
你插入两个同名多属性块
第一个explode按原块名建块
第二个explode也按原块名建块
但在选择属性定义时采用不同的顺序
然后再使用你的程序测试下
页:
[1]