Manufacturing Toolkit (MTK) 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 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 |
Manufacturing Toolkit is a product for manufacturing analysis. It uses .step (.stp) and native .mtk formats for models import.
The MTK itself is written in C++. Public API for C#, Java and Python is implemented via language bindings which underneath invoke C++ implementation.
MTK Web is written in Javascript.
The User's Guide provide documentation for C++, C#, Python API. Usage for Java can be derived from those. Java examples can be used as a starting point for API exploration in these languages.
When developing C++ applications make sure you select MTK 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 cadex::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. CadExMTKd.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 Model.hxx
will automatically link with CadExMTK.lib (in release mode) or CadExMTKd.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 MTK 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, CadExMTKNet.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.
All C# classes are defined in the cadex namespace.
C# libraries (e.g. CadExMTKNet.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++ MTK 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.
All Java classes are defined in the cadex
package .
Java libraries (e.g. CadExMTK.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 MTK can be installed from a private pip repository with the following command:
Once you obtain the evaluation the full install command can be found in the welcome email or on the license page.
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. CadExMTK.py and _CadExMTK.pyd) are linked to C++ libraries in release mode.
MTK Web is available in Javascript and is integrated into front-end of web applications.
The MTK Web requires a WebGL-canvas compatible browser: