![]()
Release Notes Limitations > General limitations
OpenModel and OpenAlias limitations
Limitations related to OpenModel and OpenAlias.
UNIX-style pathnames are typically used in this section. For Windows paths, use backslashes (\) instead of slashes (/), starting at the drive and directory where the AliasStudio product is installed.
General information
- The AliasStudio APIs are documented in the online documentation. Select Help > AliasStudio Help to open a Web browser to the main documentation page, or go directly to Alias Programmers' Interfaces (API).
- Due to changes in the Studio API, you should recompile any plug-ins that were compiled for a previous release of AliasStudio.
General limitations
![]()
Some general limitations include:
- AliasStudio and OpenModel have different U forms for a torus. As a result, a torus tessellated in AliasStudio and in OpenModel will not have the same vertex count.
- AliasStudio Pick Component type functionality is not available in the API.
- The AliasStudio Plug-in preferences for setting the Verbose Messages flag and plug-in path may not work correctly on the Windows platform.
- The
AlCurve::createPoint()method can produce geometry that does not draw correctly.
![]()
Some general limitations from previous releases include:
AlCluster::addMember()andAlClusterMember::removeMember()may returnsSuccesseven though the operation failed.- The API does not have a way of directly untrimming a trimmed surface.
- It is possible to remove an
AlMessagecallback handler while in the body of the handler. This will result in a core dump when the handler returns.AlImagePlane::setFrameType()can core dump under certain situations.- The cluster effect is backwards in the API. The most recent cluster added has the first effect.
AlChannel::expressionString()can core dump if the expression string is greater than 1024 characters.- The
AlPlayFrameclass calls into the animation sub-system of AliasStudio within its constructor and destructor methods. If a plug-in declares anAlPlayFrameclass as a global variable, then the constructor is run when the plug-in is loaded as a part of static constructor initialization. This can cause a core dump if the plug-in is auto-loaded, since the constructor tries to call into code that is not yet initialized at startup time.- A DAG node could be invisible in another layer even though its visibility has not been set with the method
AlDagNode::isDisplayModeSet(kDisplayModeInvisible)- You cannot change the coordinate system of AliasStudio through the API.
- It is not currently possible to copy curves-on-surface through the API.
- There is no means for determining what lights are linked to a surface.
- OpenModel/OpenAlias cannot access light textures.
- The
AlPickListclass does not support edit points.- You cannot set the source texture of a solid projection texture, nor can you read it at this time.
- The OpenModel libraries do not work properly within a multi-processing application. Core dumps will occur.
- The polygon history example plug-in
polyHistExample.pluginwill core dump if instances are used.
![]()
For the old blind data interface, special programming is required for API code that will run on both Windows and UNIX platforms and share blind data.
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 etc. need to be swapped.
For more information, refer to the online OpenModel documentation.
This problem cannot be currently fixed within the API, because the API has no knowledge of the structures that API applications are using to store blind data.
![]()
The
AlPixFileclass does not support GIF files.
![]()
For the old blind data interface, using the C++
newanddeletefunctions to create and destroy memory for blind data can lead to program errors. AliasStudio and OpenModel usemalloc()andfree()for its blind data memory creation and destruction routines. Problems can occur if the blind data has been created with the new command.There are several cases where AliasStudio 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.
![]()
When you are retrieving files, the universe's blind data may get obscured because two blind data packets with the same user type have been attached to the universe.
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.
![]()
AliasStudio and the API do not handle surface form the same way.
After AliasStudio builds a closed surface, the Information window will report that the surface is open. For efficiency, AliasStudio does not keep track of the closed state of a surface.
Use the API methods
AlSurface::vForm()oruForm()to test the points of a surface to determine if it is closed or not.
![]()
NURBS curves and surfaces are not parameterized from 0 to 1.
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.
![]()
The
firstShader()methods currently return the last shader that was evaluated.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.)
![]()
The
AlSettable::addToSet()method incorrectly returns status values forsObjectInAnotherSetandsObjectInExclusiveSetsituations.Detect these two conditions by traversing the set lists in the universe before calling
::addToSet().
![]()
If per polygon textures are being used in a polyset, then the
AlPolygon::st()method returns a different value than theAlPolysetVertex::st()method, which does not take into account whether per polygon textures are on.
![]()
Plug-ins are provided on an AS-IS basis.
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 example; 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.
![]()
The plug-in scheme editor options are not restored correctly when AliasStudio restarts.
Restore the options after the plug-in is loaded.
![]()
Plug-in DSOs are not unloaded when AliasStudio exits. As a result, static destructors are not called when AliasStudio exits.
The
plugin_exit()function will still be called when AliasStudio exits. Any saving of state required by a plug-in can be done in theplugin_exit()routine.Unload the plug-in manually through the Plug-in Manager window to call the static destructors.
![]()
Unloading an active continuous plug-in through the Plug-in Manager can cause a core dump under certain situations.
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 thecleanup()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 thedeleteObject()methods are called inplugin_exit().
![]()
When setting a plug-in's integer slider definition, you can set the range argument to any value in the integer range; however, the slider will only give values between -100 and 100.
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)
![]()
The
AlAreEqual(const AlObject* o1, const AlObject* o2)method for detecting if two objects in AliasStudio are equal has a significant FALSE condition.If both pointers,
o1ando2, are equal and NULL, FALSE is returned.Test
o1ando2before calling this function.
![]()
AlContinuousFunction::setPrompt()does not display the prompt right away.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.
|
Autodesk www.autodesk.com aliasstudio.docs@mail.autodesk.com |