Contact and Support
For questions regarding ordering, payment and delivery, please refer to the Customer Care Center.
To review your orders or to manage your annual subscriptions, please login to your Customer account.
If you are experiencing problems with the licensing of Tinman 3D, please refer to Licencing and Pricing.
If this does not resolve the issue, please contact us at firstname.lastname@example.org.
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 sections explain how to fix the most common build problems.
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.
Please keep in mind that licence keys have metadata bindings, so the same licence key may not work for other users, products, etc.
A licence key might not work because of the following reasons:
- The licence key is invalid
Please make sure you specify the entire licence key (100 non-whitespace ASCII characters).
- The licence metadata does not match
If you need additional metadata bindings (e.g. more than one workstation, typo in metadata values), you may request extra licence keys. Please refer to Licencing and Pricing for details.
- The licence key has expired
You will receive new licence keys for each billing period of your subscriptions automatically. If your User, Site or Academic subscription has ended, you can continue to use your perpetual licence keys. If the renewal subscription of your Product, Company or Full licence has ended, you can keep using the previous Tinman 3D SDK release.
- The licence key source has been disabled
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):
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 2015 or older) 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 the problem, you can disable the hosting process in your IDE. For Visual Studio 2015 or older, this can be done in the project properties:
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 exception handling, 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
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 section explains the most common ones:
Unknown type: '00000000-0000-0000-0000-000000000000'
No such type: 'Type.Name'
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.
Call PleaseIncludeInBinaryThanks on TinmanWorkshopModule. This initializes the top-level module of the application.
Call TinmanModule.Initialize. Since each module instance references its dependencies and the top-level module has already been initialized, this will initialize all other modules, too.
|The dependency graph of the modules can be queried via TinmanModule.Dependencies.|
If you are using the Geodata Processor on Windows 7 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.
Please send your bug reports to email@example.com. If possible, include the following information in the report:
- Problem Description
Please describe the context of the problem and the problem itself. If you make the description as concise as possible and as precise as necessary, this will very much help to fix the problem.
- System Information
The exception message and stacktrace, if is available.
- Error Dump
The error dump file that has been generated by TinmanErrorDump.
This happens rarely, but if it does, providing the error dump file will help greatly to fix the problem.
- Executable code fragment
If you provide us with code that triggers the bug, we will usually be able to fix it quickly. To defeat the bug, we must understand the bug, so to speak.