经测试,按照楼上两位大神的思路可行,单行文本重新赋值一下再重生成就好了,多行文本未测试。
 - (defun c:tt( / blocks ent ename)
- (setq blocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
- (setq ent (car (entsel "\n选择块进行文字复位。")))
- (if (= (cdr (assoc 0 (entget ent))) "INSERT")
- (progn
- (setq ename (strcase (cdr (assoc 2 (entget ent)))))
- (vl-cmdf "_attsync" "s" ent "y")
- (vlax-for obj (vla-item blocks ename)
- (if (wcmatch (vla-get-objectname obj) "AcDbText")
- (vla-put-textstring obj (vlax-get obj 'TextString))
- )
- )
- (vl-cmdf "_regenall")
- )
- (princ "\n未选中块")
- )
- (princ)
- )
- (vl-load-com)
- (princ "\n程序加载完成")
- (princ)
|