关于AutoCAD中的打开文档操作

原创 2006年05月24日 16:11:00

    在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中打开文档的操作的了解还不够深入,需要进行进一步整理,待有时间整理了操作,封装好了再写一次这个话题吧。

在java中实现 AutoCAD api

因为在项目中需要从autoCAD 的dwg文件中提取标题框中的属性插入到数据库中实现图纸的批量入库.一开始在网上搜索这方面的资料,其中有一些控件可以脱离autoCAD系统提取的,但都是要收费的.比如o...
  • bwsabc
  • bwsabc
  • 2005年03月30日 13:55
  • 3748

AutoCAD中的Spline曲线算法分析(一)

AutoCAD中的Spline曲线算法分析(一)       AutoCAD是一款应用广泛的工程绘图软件,其中样条Spline曲线是使用频繁的功能之一。在计算机中,通过点取屏幕上面的点,并让一会曲线...
  • drinktonton
  • drinktonton
  • 2016年04月01日 22:58
  • 1926

关于使用VBA调用AutoCAD的学习

如果有很多个坐标点,想简单的看一下彼此之间的相对位置关系,一个很简单的办法,就是展到AutoCAD中。在AutoCAD中逐点输入坐标数据肯定是不显示的,最简答的方法是在Excel中调用AutoCAD:...
  • swjtugsz
  • swjtugsz
  • 2015年08月23日 10:45
  • 1245

支持多个版本的AutoCAD——C#中的条件编译——Through the Interface

namespace BlockImport { public class BlockImportClass { [Conditional("AC2007"),CommandMethod...
  • u011511587
  • u011511587
  • 2013年10月30日 21:40
  • 1476

在AutoCAD中使用Python——Through the Interface

原文:Using IronPython with AutoCAD 我已经使用过Python一段时间了,现在随着IronPython2.0的发布(现在为2.7.4版,CC注)似乎已经到了开始尝试应用到A...
  • u011511587
  • u011511587
  • 2013年07月26日 11:36
  • 7583

AutoCAD.NET二次开发注意事项与开发技巧

1、如果要在Winform中打开DWG图形文件,这个Form必须用Application.ShowModelessDialog方式显示,不然会报错(执行环境无效)。   2、在非模态窗口中修改实...
  • YOLIN26
  • YOLIN26
  • 2016年09月21日 12:24
  • 2360

如何用C#在AutoCAD2007或更老的版本中获取线的长度

最近有人提到他用.NET在2008版上开发了一款软件,其中使用了获取直线长度的功能(就是利用Line.Length属性),现在想在2007版本下也使用该软件,但是2007版本中.NET编程接口不支持L...
  • barbarahan
  • barbarahan
  • 2009年11月02日 17:23
  • 2828

利用C#进行AutoCAD的二次开发(三)

                        利用C#进行AutoCAD的二次开发(三)                                    C#才鸟   这一讲的主要内容是介绍A...
  • zhf7878
  • zhf7878
  • 2004年01月05日 11:53
  • 2107

关于phonegap 打开文档的插件使用

个人最近才接触phonegap,算是渣渣一个,有
  • fg_411
  • fg_411
  • 2014年11月01日 18:45
  • 388

利用C#进行AutoCAD的二次开发

利用C#进行AutoCAD的二次开发(一) 呵呵,把自己前在网上以表的文章放到这里。 利用C#进行AutoCAD的二次开发(一)            众所周知,对AutoCAD进行二次开发用到的主要...
  • yuanqingfei
  • yuanqingfei
  • 2004年07月05日 18:39
  • 3690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于AutoCAD中的打开文档操作
举报原因:
原因补充:

(最多只允许输入30个字)