当前位置: 首页 > news >正文

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

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请指定插入点:");
     }
 }

 

 

相关文章:

  • 配置文件 yaml
  • Unity2D:从零开始制作一款跑酷游戏!
  • 【第2月 day16】Matplotlib 散点图与柱状图
  • 第四课:模型的概念及应用
  • 【trino】trino配置证书https tls/ssl访问
  • Git -> git pull --rebase 遇到error : Filename too long的临时解决方案
  • LTSPICE仿真电路:(二十五)低侧电流检测电路仿真
  • 在WPF中使用VisualCollection创建复杂Adorner详解
  • AI Agent成为行业竞争新焦点:技术革新与商业重构的双重浪潮
  • 数据库事务与锁的知识点
  • Axure RP9.0教程: 查询条件隐藏与显示(综合了动态面板状态切换及展开收缩效果实现)
  • 管家婆财贸ERP BB100.采购单返写估价入库单价
  • On Superresolution Effects in Maximum Likelihood Adaptive Antenna Arrays论文阅读
  • PyTorch深度学习框架 的基础知识
  • Java高频面试题2:集合框架
  • Vue3 Pinia Store 新建store示例、使用store示例
  • 配置文件 ini
  • 一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目
  • 人脸识别和定位别的签到系统
  • python发送qq邮件