- UID
- 7179
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-7-2
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
大家看ARX库各个类的方法是不是头晕呢?AutoCAD的自动化接口提供了层次很好的访问接口,而且它提供的方法说不定ARX库还没有提供呢,比如将当前图形保存为位图的功能。下面是如何访问AutoCAD的自动化接口的示例代码:
先将AutoCAD的类型库acad.tlb引用进来
#import "acad.tlb" raw_interfaces_only, named_guids
CComPtr < AutoCAD::IAcadApplication > spiAcadApplication;//指向AcadApplication的智能指针
HRESULT hRet(E_FAIL);
CLSID AcAppClsID;
hRet=::CLSIDFromProgID(L"AutoCAD.Application",&AcAppClsID);
if(FAILED(hRet))
return;
CComPtr < IUnknown > spiUnknown=NULL;
hRet=::GetActiveObject(AcAppClsID,NULL,&spiUnknown);
if(FAILED(hRet))
return;
hRet=spiUnknown->QueryInterface(AutoCAD::IID_IAcadApplication,(LPVOID *)&spiAcadApplication);
spiUnknown=NULL;
if(SUCCEEDED(hRet))
{
VARIANT_BOOL bVisibleFlag;
spiAcadApplication->get_Visible(&bVisibleFlag);
if(bVisibleFlag==VARIANT_FALSE)
spiAcadApplication->put_Visible(VARIANT_TRUE);//让其可见
}
else
spiAcadApplication=NULL;
得到spiAcadApplication
CComPtr< AutoCAD::IAcadDocuments > spiAcadDocuments=NULL;
spiAcadApplication->get_Documents(&spiAcadDocuments);
即可得到所有当前打开文档的指针了。
你不用担心其速度,因为AutoCAD的自动化接口是双接口,所以通过智能指针来访问效率是很高的,比VBA快多了。 |
|