乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 30|回复: 0

更改布局时出错

[复制链接]

2

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
10
发表于 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;。
有什么想法吗?。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 02:04 , Processed in 0.336913 second(s), 54 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表