我目前有 gileCAD 修改此代码,我自己尝试修改。但我目前还想在替换其他文本时也获取源文本的文本高度,但是使用下面的代码,我收到“程序错误:错误的 DXF 组:50.0”的错误消息。
(defun c:MTP (/ cEnt elst text color ss i textSize)
(if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
(member (cdr (assoc 0 (entget cEnt)))
'("TEXT" "MTEXT" "ATTRIB")
)
1)
(progn
(setq elst (entget cEnt)
text (assoc 1 elst)
color (cond ((assoc 62 elst))
(T '(62 . 256))
)
textSize (cdr (assoc 40 elst)) ; get text size
)
(redraw cEnt 3)
(if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
(repeat (setq i (sslength ss))
(setq elst (entget (ssname ss (setq i (1- i)))))
(entmod
(subst text
(assoc 1 elst)
(if (assoc 62 elst)
(entmod (subst color (assoc 62 elst) elst))
(append elst (list color))
)
(entmod (subst textSize (assoc 40 elst) elst))
(append elst (list textSize))
)
)
)
)
)
)
(command "_regenall")
(princ)
)
文字高度为code 40 所以要修改它你应该使用这样的代码
(entmod
(if (assoc 40 elst)
(subst (cons 40 textSize) (assoc 40 elst) elst)
(append elst (list (cons 40 textSize)))
)
)
之后:
(entmod
(subst text
(assoc 1 elst)
(if (assoc 62 elst)
(entmod (subst color (assoc 62 elst) elst))
(append elst (list color))
)
)
)