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