王咣生 发表于 2004-9-30 15:02:00

用VC++如何创建AutoCAD实例?

用VC++如何创建AutoCAD实例?

zfbj 发表于 2004-9-30 16:49:00

用OLE Automation,好像也不麻烦,晚上我写一个程序明天传上来。

王咣生 发表于 2004-9-30 17:04:00

回复

谢谢zfbj.

王咣生 发表于 2004-9-30 19:48:00

回复

可以了,查了些资料,并不太理解,因为知识面太窄!






Setup.exe启动AutoCAD2005英文版


(自己做安装程序,试着玩: 创建copyfolder, shortcut, profile, ...)


刚完成一点儿.





参考[转载]: 用'添加类'->'MFC'->'类型库中的MFC类'导入AutoCAD的tlb类型库.


我还不确定"AutoCAD.Application"该怎么写,我只装了AutoCAD2005,同时有多个版本时,是不是应该写成"AutoCAD.Application.16.1"呢?


IAcadApplication AcadApp;<BR><BR>void getAcad()<BR>{<BR>// This function will find AutoCAD in the registry, and launch it (if it is<BR>not launched already).<BR>HRESULT hr=NOERROR;<BR>CLSID clsid;<BR>LPUNKNOWN pUnk=NULL;<BR>LPDISPATCH pDisp=NULL;<BR><BR>CoInitialize(NULL);<BR>hr=::CLSIDFromProgID(L"AutoCAD.Application", &amp;clsid);<BR>if(SUCCEEDED(hr))<BR>{<BR>if(::GetActiveObject(clsid,NULL,&amp;pUnk)==S_OK)<BR>{<BR>// Already opened Acad Session...attach ourselves<BR>VERIFY(pUnk-&gt;QueryInterface(IID_IDispatch,(LPVOID*) &amp;pDisp)==S_OK);<BR>AcadApp.AttachDispatch(pDisp,FALSE);<BR>pUnk-&gt;Release();<BR>}<BR>else<BR>// We must invoke our instance of AutoCAD...<BR>VERIFY (AcadApp.CreateDispatch(clsid)==TRUE);<BR>AcadApp.SetVisible(TRUE);<BR>}<BR>else<BR>AfxMessageBox("AutoCAD is Not Registered!");<BR>}<BR>

王咣生 发表于 2004-9-30 20:23:00

回复

zfbj版主,希望看到你的代码.

zfbj 发表于 2004-9-30 20:55:00

刚写完,呵呵。


在你的基础上有了一点进步,能够创建一条直线了,真的是一小步。。。

zfbj 发表于 2004-9-30 20:57:00

希望我们共同做一个“安装包”的模板,以后大家自己做软件都可以使用了。


做“安装包”不是老板的专利!

王咣生 发表于 2004-9-30 21:09:00

回复

zfbj版主,看到你的贴子,很高兴,我原来只是自己想这么做,有些人肯定不能接受我这种做法,放着好好的,方便的InstallShield, Wise的安装程序不用,浪费时间.


做这个安装包要视需要而定,我先按我的想法做一个,以后集成更多的功能.


第一次有人响应我的做法(当然也没对别人说过).

zfbj 发表于 2004-9-30 21:25:00

我实际上不会用Install Shield来做,因为在Install 和Wize中同样要使用COM来操作AutoCAD完成这些初始化操作,两者的脚本语言熟悉起来需要时间啊。

王咣生 发表于 2004-9-30 23:51:00

回复

本帖最后由 作者 于 2004-10-1 8:40:41 编辑

是啊,慢慢积累吧.


国庆节快乐!
页: [1] 2 3
查看完整版本: 用VC++如何创建AutoCAD实例?