更改多行文字的字母
嗨,大家好。又是我。。。这可能吗?改变多行文字的字母?
实例
7-04DS23AG2、7-04DS24AG2、7-04DS25AG2、7-04DS03AG2、7-04DS04AG2、7-04DS05AG2。。。。。。等等
我想在一个选项中更改多行文字中的字母(示例中的粗体红色字母)。我希望可以做到。。提前感谢。。 为了确保可以做到这一点,您必须使用ENTGET获取实体的关联列表,使用SUBST更改字符串(存储在DXF代码1下),并调用ENTMOD来更新实体。
具有挑战性的部分将是设计修改字符串的函数——该算法取决于替换类型(按位置、按值)。
只要发布您的第一次尝试,就会得到帮助。
当做
米尔恰 如果您只想更改这一个字母,并假设这些文字图元都在一个图形中,请转至“编辑”菜单,然后单击“查找”。这将打开一个对话框,其中有几个选项可用于查找文本或替换文本。由于所有这些数字都以“AG2”结尾,因此可以将其用作搜索字符串,并将其替换为“AX2”或“g”应该是什么。通过单击该对话框中的“选项”按钮,您可以让它搜索(或不搜索)各种类型的文本,例如块属性值、表格文本等。只需选中或取消选中该项。
来了,伙计。
如果您的字符(G)不是大写字母,则不会替换文本。
(defun c:Test (/ Nstr ss)
; Tharwat 25. 01. 2011
; Tested withAutoCAD 2010
(if (and (setq Nstr
(getstring "\n Enterg the replacement Text :"))
(setq ss
(ssget '((0 . "TEXT,MTEXT"))))
)
(
(lambda (i / ss1 e str GLoc 1st 2nd all)
(while
(setq ss1
(ssname ss (setq i (1+ i))))
(setq e (entget ss1))
(setq str
(cdr (assoc 1 e)))
(if
(eq
nil (setq GLoc
(vl-string-search "G" str)))
(entupd
(cdr (assoc -1
(entmod (subst (cons 1 str)
(assoc 1 e)
e)
)
)
)
)
(progn
(setq 1st
(substr str 1 GLoc))
(setq 2nd
(substr str (+ 2 GLoc)))
(setq all
(strcat 1st Nstr 2nd))
(entupd
(cdr (assoc -1
(entmod (subst (cons 1 all)
(assoc 1 e) e)
)
)
)
)
)
)
)
)
-1
)
(princ "\n No texts selected")
)
(princ)
)
塔瓦特 @msasu公司
谢谢你的回复。但我是lisp编程的noob。仍在学习。无论如何,谢谢你的投入。。
@杰克
我从没想过。谢谢
@塔瓦特
很有魅力!非常感谢你。
给你们更多的力量,上帝保佑!
不客气,伙计。
塔瓦特
页:
[1]