请教:系统中有多个版本的AutoCAD,如何打开指定的某个版本的CAD
<p>如题:我电脑中装了2004,2006,2008,连接cad的时候使用的是后期绑定,于是每次画图都是调用的默认的那个CAD,就是说,我把2004设置为默认的,画图的时候它就连接调用的是2004.</p><p>现在就是我能不能在程序中写点什么东西,让画图的时候能够调用指定版本的CAD,而不用管默认的CAD是什么版本。如,我在程序中指定用2006打开它就连接2006打开画图,如果我指定2008打开,它就连接2008打开画图。知道的朋友指点下,搜索了好多资料没有结果。</p> <p>我想可以先打开指定的CAD</p><p>然后控制它打开图纸吧</p> <p>你可以先在注册表里读取到CAD2004的安装目录,然后运行再连接到CAD.</p><p>CAD的信息在注册表里是永远不会变动的,每个CAD版本都是一个独立的子项</p><p>你把acadApp = GetObject(, "AutoCAD.Application") 改为</p><p>acadApp = GetObject(CAD的运行文件的绝对路径,) 这样就可以啦</p> 本帖最后由 作者 于 2008-12-27 23:52:01 编辑 <br /><br /> <p>首先谢谢楼上两位朋友的指点<br/><br/>小弟根据maomao_zhen的提示试了下。但是我有个问题<br/><br/>acadApp = GetObject(CAD的运行文件的绝对路径)(注意:这里括号中没有,),这样必须是通过打开一个CAD文件来启动CAD,那我有没有什么方法不打开某个CAD文本来启动CAD呢?小弟试了下面几个都有错误<br/><br/> 'Set acadapp = GetObject("C:\Program Files\AutoCAD 2002\acad.exe") '不能启动CAD进程,马上提醒:自动化操作时文件名或类名未找到<br/> 'Set acadapp = GetObject("C:\Program Files\AutoCAD 2002\acad.exe",) '不能运行,直接提示:缺少表达式<br/> 'Set acadapp = GetObject("C:\Program Files\AutoCAD 2002\acad.exe", "") 'ActiveX 部件不能创建对象<br/> 'Set acadapp = GetObject("C:\Program Files\AutoCAD 2002\acad.exe", "AutoCAD.Application") '仅能启动CAD进程,马上发生自动化操作时文件名或类名未找到<br/> Set acadapp = GetObject("C:\Program Files\AutoCAD 2002\tukuang2008.dwg")'这个通过tukuang2008.dwg启动CAD成功。<br/><br/>--------------------------------------<br/><br/>小弟目前使用的方法比较麻烦:<br/><br/>1.先用ShellExecute启动CAD,但是由于ShellExecute是分时的,就是说执行了ShellExecute,马上执行ShellExecute后面的代码,不管CAD有没有启动完成;这样就带来一个问题,我后面的代码都是在得到CAD对象的情况下才能执行,就是说到了这个时候就会发生错误。<br/><br/>2.于是这里我先用GetObject来进行错误判断,但是如果电脑性能比较差的话,会占用好一段时间(如果一直GetObject就死机状,如果我用延时的方法这个时间又不好控制,别人的电脑性能有好有差)于是我就用 GetWindowText遍历窗口标题,发现有"AutoCAD 200"等字样才GetObject,但是这个时候还是不能GetObject到,囧,于是换成用 GetWindowText遍历窗口标题,发现有- 等字样才GetObject,这个时候离CAD启动完成更近了一步,但是还是会经常GetObject不到CAD对象,逼不得已在这个时段以后使用timer定时GetObject。-----------复杂吧,繁琐吧。<br/><br/>-----------------------------<br/><br/>我现在有两个问题请教各位朋友:<br/><br/>1.如果可以,如何用maomao_zhen的方法只启动CAD而不需要打开某个CAD文件。<br/><br/>2.如何判断CAD已经启动并且初始化完成。<br/><br/>----------<br/></p><p>请知道的朋友指点下。谢谢了先</p> 刚在群中问了,一位热心的朋友(freshman)帮我解决了:打开的时候CreateObject("AutoCAD.Application.16")后面那个16,加上相应的版本号就可以了,囧,我舍近求远了。<br/>
页:
[1]