This example shows how to create a PolygonMesh.
'-------------------------------------------------------------
' Preconditions:
' 1. Create a VB.NET Windows console project.
' 2. Copy and paste this project into the VB.NET IDE.
' 3. Add a reference to:
' install_dir\APISDK\tlb\DraftSight.Interop.dsAutomation.dll.
' 4. Add references to System and System.Windows.Forms.
' 5. Open the Immediate window.
' 6. Start DraftSight and open a document.
' 7. Click Start Debugging.
'
' Postconditions:
' 1. A PolygonMesh is created and zoomed to fit.
' 2. All PolygonMesh parameters are printed to the Immediate
' window.
'------------------------------------------------------------
Imports
System.Collections.Generic
Imports
System.Text
Imports
DraftSight.Interop.dsAutomation
Imports
System.Runtime.InteropServices
Imports
System.Windows.Forms
Imports
System.Diagnostics
Module
Module1
Sub
Main()
'Connect to DraftSight application
Dim
dsApp = GetObject(, "DraftSight.Application")
dsApp.AbortRunningCommand() '
abort any command currently running in DraftSight to avoid nested commands
'Get active document
Dim
dsDoc As
Document = dsApp.GetActiveDocument()
If
dsDoc Is
Nothing
Then
MessageBox.Show("There
are no open documents in DraftSight.")
Return
End
If
'Get
model space
Dim
dsModel As
Model = dsDoc.GetModel()
'Get Sketch Manager
Dim
dsSketchMgr As
SketchManager = dsModel.GetSketchManager()
'PolygonMesh parameters
Dim
coordinatesArray As
Double() =
New
Double() {0, 0,
-4, -1.53073372946036, 0, -3.69551813004515, _
-2.82842712474619, 0, -2.82842712474619, -3.69551813004515, 0,
-1.53073372946036, _
-4, 0, 0, 0, 0, -4, _
-0.76536686473018, -1.32565429614237, -3.69551813004515,
-1.4142135623731, -2.44948974278318, -2.82842712474619, _
-1.84775906502257, -3.20041258076506, -1.53073372946036, -2,
-3.46410161513776, 0, _
0, 0, -4, 0.765366864730179, -1.32565429614237, -3.69551813004515,
_
1.41421356237309, -2.44948974278318, -2.82842712474619,
1.84775906502257, -3.20041258076506, -1.53073372946036, _
2, -3.46410161513776, 0, 0, 0, -4, _
1.53073372946036, 0, -3.69551813004515, 2.82842712474619, 0,
-2.82842712474619, _
3.69551813004515, 0, -1.53073372946036, 4, 0, 0, _
0, 0, -4, 0.76536686473018, 1.32565429614237, -3.69551813004515, _
1.4142135623731, 2.44948974278318, -2.82842712474619,
1.84775906502257, 3.20041258076506, -1.53073372946036, _
2, 3.46410161513775, 0, 0, 0, -4, _
-0.765366864730179, 1.32565429614237, -3.69551813004515,
-1.41421356237309, 2.44948974278318, -2.82842712474619, _
-1.84775906502257, 3.20041258076506, -1.53073372946036, -2,
3.46410161513776, 0}
Dim
mVertexCount As
Integer = 6
Dim
nVertexCount As
Integer = 5
'Add PolygonMesh
Dim
dsPolygonMesh As
PolygonMesh = dsSketchMgr.InsertPolygonMesh(mVertexCount,
nVertexCount, coordinatesArray)
'Make PolygonMesh continuous from
the last row to the first row
dsPolygonMesh.MClosed =
True
'Zoom
to fit
dsApp.Zoom(dsZoomRange_e.dsZoomRange_Fit,
Nothing,
Nothing)
'Print PolygonMesh properties
PrintParameters(dsPolygonMesh)
End
Sub
Sub
PrintParameters(ByVal
dsPolygonMesh As
PolygonMesh)
Debug.Print(Environment.NewLine &
"Polygon mesh parameters...")
'Print common entity parameters
Debug.Print("Handle
= " & Convert.ToString(dsPolygonMesh.Handle))
Debug.Print("Color = "
& dsPolygonMesh.Color.GetNamedColor())
Debug.Print("Erased = "
& Convert.ToString(dsPolygonMesh.Erased))
Debug.Print("Layer = "
& Convert.ToString(dsPolygonMesh.Layer))
Debug.Print("LineScale = "
& Convert.ToString(dsPolygonMesh.LineScale))
Debug.Print("LineStyle = "
& Convert.ToString(dsPolygonMesh.LineStyle))
Debug.Print("LineWeight = "
& Convert.ToString(dsPolygonMesh.LineWeight))
Debug.Print("Visible = "
& Convert.ToString(dsPolygonMesh.Visible))
Dim
x1 As
Double, y1
As
Double, z1
As
Double
Dim
x2 As
Double, y2
As
Double, z2
As
Double
dsPolygonMesh.GetBoundingBox(x1,
y1, z1, x2, y2, z2)
Debug.Print(String.Format("BoundingBox:
({0},{1},{2}) and ({3},{4},{5})", x1, y1,
z1, x2, y2, _
z2))
'Print PolygonMesh parameters
Debug.Print("FitSmooth
= " & Convert.ToString(dsPolygonMesh.FitSmooth))
Debug.Print("NDensity = "
& Convert.ToString(dsPolygonMesh.NDensity))
Debug.Print("MDensity = "
& Convert.ToString(dsPolygonMesh.MDensity))
Debug.Print("NClosed = "
& Convert.ToString(dsPolygonMesh.NClosed))
Debug.Print("MClosed = "
& Convert.ToString(dsPolygonMesh.MClosed))
Debug.Print("MVertexCount = "
& dsPolygonMesh.GetMVertexCount())
Debug.Print("NVertexCount = "
& dsPolygonMesh.GetNVertexCount())
'Print PolygonMesh coordinates
Debug.Print("Coordinates
of polygon mesh vertices:")
For
vertexIndex As
Integer = 0
To
dsPolygonMesh.GetVerticesCount() - 1
Dim
x As
Double, y
As
Double, z
As
Double
dsPolygonMesh.GetVertexCoordinate(vertexIndex,
x, y, z)
Debug.Print(String.Format("Vertex({0}):
({1},{2},{3})", vertexIndex, x, y, z))
Next
End
Sub
End Module