- 积分
- 898
- 明经币
- 个
- 注册时间
- 2017-9-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 yangmz1972 于 2025-7-25 12:49 编辑
学习AutoCAD插件开发没有多久,技术不太行。请教一下为什么下面的代码会出错:
Dim doc As ApplicationServices.Document = ApplicationServices.Application.DocumentManager.Open(cPathFile, False)
Dim db As DatabaseServices.Database = doc.Database
Dim ed As Autodesk.AutoCAD.EditorInput.Editor = doc.Editor
Using acLckDoc As DocumentLock = doc.LockDocument()
Using trans As Transaction = db.TransactionManager.StartTransaction()
Dim nod As DBDictionary = CType(trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead), DBDictionary)
'添加词典
If Not nod.Contains(XDICT_NAME) Then
nod.UpgradeOpen()
Dim customDict As New DBDictionary()
nod.SetAt(XDICT_NAME, customDict)
trans.AddNewlyCreatedDBObject(customDict, True)
' 添加初始数据
Dim xrec As New Xrecord()
xrec.Data = New ResultBuffer(New TypedValue(DxfCode.Text, SPECIAL_STRING))
customDict.SetAt(USERDATA_KEY, xrec)
trans.AddNewlyCreatedDBObject(xrec, True)
End If
trans.Commit()
End Using
doc.Database.Save()------------------------------------------这里出错
End Using
我讯飞星火了一下,他坚持说doc.Database没有save方法,腾讯元宝也说不出什么,只说的文件系统可能有问题,deepseek也没能解决问题。
后来我直接打开文档,再保存,测试如下:
Dim doc As ApplicationServices.Document = ApplicationServices.Application.DocumentManager.Open(cPathFile, False)
doc.Database.Save()------------------------------------------这里还是出错
后来我不用doc.database.save了,改用doc.SendStringToExecute("_.QSAVE", True, False, False),但DBMOD值前后始终为1,意味着doc.SendStringToExecute("_.QSAVE", True, False, False)没有作用。
请大佬指教一下。错误在哪里?
|
|