Limitations related to OpenModel and OpenAlias.
Byte ordering is reversed on the Windows platform when compared to IRIX. As a result, swapping macros are needed to orient blind data correctly. Individual types such as float, double, long and so on, need to be swapped.
For more information, refer to the online OpenModel documentation.
There are several cases where Alias or OpenModel need to remove or re-create blind data memory storage during normal operations. For example, if a delete all operation is done, all blind data is removed. Also, if blind data is saved in the wire file, when the file is read in, the blind data storage is re-created.
To see two data packets with the same user type, you must remove the first one, and the second one will then be visible. Try to avoid using multiple packets with the same IDs. The order in which these packets are returned by the blindData() methods is undefined.
After Alias builds a closed surface, the Information window will report that the surface is open. For efficiency, Alias does not keep track of the closed state of a surface.
Use the API methods AlSurface::vForm() or uForm() to test the points of a surface to determine if it is closed or not.
You must retrieve the knot vector for any geometry and use the minimum and maximum knot values as the limits of parameterization for the geometry.
Copying shaders from one object to another will reverse the shader list. (Write out the SDL to illustrate this behavior.) This behavior will lead to problems when layered shaders are used, because the order of the shaders will be incorrect.
Cache the shader list and add the shaders to the new object starting at the tail of the list. (Please keep in mind that if we fix this bug in future releases, this solution will cause the list to be in the wrong order again.)
Detect these two conditions by traversing the set lists in the universe before calling ::addToSet().
In the directory $ALIAS_LOCATION/ODS/, there are a number of pre-compiled plug-ins and source code examples. These plug-ins and source code examples are provided to you on an “AS-IS” basis.
You are free to make use of these plug-ins and source code examples; however Autodesk does not provide any support in connection with them.
Autodesk makes no warranties, express, implied, or arising by custom or trade usage, and to the extent permitted by applicable law, specifically disclaims any implied warranties of title, noninfringement or of fitness for a particular purpose to the extent permitted by applicable law, (i) Autodesk’s liability in contract, tort or otherwise arising out of or in connection with the plug-ins or source code shall not exceed the purchase price paid by the customer for the plug-ins or source code examples, and (ii) in no event shall Autodesk be liable for any punitive damages or lost profits or other special, indirect, incidental, or consequential damages, including any damages resulting from loss of business arising out of or in connection with the performance of the plug-ins or source code examples, even if Autodesk has been advised of the possibility of such damages. The customer shall indemnify Autodesk and hold it harmless from and against any loss, claim or damage to any person arising out of the customer’s use of the plug-ins or source code examples.
Restore the options after the plug-in is loaded.
The plugin_exit() function will still be called when Alias exits. Any saving of state required by a plug-in can be done in the plugin_exit() routine.
Unload the plug-in manually through the Plug-in Manager window to call the static destructors.
Do not allow the plug-in to be unloaded if it is active. You can set a global variable in the plug-in to track its active state. Set this variable to TRUE in the init() function and FALSE in the cleanup() function.
Within plugin_exit(), if the plug-in is active, return a 1 so that the unloading of the plug-in will fail. This test should be done before the deleteObject() methods are called in plugin_exit().
Values less than -100 or greater than 100 can still be entered in the associated text field, but the slider will only give values between -100 and 100.
Use the undocumented argument slider_range to change the min/max slider range values from their defaults. For example, to define an integer slider with a range of -200 to 1000, use the following Scheme statement:
(list ‘slider_range -200 1000) (list ‘range -200 1000)
If both pointers, o1 and o2, are equal and NULL, FALSE is returned.
Test o1 and o2 before calling this function.
Use AlPrintf(kPrompt,...) to output the prompt string (without formatting) in the “init” callback of the continuous function. To exclude formatting, end the prompt string before the first % symbol.