d1742647821 发表于 2023-3-3 09:11:34

替换系统单行文字编辑器 附源码

由于cad自带的文本编辑,双击之后有时会卡顿很久,于是写了一个替换默认文本编辑的代码
效果如下


attach://125427.flv


文本框使用的是系统自带的InputBox,主要是分享思路,如果想要更好的效果,可以用wpf写一个窗口


代码如下
public static class DBTextEdit
{
   
    public static void AddEvent()
    {
      //将此部分代码放在Initialize中可在加载插件后自动添加事件
      Acap.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;
      Acap.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;
    }
   
    public static void RemoveEvent()
    {
      Acap.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;
    }

    internal static void DocumentManager_DocumentLockModeChanged(object sender, DocumentLockModeChangedEventArgs e)
    {
      if(e.GlobalCommandName.ToUpper()!="TEXTEDIT")
            return;
      var r1 = Env.Editor.SelectImplied();
      if(r1.Status!=PromptStatus.OK)
            return;
      if(r1.Value.Count!=1)
            return;
      var id = r1.Value.ObjectId;
      if(!id.IsOk()||!id.ObjectClass.IsDerivedFrom(RXClass.GetClass(typeof(DBText))))
            return;
      e.Veto();
      using var tr = new DBTrans();
      var text = tr.GetObject<DBText>(id)!;
      var ltr = tr.GetObject<LayerTableRecord>(text.LayerId)!;
      if(ltr.IsLocked)
            return;
      Acap.DocumentManager.DocumentLockModeChanged -= DocumentManager_DocumentLockModeChanged;
      try
      {
            var str = Microsoft.VisualBasic.Interaction.InputBox("请输入文字", "文本编辑", text.TextString);
            if(str is null || str.Trim()==""||str==text.TextString)
                return;
            using (text.ForWrite())
            {
                text.TextString = str;
            }
      }
      finally
      {
            Acap.DocumentManager.DocumentLockModeChanged += DocumentManager_DocumentLockModeChanged;
      }
    }
}
里面使用了一些IFOX的类,可以自行根据语义替换



对应B站视频教程【CAD二次开发教程-11-重定义单行文字编辑器】


d1742647821 发表于 2023-3-6 14:52:52

liuhe 发表于 2023-3-3 11:28
我一直以为是电脑配置不行,原来是大家都是这个问题。楼主V5

什么配置都会卡,辣鸡cad

liuhe 发表于 2023-3-3 11:28:08

我一直以为是电脑配置不行,原来是大家都是这个问题。楼主V5

lxl217114 发表于 2023-3-3 10:46:20

牛蛙牛蛙,CAD2023雀食容易双击文字就爆炸的。

utopio 发表于 2023-3-3 09:22:57

支持一下。

闻人南131 发表于 2023-3-3 09:26:11

牛哇牛哇

lxl217114 发表于 2023-3-3 09:32:08

Aries 发表于 2023-3-3 10:40:35

支持一下。顶起来:lol

荣sir 发表于 2023-3-3 19:14:45

牛哇牛哇,白佬666

tomonkey239 发表于 2023-3-4 11:50:53

膜拜大佬,谢谢分享:victory:

qq25469005 发表于 2023-3-4 13:02:13

:handshake 真不错哈哈哈哈
页: [1] 2
查看完整版本: 替换系统单行文字编辑器 附源码