...
The CFx examples are in the following folder: "\ARES Kudo Server\SDK_x64\Samples\CFx\".
Create the solution by using cmake.Windows: Compiling Samples**
Follow the steps described in “How to Create a Sample C++ plugin and build , load the plugin”.
New Project
Add a new C++ Empty project using Visual Studio 2022 as SampleCommand in ‘\ARES Kudo Server\SDK_x64\Samples\CFx’.
...
Header Section
Create the following header files.
SampleCommand.h
Creates the SampleCommand class with global and local command name.
Code Block |
---|
#include "FxCommand.h" #include "FxCommandContext.h" #include "FxUserIO.h" class SampleCommand { public: /** Description: Sets non-localized version of the command name. */ virtual const OdString globalName() const; /** Description: Sets localized version of the command name. */ virtual const OdString localName() const; ~SampleCommand(void); protected: SampleCommand(void); }; |
SampleCommandModule.h
Creates a new module for the SampleCommand class with initApp, uninitApp, and object that represents the command.
Code Block |
---|
#include <RxModule.h> #include <StaticRxObject.h> #include "SampleCommand.h" /** Description: Creates a new module for Sample command. */ class CHelloCommandModule : public OdRxModule { public: ~CHelloCommandModule() {} protected: CHelloCommandModule() {} /** Description: Adds new command to the current module. */ virtual void initApp(); /** Description: Removes command from the current module. */ virtual void uninitApp(); private: /** Description: Object from type sampleCommand is created. It represents the new command. */ OdStaticRxObject<SampleCommand> m_SampleCommand; }; |
stdafx.h
Includes all the standard system include files/project specific include files that are frequently used
Code Block |
---|
#include <windows.h> #include "OdaCommon.h" |
Source File Section
Create the following CPP files.
SampleCommand.cpp
CPP file for creating commands that you can call from ARES Kudo.
Code Block |
---|
#include "stdafx.h" #include "SampleCommand.h" #include "FxSystemServices.h" SampleCommand::SampleCommand(void) { GetFxSystemServices()->WriteLine(L"HI, This is a Sample command."); } SampleCommand::~SampleCommand(void) { } const OdString SampleCommand::globalName() const { // global command name to be called return("MYSAMPLE"); } const OdString SampleCommand::localName() const { // local command name to be called return("MYSAMPLE"); } |
SampleCommandModule.cpp
Defines entry points for the dynamic library (TX = DLL).
Code Block |
---|
#include "stdafx.h" #include "SampleCommandModule.h" #include <RxDynamicModule.h> #include "FxSystemServices.h" #ifdef _MANAGED #pragma managed(push, off) #endif ODRX_DEFINE_DYNAMIC_MODULE(CHelloCommandModule); void CHelloCommandModule::initApp() { GetFxSystemServices()->WriteLine(L"SampleCommandModule initApp"); } void CHelloCommandModule::uninitApp() { GetFxSystemServices()->WriteLine(L"SampleCommandModule uninitApp"); } |
stdafx.cpp
Source file that includes just the standard include files.
Code Block |
---|
#include "stdafx.h" |
Project Settings
Do the following settings to make the C++ sample plugin to work.
...
Navigate to the C:\Program Files\Graebert GmbH\ARES Kudo Server\Kudo\Bin\editor.dir\ and find the files named TD_Db_*.dll:
In our example, the file name is TD_Db_4.03_17.dll. Add the _4.03_17 suffix to your output .dll name to load it normally.
Building
Build the SampleCommand project, and load it in Ares Kudo Load modules/plugins (.tx)**
In our example, we have SampleCommand_4.03_17.tx as result.