For questions regarding ordering, payment and delivery, please refer to the Customer Care Center (provided by MyCommerce).
To review your orders, please use the MyCommerce ID section in the Customer Care Center. You can cancel any of your annual subscriptions there at any time.
If you are experiencing problems with the licensing of Tinman 3D, please refer to Licensing and Pricing.
If this does not resolve the issue, please contact us at support@tinman3d.com.
If you experience technical problems using the Tinman 3D SDK, please do not hesitate to contact us at support@tinman3d.com.
We will help you to solve the problem as quickly as possible.
You can find our bug-tracking system here: tinman3d.myjetbrains.com/youtrack
You can find answers to some of the most frequently asked questions below.
Please read the Terms and Conditions (or at least scroll down to the end of the page). You will find the password there.
Some components of the Tinman 3D SDK are provided as source code. The following list explains how to fix the most common build problems:
[C++] Cannot convert ... to CodeX::Object*
error C2664: 'void CodeX::Object::ReleaseRef(CodeX::Object *)' : cannot convert argument 1 from '<some type> *' to 'CodeX::Object *'
Tinman 3D minimizes the use of #include
directives in header files, in order to reduce compilation time and to avoid cyclic include dependencies.
Because of minimal use of #includes
, the type <some type>
is a forward declaration only and thus incomplete.
If you get this in one of your source files, add an #include
directive for <some type>
there. This should fix the problem.
[C++] Unresolved external symbol
error LNK2001: unresolved external symbol "<some class member name>" (<some ugly mangled name>)
Tinman 3D uses separate files (*.h
/ *.hpp
) for template types.
Please make sure you include all *.hpp
implementations in your source file.
Please keep in mind that licence keys have metadata bindings, so the same licence key may not work for other users, products, etc.
Subscription licence keys (i.e. User, Site and Academic) only work during the subscription period.
Perpetual licence keys (i.e. Product, Company and Full) only work for Tinman 3D SDK versions that have been released before or on the date of purchase, plus one year.
A licence key might not work because of the following reasons:
false
, effectively disabling all User, Site or Academic licence keys.If you are specifying your licence key via the environment variable, make sure the name is spelled correctly and that there are no extra characters before or after the licence key (whitespaces are ok):
TINMAN_3D_LICENCEKEY= CIk!6Dh6Ui;lSE+Z{{jx7$Y~8,#TSt~o%CK#(e,F#O9.d;fGc+bU35%HVl;[.+s#@h.bo1~{riL.4|UreHfeuac}5ZV~DBocxU}@
Changes to environment variables are not always forwarded to running processes, so it might be necessary to restart your IDE (for example Visual Studio) to make your licence key take effect.
When your IDE (for example Visual Studio) is using a hosting process to debug your application, your Product and Company licence keys will not work (all other licence keys will work fine, though).
To work around this, you can disable the hosting process in your IDE. For Visual Studio, this can be done in the project properties:
|
Project Properties - Visual Studio C# |
The recommended solution for this problem is to have a User, Site or Academic licence key ready in the environment variable.
Tinman 3D uses exceptions. Make sure you catch and report those in your application. Uncaught exceptions will terminate the application, usually leaving no or little error trace.
For more information about Tinman exceptions, please refer to:
The Demo Application shows how to catch exceptions properly.
Tinman 3D makes use of method precondition checks and state assertions in order to validate the execution context. This helps to avoid out-of-range errors and memory corruption:
These sanity checks are only active in DEBUG
mode.
When running in RELEASE
mode, invalid parameters or calls can easily corrupt memory and crash the application. Please make sure to run in DEBUG
mode at least once; then you will get proper exceptions, and you can identify the error source.
The licence protection module of Tinman 3D uses encrypted data which must be unlocked with a valid licence key.
Encrypted data is automatically unlocked when the application needs to access it for the first time. This can lead to unpredictable error situations when no valid licence key is available.
As best practice, you should specify your licence key(s) before using any other API of the Tinman 3D SDK:
While developing software using the Tinman 3D SDK, you might - sooner or later - run into uncaught TinmanExceptions. The following list explains the most common ones:
Tinman 3D uses lazy initialization, for example for serializable types and config types.
Some entity is referenced from outside of the application (e.g. serialized in a file or created from source code in a config script), but has not been initialized yet.
To fix this, use the IPleaseIncludeInBinaryThanks interface to force initialization up-front: call PleaseIncludeInBinaryThanks on all TinmanModules your are using.
For example, the Workshop Application performs initialization in this order:
The dependency graph of the modules can be queried via Dependencies.
If you are using the Geodata Processor on Windows to run a bulk import of geodata, the filesystem cache may grow until application code gets paged to disk. This kills runtime performance and the system freezes.
Please note that this is not problem of Tinman 3D.
This problem can be avoided by importing geodata incrementally, instead of running a single import process for hours or days.
Also there are some tools available on the web that can help fixing this, for example SetSystemFileCacheSize.
We use YouTrack as our online bug-tracking system. Please have a look there to see if your problem has already been reported.
Please send your bug reports to support@tinman3d.com; if possible, include the following information in the report:
Problem Description
Please tell us as much as possible about the context that led to the problem.
System Information
If necessary, please provide us with information about the computer system you are using. You can use SystemInfo for this.
Error Dump / Stacktrace
The exception message and/or stacktrace. If you get a TinmanException you can use the ToString method for this.
Executable code fragment that reproduces the bug
An important person once said: "To fight the bug, we must understand the bug."
If you provide us with code that triggers the bug, we will be able to fix it quickly.