dwjnet 发表于 2002-12-11 00:03:00

leeyeafu 发表于 2002-12-11 14:41:00

获取ACAD实例对象的方法

ActiveX开发,关键是获取AutoCAD的实例对象,在获取其实例对象之后,余下来的工作就是应用程序本身应该实现的功能。
使用Visual C++来开发ActiveX程序,与使用VB应该说是大同小异的。以下给你一个用QureyInterface()方法获取ACAD 2000的实例对象的函数,你可以将它添加到你的控件事件代码中去。
首先要保证你的工程引用以下的库文件:
acad15.lib,rxapi.lib,acedapi.lib,acrx15.lib,acutil15.lib并忽略msvcrtd.lib
以下是代码:
#include <rxregsvc.h>
#include <aced.h>

void GetAcadInstance(void)
{
AutoCAD::IAcadApplication *pCad;//首先声明一个ACAD应用程序实例指针
HRESULT hr=NOERROR;//C++结果句柄
CLSID slcid;         //C++类ID
LPUNKNOWN pUnk=NULL;
LPDISPATCH pAcadDisplay=NULL;
hr=::CLSIDFromProgID("AutoCAD.Application",&clsid);
/*若已启动ACAD窗口实例,将ACAD类ID送到clsid指向的地址,若未启动ACAD,则系统将启动ACAD,并将ACAD类ID送到clsid指向的地址*/
if (SUCEEDED(hr))   
{
   if(::GetActiveObject(clsid,NULL,&pUnk)==S_OK)
   {
      if(pUnk->QueryInterface(IID_IDispatch,
            (LPVOID*)& pAcadDisplay)!=S_OK)
         return;
      pUnk->release();
   }
}
if(SUCEEDED(pAcadDisplay->QueryInterface(AutoCAD::
         IID_IAcadApplication,(void**)& pCad)))
   pCad->put_Visible(true);//显示ACAD窗口
else
{
    acutPrinf("\nQueryInterface出错!");
    return;
}
}

rabdance 发表于 2003-1-12 19:51:00

求教!

你好!我是CAD的初学者,因为工作的需要要进行CAD的开发,现在遇到了问题,想请教一下:我想在以有的图框中填加图形,怎样定义坐标点?比如说图框中画了一个平面直角坐标系,新画的图要根据这个坐标来画,比如画入过(3,4)和(7,8)点的直线,该怎么画?我用的是VB调用AUTOCAD2002.谢谢!!!
页: [1]
查看完整版本: 我一直都是用vb作autocad的ActiveX开发,还不会用vc作ActiveX开发