找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 209|回复: 1

改变多行文字的颜色为指定的颜色色号

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-3-2 20:17:01 | 显示全部楼层 |阅读模式
改变多行文字的颜色为指定的颜色色号
  1. (defun m1 (MTextString / regex s)
  2.   (setq regex (vlax-create-object "Vbscript.RegExp"))
  3.                                         ;引用正则表达式控件
  4.   (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
  5.   (vlax-put-property regex "Global" 1)        ;匹配方式,全文字匹配
  6.   (setq s MTextString)
  7.   (vlax-put-property regex "Pattern" "(\\\\c|\\\\C)(.[^;]*);")
  8.   (setq s (vlax-invoke-method regex "Replace" s ""))
  9.   (vlax-release-object regex)
  10.   s
  11. )
  12. (defun c:tt (/ SS COR I E ENT MT)
  13.   (SETQ SS (SSGET '((0 . "MTEXT"))))
  14.   (IF (NOT SS)
  15.     (VL-EXIT-WITH-VALUE 0)
  16.   )
  17.   (if (or (not cor11) (<= cor11 0) (> cor11 256))
  18.     (setq cor11 1)
  19.   )
  20.   (SETQ COR NIL)
  21.   (WHILE (or (not cor) (<= cor 0) (> cor 256))
  22.   (IF
  23.     (NOT (SETQ
  24.            COR (GETINT (STRCAT "\n请输入颜色号<" (RTOS COR11 2 0) ">"))
  25.          )
  26.     )
  27.      (SETQ COR COR11)
  28.      (SETQ COR11 COR)
  29.   )
  30. )
  31.   (SETQ I 0)
  32.   (REPEAT (SSLENGTH SS)
  33.     (SETQ E   (SSNAME SS I)
  34.           ENT (ENTGET E)
  35.           MT  (CDR (ASSOC 1 ENT))
  36.           MT  (M1 MT)
  37.           i   (1+ I)
  38.     )
  39.     (setq ent (ENTMOD (SUBST (CONS 1 MT) (ASSOC 1 ENT) ENT))
  40.           ent (ENTMOD (SUBST (CONS 62 COR) (ASSOC 62 ENT) ENT))
  41.     )
  42.   )
  43.   (PRINC)
  44. )
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 2024-3-2 20:17:27 | 显示全部楼层
  1. [CommandMethod(nameof(Test1), CommandFlags.UsePickSet)]
  2.     public static void Test1()
  3.     {
  4.         var sf = OpFilter.Build(e => e.Dxf(0) == "MTEXT");
  5.         PromptSelectionOptions pso = new PromptSelectionOptions() { MessageForAdding = "\n选择要修改颜色的多行文字", RejectObjectsOnLockedLayers = true };
  6.         var r1 = Env.Editor.GetSelection(pso, sf);
  7.         if (r1.Status != PromptStatus.OK)
  8.             return;
  9.         using var tr = new DBTrans();
  10.         var mtList1 = r1.Value.GetEntities<MText>(OpenMode.ForWrite);
  11.         if (!mtList1.Any())
  12.             return;
  13.         var r2 = Env.Editor.GetInteger("\n输入颜色号");
  14.         if (r2.Status != PromptStatus.OK)
  15.             return;
  16.         var colorIndex = Math.Abs(r2.Value) % 257;
  17.         foreach (var mt in mtList1)
  18.         {
  19.             mt.Contents = mt.Text;
  20.             mt.ColorIndex = colorIndex;
  21.         }
  22.     }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 02:50 , Processed in 0.179458 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表