pBe 发表于 2017-3-27 12:09:35

同步(刷新)图纸集

我在Autocad 2016在线帮助中找到了这个更新提供的AcadDatabase对象的工作表集中的工作表视图组件,语法同步(pXDb As IAcadDatabase)As Object我正在尝试以编程方式“刷新”工作表视图Document acDoc=Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;。
数据库acadDatabase=acDoc.Database;。

AcSmSheetSetMgr mgr=new AcSmSheetSetMgr();。

AcSmDatabase db=new AcSmDatabase();。
db.LockDb(db);。
AcSmSheetSet ss=db.GetSheetSet();。

......。
......。

db.UnlockDb(db,true);。
ss.Sync(acadDatabase);。
mgr.Close(db);。
上面似乎不起作用错误显示CS1503参数1:无法从“Autodesk.AutoCAD.DatabaseServices.Database”转换为“AXDBLib.AcadDatabase”问题:如何AXDBLib.AcadDatabase或将变量acadDatabase转换为正确的形式?提前谢谢pBe。
**** Hidden Message *****

Jeff_M 发表于 2017-3-27 12:58:22

Object acadDatabase=acDoc.Database.AcadDatabase;

pBe 发表于 2017-3-27 13:27:41

我会试一试 杰夫谢谢编辑: 。

使用 AXDBLib; //。

公共 void SheetViewWrite()。
{。
Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument;。

// object acadDatabase = acDoc.Database.AcadDatabase;。

AcadDatabase acadDatabase = new AcadDatabase(); //。

字符串 ssFilePath = userInput(“\n输入工作表集名称: ”);。

Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;。

AcSmSheetSetMgr mgr = new AcSmSheetSetMgr();。
AcSmDatabase db = new AcSmDatabase();。

尝试。
{。
db = mgr.OpenDatabase(ssFilePath, true);。

}。
catch (System.Exception ex)。
{。
编辑,WriteMessage(例如ToString());。
返回;。
}。

AcSmSheetSet ss = db.GetSheetSet();。

ss.Sync(acadDatabase);/// 。
经理,关闭(数据库);。

}似乎无法识别物体... 想知道我错过了什么吗?也许是参考文件?编辑2:让我们看看上面的工作是否有效.....更新工作表集不“刷新”,现在给出错误HRESULT E_FAIL已从对COM组件的调用返回。at ACSMCOMPONENTS20Lib.IAcSmSheetSet.Sync(AcadDatabase pXDb)。

pBe 发表于 2017-3-28 04:55:58


语法
同步(pXDb AsIAcadDatabase)作为对象
IAcadDatabase
我不明白,I表示
接口

实例

Jeff_M 发表于 2017-3-28 09:30:01

你试过这个吗
AcadDatabase:acddatabase=acDoc.Database.AcadDatabase;

pBe 发表于 2017-3-28 10:02:29

感谢您的耐心Jeff_M..
我在acDoc.Database下得到了一条曲线。阿卡达酶
无法将类型“object”隐式转换为“AXDBLib.AcadDatabase”。存在显式转换(是否缺少转换?

Jeff_M 发表于 2017-3-28 11:06:04

抱歉,应该这样做:
AcadDatabase acadDatabase=(AcadDatabase)acDoc.Database.AcadDatabase;

pBe 发表于 2017-3-29 05:40:07

我会试一试。随时通知您
谢谢Jeff_M
它不会产生任何错误,但不会刷新工作表视图。我会继续挖掘...

pBe 发表于 2017-4-5 12:06:40

这方面还没有任何进展,
我使用了Lee Ambrosius的CP318-4中的代码。159467-CP 318-4-使用-VB-NET查看图纸集对象

使用图纸集数据填充AutoCAD中的树状图。NET - Part 2作者Kean Walmsley
http://through-the-interface . typepad . com/through _ the _ interface/2010/05/populating-a-tree-View-inside-AutoCAD-with-Sheet-set-data-using-NET-Part-2 . html
修改代码以将值写入自定义特性和图纸视图。经过有限的测试后,一切都很好,唯一的问题是,在代码将值设置为“AcSmSheetView”后,用户需要在图纸集管理器下的“模型视图”选项卡上选择“刷新”按钮,如果没有,Autocad有时会崩溃,但只有当您尝试“重命名和重新编号”图纸视图项目时,单击“刷新”时一切都好。
这种情况只发生在普通cad中,在Civil 3D中从未出现过。
这就是我需要“刷新”功能的原因。
页: [1]
查看完整版本: 同步(刷新)图纸集