CAD插件实现:自动递增编号(前缀、后缀、位数等)——CADc#实现

发布于:2025-04-04 ⋅ 阅读:(29) ⋅ 点赞:(0)

cad中大量输入一定格式的递增编号时,可用插件实现,效果如下:

①本插件可指定数字位数、起始号码、加前缀、后缀、文字颜色等(字体样式和文字所在图层为cad当前图层和当前字体样式)。

②插件采用Jig方式,即插入文字过程中动态显示文字的大小占位情况,免去插入文字后调整位置等繁琐步骤。

③插件自动记录用户上次输入前缀、后缀等信息,下次使用自动显示上次信息,免去用户重复输入。

 使用方式如下(针对AutoCAD2012-2024版本):

附部分代码如下:

 public void 自动递增编号简单版()
 {
     Document doc = Application.DocumentManager.MdiActiveDocument;
     Database db = doc.Database;
     Editor ed = doc.Editor;

     *********************************

     *****    省去部分代码   **********
     *******              ************
     *********************************

     while (true)
     {
         // 获取插入点
         PromptPointOptions ppo = new PromptPointOptions("\n请指定文字插入位置(ESC退出): ");
         PromptPointResult ppr = ed.GetPoint(ppo);

         if (ppr.Status != PromptStatus.OK)
         {
             // 用户按ESC退出
             ed.WriteMessage("\n已退出文字插入。");
             break;
         }

         // 转换坐标系(UCS到WCS)
         Point3d insertionPoint = ppr.Value.TransformBy(ed.CurrentUserCoordinateSystem);
         // 开始事务处理
         using (Transaction tr = db.TransactionManager.StartTransaction())
         {
             try
             {
                 // 获取块表
                 BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;

                 // 获取模型空间
                 BlockTableRecord btr = tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                 // 根据最小位数格式化编号
                 string formattedNumber = counter.ToString().PadLeft(minDigits, '0');
                 // 创建文字对象
                 *********************************

                 *****    省去部分代码   **********
                 *******              ************
                 *********************************
                 // 添加文字到模型空间
                 btr.AppendEntity(text);
                 tr.AddNewlyCreatedDBObject(text, true);
                 tr.Commit();
             }
             catch (System.Exception ex)
             {
                 ed.WriteMessage($"\n错误:{ex.Message}");
                 tr.Abort();
             }
         }
         counter++; // 递增计数器
         ed.WriteMessage($"\n请指定插入点:");
     }
 }

 

 


网站公告

今日签到

点亮在社区的每一天
去签到