AutoCAD的DWG文件格式支持存储自定义数据。但是,在使用.NET API编写插件程序时,我们会发现在关闭AutoCAD会话后,自定义数据不会被保存到DWG文件中。这种情况的解决方法是添加一个AcadDoc.DocumentToBeSaved事件处理程序,以确保自定义数据被保存到DWG文件中。在该事件处理程序中,我们可以使用扩展数据字典来存储自定义数据。
以下是示例代码:
public void start()
{
// 绑定DocumentToBeSaved事件
AcadApplication acadApp = (AcadApplication)Application.AcadApplication;
acadApp.DocumentToBeSaved += new _DAcadApplicationEvents_DocumentToBeSavedEventHandler(DocumentToBeSavedHandler);
}
private void DocumentToBeSavedHandler(AcadDocument doc, ref bool Cancel)
{
// 获取当前AutoCAD文档的扩展数据字典
AcadDictionary xDataDic = (AcadDictionary)doc.NamedObjectsDictionary["ACAD_XRECDB"];
// 添加自定义数据到扩展数据字典
AcadXRecord xData = new AcadXRecord();
xData.Data = new object[] { "Some custom data" };
xDataDic.AddXRecord("MyCustomData", xData);
}