乐筑天下

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

请问关于eLockViolation

[复制链接]

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-11-12 12:09:00 | 显示全部楼层 |阅读模式
当pent->upgradeOpen();时返回 eLockViolation时应该怎么办? 对eLockViolation错误应该如何对待?
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2004-11-12 12:25:00 | 显示全部楼层
我觉得这个还是要根据你的上下文环境而定。你是在什么情况下出现上面的错误的?
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-11-12 12:40:00 | 显示全部楼层
以前明明是这样用可以的,
AcDbEntity *pEntity;
acdbOpenAcDbEntity(pEntity, objId, AcDb::kForRead);
...
AcDbLine *pLine = (AcDbLine*)pEnt;
pLine->upgradeOpen();
pLine->erase();
pLine->close();
这句pLine->upgradeOpen();的返回值以前没有考虑过eLockViolation,
现在我对处理后的图形(从其它dwg clone到当前文档)做同样步骤的操作,
pLine->upgradeOpen();返回值就为eLockViolation了.
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-11-12 12:49:00 | 显示全部楼层
我是在DockBar上通过Button调用命令的, 我查了一下,可能需要AcAxDocLock 来Lock文档.
回复

使用道具 举报

124

主题

837

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1333
发表于 2004-11-12 14:47:00 | 显示全部楼层
知道了,
如果是DockControBar或modeless窗体, 在调用acdbOpenObject, acdbOpenAcDbEntity等函数时, 要在处理前
acDocManager->lockDocument(curDoc(),AcAp::kWrite,NULL,NULL,true);
调用结束后
acDocManager->unlockDocument(curDoc());
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2005-4-24 13:07:00 | 显示全部楼层
太棒了,困扰了我两天的问题终于解决了。多谢楼上的回复。我是在无模式对话框中用了wblock函数,结果也是遇到了eLockViolation的错误,我都快绝望了,终于在这找到了解决办法。
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
6
发表于 2005-4-29 03:21:00 | 显示全部楼层
对于锁定文档,ARX中是这样解释的,当你要修改一个不是当前文档的数据库时,或者你要阻止别的执行文本来修改该数据库时,你需要锁定文档。如果是以只读方式打开某个对象是不用锁定文档的,但是以写方式打开对象时,最好锁定文档。
回复

使用道具 举报

11

主题

43

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
87
发表于 2010-8-11 16:27:00 | 显示全部楼层
當你要修改文檔內容或資料庫時需要以寫入的方式打開,需要先進行圖檔的鎖定
Dim documentLock As DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument()
...
documentLock.Dispose()
若只是讀取圖檔的圖檔資訊,就不需要鎖定圖檔。
回复

使用道具 举报

1

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2010-8-16 22:30:00 | 显示全部楼层
关于文档的Lock,可以参阅SDK中关于Documet Context和Application Context. 在Application Context下,例如非模态对话框,属性面板(AutCAD封装的非模态对话框), COM环境,如果想对Document进行写操作就需要首先Lock这个文档,在结束的时候解锁这个文档。AutCAD在执行一个命令的时候,在命令开始执行前会自动Lock文档,这就是为什么我们在命令中不用关心Lock 文档的原因。
AcAxDocLock 最好用在COM环境中,因为这个类就是专门为COM环境编写的,在其他的环境下可以使用acDocManager->lockDocument().
回复

使用道具 举报

0

主题

23

帖子

2

银币

初来乍到

Rank: 1

铜币
23
发表于 2013-5-31 14:27:00 | 显示全部楼层
原来是这样子啊,学习啦
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-30 16:09 , Processed in 1.443301 second(s), 72 queries .

© 2020-2025 乐筑天下

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