# Create Polygon Face Mesh Example (C#)

This example shows how to create a polygon face mesh.

//-------------------------------------------------------------
// Preconditions:
// 1. Create a C# Windows console project.
// 2. Copy and paste this example into the C# IDE.
// 3. Add a reference to:
// install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
// 4. Add references to System and System.Windows.Forms.
// 5. Start DraftSight and open a document.
// 6. Open the Immediate window.
// 7. Click Start Debugging.
//
// Postconditions:
// 1. A Polygon face mesh is created and zoomed to fit.
// 2. All Polygon face mesh parameters are printed to the Immediate
// window.
//------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using DraftSight.Interop.dsAutomation;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Diagnostics;
namespace AddPolyfaceMesh
{
class Program
{
private static DraftSight.Interop.dsAutomation.Application dsApp;
static void Main(string[] args)
{
//Connect to DraftSight application
dsApp = (DraftSight.Interop.dsAutomation.Application)Marshal.GetActiveObject("DraftSight.Application");
dsApp.AbortRunningCommand(); // abort any command currently running in DraftSight to avoid nested commands
//Get active document
Document dsDoc = dsApp.GetActiveDocument();
if (null == dsDoc)
{
MessageBox.Show("There are no opened documents in DraftSight");
return;
}
//Get model space
Model dsModel = dsDoc.GetModel();
//Get Sketch Manager
SketchManager dsSketchMgr = dsModel.GetSketchManager();
//Polygon face mesh parameters
int verticesCount = 8;
double[] coordinatesArray = new double[]
{
2, 2, 0,
2, 6, 0,
6, 6, 0,
6, 2, 0,
2, 2, 2,
2, 6, 2,
6, 6, 2,
6, 2, 2
};
int[] faceVerticesCountArray = new int[] { 4, 4, 4, 4, 4, 4 };
int[] faceVerticesArray = new int[]
{
1, 2, 3, 4,
5, 6, 7, 8,
1, 5, 8, 4,
2, 6, 7, 3,
3, 7, 8, 4,
1, 2, 6, 5
};
//Add polygon face mesh
PolyFaceMesh dsPolyFaceMesh = dsSketchMgr.InsertPolyFaceMesh(verticesCount, coordinatesArray, faceVerticesCountArray, faceVerticesArray);
if (null != dsPolyFaceMesh)
{
//Zoom to fit
dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit, null, null);
//Print polygon face mesh parameters
PrintParameters(dsPolyFaceMesh);
}
else
{
MessageBox.Show("Polygon face mesh entity was not added to the current drawing.");
}
}
private static void PrintParameters(PolyFaceMesh dsPolyFaceMesh)
{
Debug.Print(Environment.NewLine + "Polygon face mesh parameters...");
//Print common entity parameters
Debug.Print("Handle = " + dsPolyFaceMesh.Handle);
Debug.Print("Color = " + dsPolyFaceMesh.Color.GetNamedColor());
Debug.Print("Erased = " + dsPolyFaceMesh.Erased);
Debug.Print("Layer = " + dsPolyFaceMesh.Layer);
Debug.Print("LineScale = " + dsPolyFaceMesh.LineScale);
Debug.Print("LineStyle = " + dsPolyFaceMesh.LineStyle);
Debug.Print("LineWeight = " + dsPolyFaceMesh.LineWeight);
Debug.Print("Visible = " + dsPolyFaceMesh.Visible);
double x1, y1, z1;
double x2, y2, z2;
dsPolyFaceMesh.GetBoundingBox(out x1, out y1, out z1, out x2, out y2, out z2);
Debug.Print(string.Format("BoundingBox: ({0},{1},{2}) and ({3},{4},{5})", x1, y1, z1, x2, y2, z2));
//Print polygon face mesh faces
Debug.Print("Count of faces = " + dsPolyFaceMesh.GetFacesCount());
for (int faceIndex = 0; faceIndex < dsPolyFaceMesh.GetFacesCount(); ++faceIndex)
{
int corner1Vertex, corner2Vertex, corner3Vertex, corner4Vertex;
dsPolyFaceMesh.GetFace(faceIndex, out corner1Vertex, out corner2Vertex, out corner3Vertex, out corner4Vertex);
Debug.Print(string.Format("Face({0}): ({1},{2},{3},{4})", faceIndex, corner1Vertex, corner2Vertex, corner3Vertex, corner4Vertex));
}
//Print polygon face mesh vertices
Debug.Print("Count of vertices = " + dsPolyFaceMesh.GetVerticesCount());
for (int vertexIndex = 0; vertexIndex < dsPolyFaceMesh.GetVerticesCount(); ++vertexIndex)
{
double x, y, z;
dsPolyFaceMesh.GetVertexCoordinate(vertexIndex, out x, out y, out z);
Debug.Print(string.Format("Vertex({0}): ({1},{2},{3})", vertexIndex, x, y, z));
}
}
}
}