GetConceptualFaceArea
Syntax
public const string enginedll = @"engine.dll"; [DllImport(enginedll, EntryPoint = "GetConceptualFaceArea")] public static extern double GetConceptualFaceArea(Int64 conceptualFace, ref float vertexBuffer, ref Int32 indexBuffer); [DllImport(enginedll, EntryPoint = "GetConceptualFaceArea")] public static extern double GetConceptualFaceArea(Int64 conceptualFace, ref float vertexBuffer, ref Int64 indexBuffer); [DllImport(enginedll, EntryPoint = "GetConceptualFaceArea")] public static extern double GetConceptualFaceArea(Int64 conceptualFace, ref double vertexBuffer, ref Int32 indexBuffer); [DllImport(enginedll, EntryPoint = "GetConceptualFaceArea")] public static extern double GetConceptualFaceArea(Int64 conceptualFace, ref double vertexBuffer, ref Int64 indexBuffer); [DllImport(enginedll, EntryPoint = "GetConceptualFaceArea")] public static extern double GetConceptualFaceArea(Int64 conceptualFace, IntPtr vertexBuffer, IntPtr indexBuffer); public static double GetConceptualFaceArea(Int64 conceptualFace) { return GetConceptualFaceArea(conceptualFace, IntPtr.Zero, IntPtr.Zero); }
Property conceptualFace
Size: 64 bit / 8 byte (value)Property vertexBuffer
Size: 32 bit / 4 byte (reference)Property indexBuffer
Size: 32 bit / 4 byte (reference)
Example (based on pure API calls)
Here you can find code snippits that show how the API call GetConceptualFaceArea can be used.
using RDF; // include at least engine.cs within your solution ... static void Main(string[] args) { Int64 model = RDF.engine.CreateModel(); if (model != 0) { // // Classes // Int64 classBox = RDF.engine.GetClassByName(model, "Box"); // // Datatype Properties (attributes) // Int64 propertyLength = RDF.engine.GetPropertyByName(model, "length"), propertyWidth = RDF.engine.GetPropertyByName(model, "width"), propertyHeight = RDF.engine.GetPropertyByName(model, "height"); // // Instances (creating) // Int64 instanceBox = RDF.engine.CreateInstance(classBox, (string) null); double length = 2.8, width = 1.3, height = 1.4; RDF.engine.SetDatatypeProperty(instanceBox, propertyLength, ref length, 1); RDF.engine.SetDatatypeProperty(instanceBox, propertyWidth, ref width, 1); RDF.engine.SetDatatypeProperty(instanceBox, propertyHeight, ref height, 1); Int64 vertexBufferSize = 0, indexBufferSize = 0; RDF.engine.CalculateInstance(instanceBox, out vertexBufferSize, out indexBufferSize, (IntPtr) 0); if (vertexBufferSize != 0 && indexBufferSize != 0) { float[] vertexBuffer = new float[6 * vertexBufferSize]; RDF.engine.UpdateInstanceVertexBuffer(instanceBox, ref vertexBuffer[0]); Int32[] indexBuffer = new Int32[indexBufferSize]; RDF.engine.UpdateInstanceIndexBuffer(instanceBox, ref indexBuffer[0]); Int64 conceptualFaceCnt = RDF.engine.GetConceptualFaceCnt(instanceBox); for (Int64 index = 0; index < conceptualFaceCnt; index++) { Int64 startIndexTriangles = 0, noIndicesTriangles = 0, conceptualFace = RDF.engine.GetConceptualFace( instanceBox, index, out startIndexTriangles, out noIndicesTriangles, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0, (IntPtr) 0 ); double conceptualFaceArea = RDF.engine.GetConceptualFaceArea( conceptualFace, ref vertexBuffer[0], ref indexBuffer[0] ), conceptualFacePerimeter = RDF.engine.GetConceptualFacePerimeter( conceptualFace ); } } // // The resulting model can be viewed in 3D-Editor.exe // RDF.engine.SaveModel(model, "c:\\created\\myFile.bin"); RDF.engine.CloseModel(model); } }