TheCaconym 发表于 2021-2-2 11:29:55

更改布局时出错

我正在创建一个dll,该dll读取图纸集数据以打开图形,在该图形中运行命令,保存并关闭。有一件事我一直拖到最后,那就是控制在具有多个图纸空间布局的绘图中打开哪个布局。有很多在线更改布局的解决方案,但没有一个对我有效。使用“布局管理器”,CurrentLayout = layoutObj。布局名称;"总是导致eSetFailed错误,最复杂的解决方案利用“文档管理器”。MdiActiveDocument . database . getlayoutnames()"来检查布局名称是否符合它们想要设置的布局,但我似乎没有。GetLayoutNames()方法定义?下面是我使用的代码:   公共异步任务 ChLayout(字符串布局)。
{。
document collection acDocMgr = Autodesk,AutoCAD . applicationservices . application . document manager;//文档管理器。
文档doc = acDocMgr,MdiActiveDocument。
//数据库db = doc,数据库;。
数据库db = HostApplicationServices,工作数据库;。

使用(doc,LockDocument())。
{。
LayoutManager lm。
lm = LayoutManager,当前;。
string message = " Layouts:\ n ";。
使用(Transaction acTrans = db,transaction manager . start transaction())。
{。
DBDictionary lays = acTrans,GetObject(db,LayoutDictionaryId,OpenMode。ForRead)作为DBDictionary。

doc,editor . write message(" \ n布局:");。

//逐句通过并列出每个命名的布局和模型。
foreach(层中的DBDictionaryEntry项)。
{。
消息+=项目,按键+" \ n ";。

如果(项,Key == layout)。
{。
布局newLayout = acTrans,GetObject(lm,GetLayoutId(lm。CurrentLayout)、OpenMode,ForRead)作为布局;。
lm,CurrentLayout = newLayout,LayoutName。
欧特克,AutoCAD . application services . application . showalertdialog($ "当前布局为{lm,CurrentLayout}。\n我应该在{layout}上,);。
acTrans,commit();。
返回1;。
}。

}。
欧特克,AutoCAD . application services . application . showalertdialog(message);。
//中止对数据库的更改。
acTrans,abort();。
}。
}。
返回0;。
有什么想法吗?。
**** Hidden Message *****
页: [1]
查看完整版本: 更改布局时出错