Patching the FRX gaps
This page was created to guide API developers through possible incompatibilities between FxARX SDK and other CAD SDKs and how they can overcome such problems offering workarounds or alternative solutions.
1. Read/Update the Profile
ARES Commander doesn’t store the profile in the registry. Instead, it is saved in a XML file in the ARES Commander %APPDATA% folder.
We provide an API in FxARX to read and write profile:
AcApProfileManager::ProfileGetKeyValue //to read a profile setting
AcApProfileManager::ProfileSetKeyValue //to update a profile setting
In both methods, the first parameter is the profile name. In the second parameter, you will specify the profile setting. Please, review the profile.xml to understand the root of each setting. For example to modify/read the profile support paths, you will use:
"/files/support_paths"
or for font paths:
"/files/fonts_paths"
Following code shows how to add programmatically a path to the support paths of the current profile:
2. Native MDI window functions
As the native MFC functions that you can use in FRX projects for operations such as maximizing, minimizing, and restoring the MDI window run into conflict with Qt events, the MDI window will not be updated properly. To avoid such situation, please replace:
CMDIFrameWnd::MDIMaximize
CMDIFrameWnd::MDIMinimize
CMDIFrameWnd::MDIRestore
Move MDI window
Restore MDI window functionality
and use the methods that FxARX API provides:
void MDIMaximize(CWnd* param_1)
void MDIMinimize(CWnd* param_1)
void MDIRestore(CWnd* param_1)
void MDIMoveWindow( CWnd* param_1, const CRect & rect )
For arranging the child windows of the MDI client, use:
void MDITile(int param_1); // 0 = vertical arragement, 1 = horizontal arrangement
void MDICascade();
3. Replace MFC native CStatusBar with CFxUiStatusBar
The use of native MFC CStatusBar objects inside ARES Commander main frame, could run into conflicts with Qt event processing for that kind of controls. Therefore, FxARX API provides the CFxUiStatusBar interface as replacement for the CStatusBar functionality and handles such situations properly.
The following code:
Should be replaced with the following code:
4. ControlBar/PaletteSet docking and floating status
Do not use native MFC functions to change the status of the FRX DockControlBars. Instead of that, to dock or make the control floating use the function that FxARX SDK provides:
4.1 Floating dock control bar
Example: Your DockControlBar inherits from CAcUiDockControlBar
To avoid following case:
It should be written like:
5. Reading AcDbObjects that are already closed
We strongly recommend to not access to closed objects. Please, get object information before they have been closed.
Example, avoid following case:
it should be written like:
6. New AcDbTextStyleTableRecord::setFont method not supported
Currently, we don't support the function:
but it is replaced with the function:
Following code shows how to use the function:
Similar situation can be applied to:
which it is not currently supported, but instead can be used:
7. GsView changes
Currently, we are not supporting AcGsModel Object caching facility to client. Besides that we render the objects on client screen by creating different GsDevice and GsView. For this reason, we recommend to call the update of the GsDevice when the GsView is invalidated:
Another change is when it is use the function AcGsView::dolly:
8. AcDbFaceRecord class inheritance
In FxARX context, AcDbFaceRecord inherits from AcDbEntity, while in other platforms the base class is AcDbVertex. Add support in FRX configuration to avoid such situations. E.g:
A possible workaround:
9. No support for modules created for other CAD applications
Do not try to load modules that are not compiled with ARES supported SDK. They will fail to load in ARES. Please, share with the API team which modules from other CAD applications, the plugin tries to load.
Please avoid the use of
for the libs that are not built under FxARX SDK.
10. Update multiple documents
Normally other CAD platforms use the below code for update other document.
In ARES Commander if you want to update the MDI window of the current document, then you must set the activate parameter to true.