本插件可实现批量导出文件夹内大量dwg文件的指定块名的属性信息到excel,效果如下:
插件界面:
dll插件如下:
使用方法:
1、获取此dll插件。
2、cad命令行输入netload ,加载此dll(要求AutoCAD,2018-2024版本).
3、cad命令行输入K2E,根据弹出界面内容提示,输入块名和并选择dwg文件,生成excel即可。
附部分代码:
public static void Demo2()
{
Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;
string defaultValue = "新块";
string promptMsg = $"\n请输入要提取属性的块参照名称 [{defaultValue}]";
// 创建提示选项
PromptStringOptions pso = new PromptStringOptions(promptMsg);
pso.AllowSpaces = true; // 允许输入包含空格
PromptResult pr = ed.GetString(pso);
if (pr.Status != PromptStatus.OK) return;
// 获取用户输入并处理默认值
string userInput = pr.StringResult.Trim();
string targetBlockName = string.IsNullOrEmpty(userInput)? defaultValue: userInput;
// 步骤2:获取目标块定义的属性标签
List<string> targetAttrTags = GetBlockAttributeTags(db, targetBlockName);
if (targetAttrTags.Count == 0)
{
ed.WriteMessage("\n目标块定义中没有属性或块不存在!");
return;
}
//步骤3:创建Excel并写入数据
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
Workbook workbook = excelApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
Worksheet worksheet = (Worksheet)workbook.Worksheets[1];
excelApp.Visible = true; // 设置Excel可见
// 写入表头(序号+属性标签)
List<string> headers = new List<string> { "序号" };
headers.AddRange(targetAttrTags);
for (int col = 1; col <= headers.Count; col++)
{
worksheet.Cells[1, col] = headers[col - 1];
}
// 步骤4:遍历图形中的块参照并提取属性值
******
}
插件获取方式:↓↓↓