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); |