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 |
Java | 1.8 or later | 1.8 or later | 1.8 or later | 1.8 or later |
Python | 3.7-3.11 | 3.7-3.11 | 3.7-3.11 | 3.7-3.11 |
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.
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.
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:
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# 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 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:
Python version of CAD Exchanger SDK can be installed from a private pip repository with the following command:
Python API is mostly aligned with C++ API. Differences between Python and C++ API's:
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.
Web Toolkit is available in Javascript and is integrated into front-end of web applications.
The Web Toolkit requires a WebGL-canvas compatible browser: