乐筑天下

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

即使尝试使用 AutoCAD 也会崩溃

[复制链接]

59

主题

230

帖子

10

银币

后起之秀

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

铜币
461
发表于 2016-1-9 06:26:36 | 显示全部楼层 |阅读模式
大家好,我正面临AutoCAD的崩溃,尽管使用了try方法,但这并没有帮助传递罪恶。有人能澄清一下吗?我知道罪魁祸首是OpenMode.ForRead,必须OpenMode.ForWrite.提前谢谢。public静态空隙change eFormatedMtext Value()。
{。
文档文档=Application.DocumentManager.MdiActiveDocument;。
数据库db=doc.Database;。
编辑doc.Editor。

使用(事务tr=db.TransactionManager.StartTransaction())。
{。
尝试。
{。
PromptEntityOptions entOP=new PromptEntityOptions("\n选择格式化的Mtext以剥离:");。
entOP.AllowNone=false;。
entOP.AllowObjectOnLockedLayer=false;。
entOP.SetRejectMessage("\n必须选择Mtext");。
entOP.AddAllowedClass(typeof(MText), false);。

PromptEntityResult=ed.GetEntity(entOP);。
如果(ent.Status==PromptStatus.OK)。
{。
MTextmt=(MTexts)tr.GetObject(ent.ObjectId,OpenMode.ForRead);。
如果(mt!=null)。
{。
mt.Contentsmt.Text。
}。
}。
tr.Commit();。
}。
捕获(System.Exceptionexp)。
{。
tr.Abort();。
ed.WriteMessage(exp.Message);。
}。
}。
}。

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

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

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

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

铜币
238
发表于 2016-1-9 09:21:43 | 显示全部楼层
你的帖子是相当混乱的:虽然你已经知道你需要使用OpenMode.ForWrite来修改打开的实体,但你仍然使用OpenMode.ForRead修改MText实体。你试过OpenMode.ForWrite?还是有一些原因让你认为你不能使用OpenMode.ForWrite?
顺便说一句,在你的情况下,测试打开的实体是否为空是没有必要的,因为
1.PromptStatus.OK意味着选择了一个有效的实体;
2.直接转换...=(MText)tr.GetObject(...只返回MText,如果转换成功,或者例外。如果转换失败(在你的情况下,它不会失败,因为选择设置为只允许选择MText!);它永远不会返回NULL。
回复

使用道具 举报

59

主题

230

帖子

10

银币

后起之秀

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

铜币
461
发表于 2016-1-9 11:22:37 | 显示全部楼层
谢谢,
我第一次写那个程序的时候忘记用OpenMode打开对象了。ForWrite并使用了OpenMode.forRead但令我惊讶的是,try块并没有将该错误传递给异常消息,导致AutoCAD崩溃,这让我想到,是什么导致try块没有获得该错误?我在这个论坛上提出这个问题是为了得到更多关于这个奇怪事情的解释。
感谢您对我检查对象Mtext是否不等于null的描述,真是太棒了。
编辑:更正了一个打字错误。
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

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

铜币
238
发表于 2016-1-9 11:33:08 | 显示全部楼层
尝试...抓住。。。中的 AutoCAD API 进程不会捕获 AutoCAD 引发的某些异常。从我的经验来看,这是相当不可预测的。我的猜测是,由于.NET API主要是将包装器包装为原始C++API,因此,根据.NET API的实现方式,这种事情有时会发生。它可以被认为是AutoCAD .NET API的错误。但它可能是有意的,也可能是有意为之,来自那些实现.NET API的人,谁知道呢。我们有时不得不过这种事情。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 22:07 , Processed in 0.270374 second(s), 60 queries .

© 2020-2025 乐筑天下

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