关于AutoCAD中的打开文档操作
来源:互联网 发布:淘宝客服双十一总结 编辑:程序博客网 时间:2024/05/08 07:33
在AutoCAD R14的时候,SDI模式下,打开文档很多时候直接用ads_command(RTSTR, "_open", RTSTR, sFileName, RTNONE)这样的方法去打开,基于有些时候我们需要程序控制原文档是否保存(往往是放弃保存),因此往往需要检查当前文档是否已经被修改,是否会提示用户保存,否则,传入的sFileName往往就被当作了系统提问是否保存Yes/No的回答,然后就乱七八糟了。判断当前文档是否处于被修改状态可以通过ads_getvar("DBMOD",&rb)进行查询,如果发现文档被修改,这时就有3个解决方法:要么欺骗系统,让系统认为该文档在保存后没有被修改,要么把当前文件save到一个tmp.dwg中,要么就是在ads_command执行open后,系统提示是否存盘时再传入一个"N"。关于第一个方案,正常情况下,DBMOD是只读的,AutoCAD提供了一个extern long acdbSetDbmod(class AcDbDatabase* pDb, long newVal)让用户强行修改。第2种方案,很直接的,可以把这个tmp.dwg写到一个temp目录下,例如C:/temp,或者软件的安装目录,不过碰到文件比较大,这个操作就需要耗点时间,而且毕竟不是一个体面的操作模式。第3种方案,为了系统是通过文字提问而非弹出对话框,需要修改FILEDIA的值为0,然后就可以调用ads_command了。不过在实际操作过程中,发现第3种方法在某些情况下不管用,暂时也没有分析清楚,以后有机会再分析吧。
在AutoCAD 2000/2002下,支持了MDI,因此常用操作有了一些改变。当然,并不是说ads_command不能用了,只是我更喜欢使用acDocManager->appContextOpenDocument(filename)这样的模式,调用此函数前,需要确认当前处于Application Context(利用acDocManager->isApplicationContext()进行判断),如果当前不是处于Application Context,可以通过调用acDocManager->executeInApplicationContext执行。在AutoCAD 2000/2002设定为“单文档兼容模式”时,也可以调用acedSyncFileOpen来打开文档,不过这种方式在MDI时无法工作。
总体说来,目前对AutoCAD中打开文档的操作的了解还不够深入,需要进行进一步整理,待有时间整理了操作,封装好了再写一次这个话题吧。
- 关于AutoCAD中的打开文档操作
- 关于AutoCAD的dwg文件操作学习
- AutoCAD文档03——常见问题03.打开一个DWG文件提示缺少SHX
- 关于VB中的commondialog(打开文件,存储文件,打开打印机操作控件)
- AutoCad基本操作
- autoCAD块操作
- 《AutoCAD 基本操作》
- AutoCAD.net: 实现AutoCAD Undo操作
- AutoCAD 的打开对话框不见了
- WPF打开操作Office文档的解决办法
- AutoCAD中的ScreenShot工具
- [Lisp] AutoCAD中的分形树
- 关于phonegap 打开文档的插件使用
- 求助,关于PPC打开WORD文档的
- 关于C#操作XML文档
- 关于DirectShow操作视频文档
- 使安卓本地sdk中的文档能够打开
- 关于水晶报表的 "不支持的操作。无法在 C++ 堆栈中打开由 JRC 引擎处理的文档。"
- Debian下安装Teamspeak服务器
- ASP.net中写HTML标记符的函数
- 天机-破解达芬奇密码
- 微处理器管脚说明
- 硬盘分区技巧 1.99G变成2G整数
- 关于AutoCAD中的打开文档操作
- VC/MFC 编程经验总结
- 求高人推荐好书
- ASP.NET 2.0 中的异步页
- 微处理器的总线操作
- 把程序注册为服务的几种方法
- 成长
- 天主教与峋山隐修会
- 关于《BREW技术开发与应用》的问题!