VB.NET调用ARX程序创建的COM Server
首先,我们看如何用VS 2005(英文)来创建一个ARX COM Server并暴露一个接口供后面的程序调用。
至此,一个ARX COM Server和一个接口已经创建好了。现在给我们的接口增加一个函数getPosition。
即comServerFromArx.idl文件中的: interface ImyCustomCom : IDispatch{ [id(1),helpstring("method getPosition")] HRESULT getPosition([out] FLOAT* X,[out] FLOAT* Y,[out] FLOAT* Z); }; myCustomCom.h文件中的: public: STDMETHOD(getPosition)(FLOAT* X,FLOAT* Y,FLOAT* Z); 以及myCustomCom.cpp文件中的getPosition函数体。在该函数中给参数一些数据。这只是做个示范,没有实际意义。在现实工程中你可以调用ARX接口来实现更复杂的逻辑。
编译工程。应该一切都OK。如果你没有设置好头文件和库文件的地址,可以通过如下Tools->Optins->Projects and Solutions->VC++ Directories来简单的进行设置:
先选择Include files然后ObjectARX的inc(头文件)文件夹的路径,再依葫芦画瓢,选择Library files来增加ObjectARX的lib(库文件)文件夹的路径。编译工程,成功通过为止。
virtual void RegisterServerComponents () { //----- Self-register COM server upon loading. if ( FAILED(::DllRegisterServer ()) ) acutPrintf (_RXST("Failed to register COM server./n")) ; } 下一步,我们用VB.NET来制作一个Com Client。
上面的代码很简单,我想需要解释的一点,可能是,我们不能通过new myCustomCom来创建这个Com接口,因为我们的ARX程序是一个AutoCAD的插件,也就是说是一个进程内(in-process)的Com Server,必须通过AcadApplication的GetInterfaceObject来获取。
就这么简单! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |