Sets from a complete data description of the polygon mesh. If
you use it on an object with some clusters and you change the
topology the burden of updating the clusters is on the user.
Note: This method uses output
arguments. C# and some scripting languages (such as JScript and
PerlScript) don't support arguments passed by reference so you need
to use the best workaround for your situation:
For scripting languages this method returns an ISIVTCollection which you can
use to get the output arguments.
For C# the only available workaround is to create a VBScript custom
command which returns both the output arguments and the return
value in one array. For details, see What Happens when the Function Already
Returns a Value?.
PolygonMesh.Set( Object in_vertices, Object in_polygonData ); |
PolygonMesh.Set( [Vertices], [PolygonData] ); |
Parameter | Type | Description |
---|---|---|
Vertices | Array | Array representing the polygon vertices. The array is a 2D array (Nx3) of x,y,z values. |
PolygonData | Array | An ordered array of polygon definitions, each polygon is defined by a list of elements, the first element of a polygon definition must be set with the number of indices for that polygon. The ordering of vertices must respect a ccw ordering to get out going normals (right-hand rule). E.g. array of polygons with 4 indices each e.g. {4,0,1,4,3,4,1,2,5,4... } |
// // This example shows how to get the polygonmesh description from // one geometry and apply it on another. // var oRoot = Application.ActiveSceneRoot; var oCube = oRoot.AddGeometry( "Cube","MeshSurface" ); var oCone = oRoot.AddGeometry( "Cone","MeshSurface" ); // convert VB array to JScript array var vbArgs = new VBArray(oCube.ActivePrimitive.Geometry.Get2()); var args = vbArgs.toArray(); // get the vertices var vbArg0 = new VBArray(args[0]); var vertices = vbArg0.toArray(); // get the polygon information var vbArg1 = new VBArray(args[1]); var polygonData = vbArg1.toArray(); // Freezing the cone operator stack. Otherwise the method will return // the error E_ACCESSDENIED. This was done in order to prevent writing transient // data to objects. Otherwise setting values on non Application.FreezeObj(oCone); // Converting the cone to a cube oCone.ActivePrimitive.Geometry.Set(vertices,polygonData); |