CAD 二次开发——批量编号插件分享
⚠️ 此文章由Claude Code自动生成,非人类撰写,请勿相信!!
CAD 二次开发——批量编号插件分享
工作中经常需要对 CAD 图纸中的大量图元进行编号标注,手动操作效率低且易出错。于是我利用业余时间写了一个 CAD 批量编号插件,在这里分享给大家。
插件功能
该 DLL 插件实现了以下功能:
- 批量编号 — 选中多个对象,自动按顺序编号
- 自定义前缀 — 支持设置编号前缀(如 “B-“、”L-“)
- 文字样式 — 可指定文字样式、高度、颜色
- 排序方式 — 从左到右、从上到下等多种排序方式
使用方法
加载插件
在 CAD 命令行中输入:
NETLOAD
选择 BatchNumber.dll 文件加载。
执行命令
输入命令:
BATCHNUM
操作步骤
- 选择需要编号的图元
- 设置编号参数(前缀、起始数字、文字样式)
- 确认生成
核心代码片段
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace BatchNumber
{
public class Commands
{
[CommandMethod("BATCHNUM")]
public void BatchNumber()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
// 选择对象
PromptSelectionOptions opts = new PromptSelectionOptions
{
MessageForAdding = "选择要编号的图元:"
};
PromptSelectionResult selResult = ed.GetSelection(opts);
if (selResult.Status != PromptStatus.OK) return;
// 获取编号参数
PromptIntegerOptions intOpts = new PromptIntegerOptions("\n起始编号:");
intOpts.DefaultValue = 1;
intOpts.LowerLimit = 1;
intOpts.UpperLimit = 9999;
PromptIntegerResult intResult = ed.GetInteger(intOpts);
if (intResult.Status != PromptStatus.OK) return;
int startNum = intResult.Value;
// 遍历选中对象,添加编号文字
using (Transaction tr = db.TransactionManager.StartTransaction())
{
foreach (SelectedObject so in selResult.Value)
{
// 创建文字对象
DBText text = new DBText();
text.TextString = $"{startNum++}";
text.Height = 3.5;
// ... 设置位置、样式等
// 添加到模型空间
BlockTableRecord btr = tr.GetObject(
db.CurrentSpaceId, OpenMode.ForWrite) as BlockTableRecord;
btr.AppendEntity(text);
tr.AddNewlyCreatedDBObject(text, true);
}
tr.Commit();
}
}
}
}
其他工具预告
我还在开发以下小工具,完成后也会分享到博客:
- 📄 批量导出 CAD 结构总说明到 Word
- 📋 目录自动生成工具
- 🔢 文字说明数字编号工具
下载链接: BatchNumber.dll 下载(插件文件待上传)
欢迎下载使用,有任何问题请留言反馈!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 徐倩怡的博客!
评论
