Refer to the mtk_mesh_representation_example_page.
using cadex.Collections;
using System;
namespace mesh
{
class Program
{
static int Main(string[] args)
{
string aKey = MTKLicenseKey.Value();
if (!LicenseManager.Activate(aKey))
{
Console.WriteLine("Failed to activate Manufacturing Toolkit license.");
return 1;
}
if (args.Length != 1)
{
Console.WriteLine("Usage: " +
$"{System.Reflection.Assembly.GetExecutingAssembly().Location} <input_file>, where:");
Console.WriteLine($" <input_file> is a name of the file to be read");
Console.WriteLine($"");
return 1;
}
string aSource = args[0];
var aModel =
new Model();
{
Console.WriteLine("Failed to read the file " + aSource);
return 1;
}
PartMeshVisitor aVisitor = new PartMeshVisitor();
aModel.Accept(aVisitor);
return 0;
}
{
public override void Apply(
Part thePart)
{
Console.WriteLine($"Part = \"{thePart.Name()}\"");
var aBodies = thePart.
Bodies();
if (!aBodies.IsEmpty)
{
ExploreMeshBodies(aBodies);
}
}
private void ExploreMeshBodies(BodyList theBodies)
{
for (int i = 0; i < theBodies.Count; ++i)
{
var aBody = theBodies[i];
{
Console.WriteLine($"MeshBody {i}");
var aMeshShapes = aMeshBody.
Shapes();
for (int j = 0; j < aMeshShapes.Count; ++j)
{
var aMeshShape = aMeshShapes[j];
Console.Write($"MeshShape {j}");
PrintMeshShapeInfo(aMeshShape);
}
}
}
}
private void PrintMeshShapeInfo(
MeshShape theMeshShape)
{
{
Console.WriteLine(" IndexedTriangleSet type.");
DumpTriangleSet(aITS);
}
Console.WriteLine(" PolyLineSet type");
DumpPolylineSet(aPLS);
}
Console.WriteLine(" PolyLine2dSet type");
DumpPolyline2dSet(aPL2dS);
}
else if (
PointSet.
CompareType(theMeshShape)) {
Console.WriteLine(" PolyPointSet type");
DumpPointSet(aPPS);
}
else
{
Console.WriteLine(" Undefined type");
}
}
private void DumpPointSet(
PointSet thePS)
{
Console.WriteLine($"PointSet: {aNumberOfPoints} points");
for (uint i = 0; i < aNumberOfPoints; ++i)
{
Console.WriteLine($"Point {i}: ({aP.X()}, {aP.Y()}, {aP.Z()})");
}
}
{
Console.WriteLine($"PolylineSet: {aNumberOfPolylines} polylines");
for (uint i = 0; i < aNumberOfPolylines; ++i)
{
Console.WriteLine($"Polyline {i}:");
Console.WriteLine(" Node coordinates:");
for (uint j = 0; j < aPoly.NumberOfPoints(); ++j)
{
Console.WriteLine($"({aP.X()}, {aP.Y()}, {aP.Z()})");
}
}
}
{
Console.WriteLine($"Polyline2dSet: {aNumberOfPolylines2d} polylines");
for (uint i = 0; i < aNumberOfPolylines2d; ++i)
{
Console.WriteLine($"Polyline2d {i}:");
Console.WriteLine(" Node coordinates:");
for (uint j = 0; j < aPoly.NumberOfPoints(); ++j)
{
Console.WriteLine($"({aP.X()}, {aP.Y()})");
}
}
}
{
Console.WriteLine($"IndexedTriangleSet: {aNumberOfTriangles} triangles:");
for (uint i = 0; i < aNumberOfTriangles; ++i)
{
Console.WriteLine($"Triangle {i}:");
for (uint j = 0; j < 3; ++j)
{
Console.WriteLine($" Node {j}: Vertex {aVI} ({aV.X()}, {aV.Y()}, {aV.Z()})");
{
Console.WriteLine($" Normal: ({aN.X()}, {aN.Y()}, {aN.Z()})");
}
}
}
}
}
}
}
const PointType & Point(size_t theIndex) const
Returns the point at position theIndex in polyline.
Definition Polyline2d.cxx:83
const PointType & Point(size_t theIndex) const
Returns the point at position theIndex in polyline.
Definition Polyline.cxx:83
Defines a polygonal shape consisting of triangles.
Definition IndexedTriangleSet.hxx:33
bool HasNormals() const
Returns true if the triangle set has explicitly defined normals.
Definition IndexedTriangleSet.cxx:213
size_t NumberOfTriangles() const
Returns a number of triangles.
Definition IndexedTriangleSet.cxx:326
const VertexType & TriangleVertex(size_t theTriangleIndex, size_t theVertexSlot) const
Returns a vertex of a triangle.
Definition IndexedTriangleSet.cxx:241
const NormalType & TriangleVertexNormal(size_t theTriangleIndex, size_t theVertexSlot) const
Returns a normal at vertex in a triangle.
Definition IndexedTriangleSet.cxx:273
int TriangleVertexIndex(size_t theTriangleIndex, size_t theVertexSlot) const
Returns a vertex index in a triangle.
Definition IndexedTriangleSet.cxx:254
Defines a body that represents a polygonal mesh (faceted or tessellated) of .
Definition MeshBody.hxx:32
Base class for all polygonal geometry containers.
Definition MeshShape.hxx:29
Element visitor with empty implementation.
Definition ModelElementVisitor.hxx:64
Provides MTK data model.
Definition Model.hxx:40
Reads supported formats, see Import section.
Definition ModelReader.hxx:33
Defines a leaf node in the scene graph hiearchy.
Definition Part.hxx:34
Defines a polygonal shape consisting of individual points.
Definition PointSet.hxx:32
size_t NumberOfPoints() const
Returns a number of points in point set.
Definition PointSet.cxx:67
const Geom::Point & Point(size_t theIndex) const
Returns the point at position theIndex in point set.
Definition PointSet.cxx:61
Defines a polygonal shape consisting of polylines.
Definition Polyline2dSet.hxx:32
const Geom::Polyline2d & Polyline(size_t theIndex) const
Returns the polyline at position theIndex in polyline set.
Definition Polyline2dSet.cxx:64
size_t NumberOfPolylines() const
Returns a number of polylines in polyline set.
Definition Polyline2dSet.cxx:70
Defines a polygonal shape consisting of polylines.
Definition PolylineSet.hxx:32
size_t NumberOfPolylines() const
Returns a number of polylines in polyline set.
Definition PolylineSet.cxx:72
const Geom::Polyline & Polyline(size_t theIndex) const
Returns the polyline at position theIndex in polyline set.
Definition PolylineSet.cxx:66
Defines a Unicode (UTF-16) string wrapping a standard string.
Definition UTF16String.hxx:30
Contains classes, types, enums, and functions related to geometric entities.
Defines classes, types, enums, and functions related to topological entities and scene graph elements...
Contains classes, namespaces, enums, types, and global functions related to Manufacturing Toolkit.
Definition LicenseManager_LicenseError.hxx:30