找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 572|回复: 0

[分享] 关于AutoCAD中多文档操作时锁定问题

[复制链接]

已领礼包: 13个

财富等级: 恭喜发财

发表于 2016-9-21 14:25:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
    在 AutoCAD中,所有的文档在被修改之前必须被锁定,但是在查询文档数据时是不需要锁定的,你可以随时查询任何一个打开的文档的数据。有时在你自己查询 一个文档数据时,为了防止别的程序临时修改该文档的数据,也需要把文档锁定。像AutoCAD的各种命令,以及ObjectARX的命令和 AutoLISP函数都已经处理了基本的文档锁定,所以不需要太关心。但是非模态对话框、工具条以及任何需要在活动文档之外工作的命令都需要自己处理文档 锁定。

锁定文档通过文档管理器AcApDocumentManager来完成,在程序中可通过acDocManager()宏来得到该对象的一个实例。
锁定文档的函数:
virtual Acad::ErrorStatus
AcApDocumentManager::lockDocument(
AcApDocument* pDoc,   
AcAp::DocLockMode unnamed = AcAp::kWrite,
const char* pGlobalCmdName = NULL,
const char* pLocalCmdName = NULL,
bool prompt = true) = 0;
pDoc----需要锁定的文档
unnamed---- 需要锁定的状态,所有状态有:AcAp::kRead--以独占的方式锁定读取,不允许其他程序以写的方式锁定,这种方法是用来保护当前读取的数据不被其 他应用程序所修改。AcAp::kWrite--默认锁定方式,多种可执行上下文可同时共享锁定,一个命令可以对文档进行修改,当该命令暂停的时候,其他 命令也可以对其进行修改。AcAp::kXWrite--保证你的可执行上下文对该文档有着独占的修改权利。
pGlobalCmdName----需要锁定该文档进行操作的全局命令名称,通常锁定文档是由一个命令来发起的,一般情况下可以为空
pLocalCmdName----该命令的本地名称
prompt----是否需要在不能锁定该文档时提示,有时当你需要锁定一个文档时,可能该文档已被别的程序锁定了,如果为true,则会为你提示,告诉你不能锁定该文档
解除锁定的函数:
virtual Acad::ErrorStatus
AcApDocumentManager::unlockDocument(
AcApDocument* pDoc) = 0;
pDoc --输入需要解除锁定的文档
一个lockDocument函数必须对应一个unlockDocument函数才行。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-23 19:52 , Processed in 0.344823 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表