乐筑天下

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

图案填充向后移动和事务中止会导致AutoCAD崩溃

[复制链接]

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-1-12 11:57:12 | 显示全部楼层 |阅读模式
我正在研究将块爆炸到一定深度的东西。完成后,我将通过与BlockTableRecord关联的DrawOrderTable对象将模型空间中的所有阴影移到后面。在某个绘图中,它总是会导致错误“错误处理程序重新输入。立即退出。”其中消息框的标题为“AutoCAD错误中止”。这让我假设错误在AutoCAD的核心中,因为我无法用尝试/捕获块捕获错误。如果我擦除所有孵化实体,那么错误就会消失。如果我在交易中使用Commit,则没有问题。但是如果我使用Abort,我必须让所有项目恢复到原始状态,那么每次都会发生错误。
我无法发布代码或绘图,但想知道我是否想错了?或者我是否应该将此传递给AutoDesk?或者有什么方法可以让绘图在我开始我的命令之前恢复到原始状态?
提前感谢。
编辑:我应该指出,该程序在所有其他测试的绘图中运行良好,只有这一个与孵化模式有问题。即使我先审核文件。

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

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

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-5-10 22:31:17 | 显示全部楼层
我有另一幅画展现了这一特点。我已经把问题缩小到3个图案填充和一些圆圈。发布的代码每次在此图形中都会使Autocad崩溃。如果我把电话从“点”改过来。将MoveToBottom()移动到点。MoveToTop()'然后一切都正常工作
将true或false传递给aRemoveAssoc并不重要
提前感谢,
蒂姆
[CommandMethod(“BackCrash”)]
公共void HatchBackCrash(){
Document doc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
数据库db=doc.Database
可块bt
使用(Transaction trans=db.TransactionManager.StartTransaction()){
bt=trans。GetObject(db.BlockTableId,OpenMode.ForRead,false,true)作为BlockTable
moveHatchBack(trans,bt[“*MODEL_SPACE]”,true)
trans.Abort()
}
}
公共静态void moveHatchBack(事务aTrans、ObjectId aBtrId、bool aRemoveAssoc){
dbobjectobj
DrawOrderTable点
BlockTableRecord btr
舱口帽
ObjectdCollection.hatIds=newObjectdCollection()
btr=aTrans。GetObject(aBtrId,OpenMode.ForRead,false,false)作为BlockTableRecord
foreach(btr中的ObjectId oid){
如果(oid.IsErased
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-5-11 08:00:45 | 显示全部楼层
oid.IsNull| | oid.Iseffectivey擦除124;|!oid.IS有效)继续
obj=aTrans。GetObject(oid,OpenMode.ForRead,false,false)作为图案填充
如果(obj==null)继续
hatIds。添加(oid)
hat=obj作为图案填充
如果(aRemoveAssoc&帽子关联){
hat.UpgradeOpen()
帽子。关联=假
hat.open()
}
}
如果(hatIds.Count>0){
dot=aTrans。GetObject(btr.DrawOrderTableId,OpenMode.ForWrite,false,false)作为DrawOrder表
点。MoveToBottom(hatIds)
//点。MoveToTop(hatIds)
dot.open()
}
hatIds.Dispose()
}
回复

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-5-11 08:59:06 | 显示全部楼层
Tim,如果你让交易通过 using 子句并超出范围而不是中止,会发生什么情况?
回复

使用道具 举报

28

主题

249

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
361
发表于 2015-5-11 10:23:03 | 显示全部楼层
它仍然会崩溃AutoCAD。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-5 02:43 , Processed in 0.346493 second(s), 62 queries .

© 2020-2025 乐筑天下

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