本帖最后由 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)没有作用。
请大佬指教一下。错误在哪里?




网友答: 我博客搜索save就能找到
https://www.cnblogs.com/JJBox/p/12156778.html

网友答: 谢谢,经多方研究测试,用下面的这句就可以
doc.Database.SaveAs(doc.Name, True, DwgVersion.Current, doc.Database.SecurityParameters)

网友答: 看api帮助文档,缺少参数

网友答:
yonjay 发表于 2025-7-26 12:33
看api帮助文档,缺少参数

doc.Database.Save不需要参数的
  • 上一篇:想学C#,求入门资料推荐
  • 下一篇:没有了