ObjectARX, AutoCAD. Среда программирования библиотеки C++




Использование COM, чтобы обратиться к AutoCAD ActiveX Автоматизация


Этот метод требует большего количества кодирования, но не полагается НА MFC.

Вызывать ActiveX Автоматизацию связывает с помощью интерфейса без MFC

1 типовая программа будет использовать COM ActiveX интерфейсы Автоматизации, чтобы добавить новое всплывающее меню к строке меню AutoCAD. Visual C++ Начала и создает новый Win32 проект Динамически компонуемой библиотеки по имени AsdkComDocSamp.

2 Добавляют соответствующие значения к проектным{*строительным*} назначениям, чтобы делать проектную{*строительную*} компоновку как программа ObjectARX. Эта программа должна связаться со следующими библиотеками:

Acad.lib

Rxapi.lib

Acrx15.lib

Acutil15.lib

Acedapi.lib

3 Добавляют новый файл определения к проекту по имени AsdkComDocSamp.def и добавляют следующие линии:

DESCRIPTION ’Autodesk AsdkCom ARX test application’

LIBRARY AsdkComDocSamp

EXPORTS acrxEntryPoint

_SetacrxPtp

acrxGetApiVersion

4 Добавляют новый исходный файл к проекту по имени AsdkComDocSamp.cpp и добавляют следующий код, чтобы делать программу ObjectARX совместимой:

#include <rxregsvc.h>

#include <aced.h>

#include <adslib.h>

// Used to add/remove the menu with the same command.

//

static bool bIsMenuLoaded = false;

void

addMenuThroughCom()

{

}

static void initApp()

{

acedRegCmds->addCommand(

"ASDK_PLAIN_COM",

"AsdkComMenu",

"ComMenu",

ACRX_CMD_MODAL,

addMenuThroughCom);

}

static void unloadApp()

{

acedRegCmds->removeGroup("ASDK_PLAIN_COM");

}

extern "C" AcRx::AppRetCode acrxEntryPoint

(AcRx::AppMsgCode msg, void* appId)

{

switch( msg )

{

case AcRx::kInitAppMsg:

acrxDynamicLinker->unlockApplication(appId);

acrxDynamicLinker->registerAppMDIAware(appId);

initApp();

break;

case AcRx::kUnloadAppMsg:

unloadApp();

break;

default:

break;

}

return AcRx::kRetOK;

}

5 Импортируют AutoCAD, напечатают библиотеку, чтобы приобрести определения для объектов COM. Добавьте следующую линию к вершине AsdkComDocSamp.cpp файла.




Содержание  Назад  Вперед