Hide menu
Loading...
Searching...
No Matches
Supported Configurations

CAD Exchanger SDK is a set of cross-platform libraries and currently supports configurations listed below. Over time older versions of compilers, architectures or dependent third-party libraries go from primary to secondary support level, and then get deprecated. Deprecated configurations can be dropped at any time without any additional announcements.

Although we try to verify functioning on all supported configurations (primary, secondary and even deprecated) some particular configurations may reveal errors we will not able to fix or work-around with reasonable efforts.

The general principle is that primary configurations include two most recent versions (compiler, toolchain, third-party library, etc). Older versions are classified as secondary configuration.

  Windows Linux MacOS
OS version Windows 7 (1), Windows 8-11 or respective Windows Server versions RHEL8.x,
Ubuntu 18.04,
Debian 10,
Other distributions compatible with kernel 4.19.0-24-amd64.
macOS 12.6.7 (Monterey) or above macOS 13.4.1 (Ventura) or above
Architecture Intel x86_64 Intel x86_64 Intel x86_64 arm64
C++ compilers and run-times Visual Studio 2022 (vc14.3),
Visual Studio 2019 (vc14.2),
Visual Studio 2017 (vc14.1),
Visual Studio 2015 (vc14)
GCC 8.3.0 Clang 14.0 Clang 14.2
C#.NET Framework 3.5, .NET 6.0.NET 6.0 N/A N/A
Java1.8 or later1.8 or later 1.8 or later1.8 or later
Python3.7-3.113.7-3.11 3.7-3.113.7-3.11
Note
(1) Deprecated configuration;
(2) Dynamic libraries (*.dll) of the SDK package built for Visual Studio 2019 can be safely linked to by clients' apps built with later Visual Studio versions.

CAD Exchanger is highly portable and also supports Android, and can be ported to iOS and other platforms. Please contact us if you are interested in using these ports.

Supported Programming Languages

The SDK itself is written in C++. Public API for C#, Java and Python is implemented via language bindings which underneath invoke C++ implementation.

Web Toolkit is written in Javascript.

The User's Guide provide documentation for C++ and C# API. Usage for Python and Java can be derived from those. Java and Python examples can be used as a starting point for API exploration in these languages.

C++ Support

When developing C++ applications make sure you select CAD Exchanger SDK libraries corresponding to the C++ compiler version which you use.

All C++ classes are defined in the cadex namespace.

Each C++ API class is defined in a header file with the same name and located in the cadex subdirectory. For instance, the header file for a ModelData_Model class should be included as follows:

#include <cadex/ModelData_Model.hxx>
Provides CAD Exchanger data model.
Definition: ModelData_Model.hxx:43

On Windows C++ libraries are provided for release and debug modes. The debug libraries have suffix 'd' in their names (e.g. CadExIGESd.lib) and are located in the ./bind and ./libd subdirectories. On other operating systems only a single set of C++ libraries is provided, which can be used both in release and debug builds.

On Windows linking with C++ import libraries (.lib) is done automatically when including a respective header file. For instance, including JT_Reader.hxx will automatically link with CadExJT.lib (in release mode) or CadExJTd.lib (in debug mode). This allows to avoid explicit linking (e.g. via Visual Studio project settings).

On other platforms you may need to explicitly link to the SDK libraries.

C# Support

C# libraries are located in the ./csharp subfolder.

C# API is mostly aligned with C++ API. Exceptions to this rule include operators (which can't be overloaded) and setters (their names begin with Set instead of matching getters' names). C# assemblies are located in .dll's having a 'Net' suffix, for instance, CadExIGESNet.dll or CadExCoreNet.dll.

On Windows, C# libraries are built using .NET Framework 3.5 what improves interoperability across Windows and .NET versions. User's applications can be built to target .NET Framework 3.5 or newer versions. Visualization works on .NET Framework 4.7. On Windows and Linux, builds are available on .NET Standard 2.0 (excluding visualization).

All C# classes are defined in the cadex namespace.

C# libraries (e.g. CadExCoreNet.dll) are linked to C++ libraries in release mode.

Java Support

Java libraries are located in the ./java subfolder.

Java API is mostly aligned with C++ API. Exceptions are the same as for the C# API.

When developing Java applications, in addition to Java libraries you will have to use native C++ libraries. If you already use other C++ libraries in your application you are recommended to use C++ SDK libraries consistent with your C++ compiler (i.e. vc14, vc12, etc). If you do not use any other C++ libraries then you are recommended to use C++ libraries corresponding to the latest supported C++ compiler version (see above).

All Java classes are defined in the cadex package .

Java libraries (e.g. CadExCoreJava.jar) have no explicit linking to the C++ libraries. Dependent native C++ libraries have to be specified inside Java code to be loaded at runtime. Loading a library is done as follows:

System.loadLibrary("CadExCore");

Python Support

Python version of CAD Exchanger SDK can be installed from a private pip repository with the following command:

python -m pip install cadexchanger -i <repo link goes here>

Python API is mostly aligned with C++ API. Differences between Python and C++ API's:

  • Nested classes are not supported, so they are linearized and have the parent class name appended to their names, for example 'ModelData_Model::ElementVisitor -> ModelData_Model_ElementVisitor'
  • Iterators and List classes support the Python iterator interface.
  • Some functions that return values via function parameters return them normally in Python (using tuples if multiple return values are required).
  • Classes that support iterators now have GetIterator methods.

All Python classes are defined in the namespaces of their modules.

Python modules (e.g. CadExCore.py and _CadExCore.pyd) are linked to C++ libraries in release mode.

Javascript Support

Web Toolkit is available in Javascript and is integrated into front-end of web applications.

The Web Toolkit requires a WebGL-canvas compatible browser:

  • Chrome 58+
  • Microsoft Edge 20+
  • Safari 11+
  • Firefox 52+
  • Opera 45+