wahab 发表于 2022-7-6 17:32:48

帮助:我需要一个LISP路由T

 
我在一个图形中有多个多行文字,包含文字
 
这个文本框中的蓝色表示计划状态,所以一旦这个特定链接被调试,我将把它改为绿色
QDC(55-56)-LZS(19-20)保留用于Bu samdra WDM连接
 
这个特殊的文本在大约20到30米的文本中复制,我想要一个可以自动完成手动工作的路由
 
任何帮助都将不胜感激
 
 
 
 

BIGAL 发表于 2022-7-6 17:55:04

如果你看看这个

文本字符串是“ABC{\\C1;DEF\\C3;ghi}\\P”,因此可以看到颜色字符串
 
这非常粗糙,需要更多的错误检查,但首先输入现有多行文字的颜色编号,然后输入新颜色。如果可以手动操作,则可以添加多个选项。真的需要一个真正的dwg来正确检查。
 
(defun c:mtextcol ( / obj strold strnew str1 str2 str3)
(setq obj (vlax-ename->vla-object (car(entsel "Pick mtext"))))
(setq str (vla-get-textstring obj))
(setq strold (strcat "C" (getstring "\nEnter old color number ")))
(setq strnew (strcat "C" (getstring "\nEnter new color number ")))
(setq pos (vl-string-searchstrold str))
(setq str1 (substr str 1 pos))
(setq str2 (substr str (+ pos 3)))
(setq str3 (strcat str1 strnew str2))
(vla-put-textstring obj str3)
(princ)
)

wahab 发表于 2022-7-6 18:06:01

谢谢bigal,
 
这个Lisp程序只会改变整个多行文字的颜色,这很简单。
我的问题是在我的绘图中的所有多行文字中找到一个特定的字符串,然后更改它们的颜色。
 

Steven P 发表于 2022-7-6 18:18:02

所以我想如果你得到一些多行文字,并得到它的描述,在文字中(对应于多行文字长度的assoc代码1、3或任何东西),会有类似{\\C5….}c5当然是蓝色文本)
 
“所有”你需要做的就是在多行文字中搜索相关的文本字符串,然后在包含它的多行文字中寻找颜色变化代码,如果有意义的话,对其进行更改?
 
您可能需要使用vl str position几次来获得代码位置,拆分文本,插入新代码,将部分重新组合在一起并entupd?
 
 

wahab 发表于 2022-7-6 18:42:54

嗨,steven,我不太擅长LISP代码编写,但据我所知,我的要求不是寻找颜色变化的位置,相反,我希望能够匹配我自己输入的文本,然后我希望能够改变它的颜色,无论它在M文本中的位置。
 
我通常使用find和replace随时更改文本的内容,然后手动转到所有MEXT并更改文本的颜色。
 
例如,在上面的快照中,
 
为madinata化合物保留,一旦此链接准备就绪,我将查找并替换此特定文本,例如“NDIA\U GPON1\U 1-1-1-8”,对于此特定文本,我希望颜色为绿色而不是蓝色。
 
我只想要默认的查找和替换功能,它可以替换文本的颜色,而不是替换文本。
页: [1]
查看完整版本: 帮助:我需要一个LISP路由T