戏男 发表于 2023-6-12 10:06:19

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

本帖最后由 戏男 于 2023-6-12 10:25 编辑

如题,框选多行文字,改变多行文字的颜色为指定的颜色色号


liuhe 发表于 2023-6-12 10:06:20

本帖最后由 liuhe 于 2023-6-21 17:39 编辑

(prompt"作者:流河 QQ:859779429")
(defun m1 (MTextString / regex s)
(setq regex (vlax-create-object "Vbscript.RegExp"))
                                        ;引用正则表达式控件
(vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
(vlax-put-property regex "Global" 1)      ;匹配方式,全文字匹配
(setq s MTextString)
(vlax-put-property regex "Pattern" "(\\\\c|\\\\C)(.[^;]*);")
(setq s (vlax-invoke-method regex "Replace" s ""))
(vlax-release-object regex)
s
)
(defun c:tt (/ SS COR I E ENT MT)
(SETQ SS (SSGET '((0 . "MTEXT"))))
(IF (NOT SS)
    (VL-EXIT-WITH-VALUE 0)
)
(if (or (not cor11) (<= cor11 0) (> cor11 256))
    (setq cor11 1)
)
(SETQ COR NIL)
(WHILE (or (not cor) (<= cor 0) (> cor 256))
(IF
    (NOT (SETQ
         COR (GETINT (STRCAT "\n请输入颜色号<" (RTOS COR11 2 0) ">"))
         )
    )
   (SETQ COR COR11)
   (SETQ COR11 COR)
)
)
(SETQ I 0)
(REPEAT (SSLENGTH SS)
    (SETQ E   (SSNAME SS I)
          ENT (ENTGET E)
          MT(CDR (ASSOC 1 ENT))
          MT(M1 MT)
          i   (1+ I)
    )
    (setq ent (ENTMOD (SUBST (CONS 1 MT) (ASSOC 1 ENT) ENT))
          ent (ENTMOD (SUBST (CONS 62 COR) (ASSOC 62 ENT) ENT))
    )
)
(PRINC)
)

loveu515 发表于 2023-6-12 11:53:29

553-G-01怎么组合到一块的呢?

戏男 发表于 2023-6-12 13:31:09

loveu515 发表于 2023-6-12 11:53
553-G-01怎么组合到一块的呢?

是多行文字,多行文字可以弄两种以上的颜色

d1742647821 发表于 2023-6-12 14:41:26


既然没要求语言,那就发个c#的
powered by ifox


    public static void Test1()
    {
      var sf = OpFilter.Build(e => e.Dxf(0) == "MTEXT");
      PromptSelectionOptions pso = new PromptSelectionOptions() { MessageForAdding = "\n选择要修改颜色的多行文字", RejectObjectsOnLockedLayers = true };
      var r1 = Env.Editor.GetSelection(pso, sf);
      if (r1.Status != PromptStatus.OK)
            return;
      using var tr = new DBTrans();
      var mtList1 = r1.Value.GetEntities<MText>(OpenMode.ForWrite);
      if (!mtList1.Any())
            return;
      var r2 = Env.Editor.GetInteger("\n输入颜色号");
      if (r2.Status != PromptStatus.OK)
            return;
      var colorIndex = Math.Abs(r2.Value) % 257;
      foreach (var mt in mtList1)
      {
            mt.Contents = mt.Text;
            mt.ColorIndex = colorIndex;
      }
    }

戏男 发表于 2023-6-13 15:39:47

d1742647821 发表于 2023-6-12 14:41
既然没要求语言,那就发个c#的
powered by ifox

不会用这个,只会用LISP的{:1_1:}

d1742647821 发表于 2023-6-13 22:21:00

戏男 发表于 2023-6-13 15:39
不会用这个,只会用LISP的

那应该注明需要Lisp

戏男 发表于 2023-6-14 08:10:28

d1742647821 发表于 2023-6-13 22:21
那应该注明需要Lisp

:lol是啊,可以弄一个lisp的吗?谢谢

戏男 发表于 2023-6-16 14:33:12

本帖最后由 戏男 于 2023-6-16 14:53 编辑

liuhe 发表于 2023-6-16 14:10

可以用了,谢谢:handshake

loveu515 发表于 2023-6-16 17:53:47

liuhe 发表于 2023-6-12 10:06


挺好用,改改对单行标注都能用:lol
页: [1] 2 3
查看完整版本: 改变多行文字的颜色为指定的颜色色号