This example shows how to create a PolygonMesh.
'-------------------------------------------------------------- ' Preconditions: ' 1. Create a VBA macro in a software product in which VBA is ' embedded. ' 2. Copy and paste this example into the Visual Basic IDE. ' 3. Add a reference to the DraftSight type library, ' install_dir\bin\dsAutomation.dll. ' 4. Open the Immediate window. ' 5. Start DraftSight and open a drawing document. ' 6. Run the macro. ' ' Postconditions: ' 1. A PolygonMesh is created and zoomed to fit. ' 2. All PolygonMesh parameters are printed to the Immediate ' window. '------------------------------------------------------------
Option Explicit
Sub Main()
'Connect to DraftSight application Dim dsApp As DraftSight.Application Set dsApp = GetObject(, "DraftSight.Application") 'Abort any command currently running in DraftSight 'to avoid nested commands dsApp.AbortRunningCommand
'Get active document Dim dsDoc As DraftSight.Document Set dsDoc = dsApp.GetActiveDocument() If dsDoc Is Nothing Then MsgBox ("There are no open documents in DraftSight.") End End If
'Get model space Dim dsModel As DraftSight.Model Set dsModel = dsDoc.GetModel()
'Get Sketch Manager Dim dsSketchMgr As DraftSight.SketchManager Set dsSketchMgr = dsModel.GetSketchManager()
'PolygonMesh parameters Dim coordinatesArray() As Variant coordinatesArray = Array(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 Long mVertexCount = 6
Dim nVertexCount As Long nVertexCount = 5
Dim coordinatesDoubleArray() As Double Dim nbrArrayElements As Long nbrArrayElements = (mVertexCount * nVertexCount) * 3 ReDim coordinatesDoubleArray(nbrArrayElements - 1)
Dim i As Long For i = 0 To (nbrArrayElements - 1) coordinatesDoubleArray(i) = coordinatesArray(i) Next i
'Add PolygonMesh Dim dsPolygonMesh As DraftSight.PolygonMesh Set dsPolygonMesh = dsSketchMgr.InsertPolygonMesh(mVertexCount, nVertexCount, coordinatesDoubleArray)
'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 DraftSight.PolygonMesh) Debug.Print ("Polygon mesh parameters...")
'Print common entity parameters Debug.Print ("Handle = " & dsPolygonMesh.Handle) Debug.Print ("Color = " & dsPolygonMesh.Color.GetNamedColor()) Debug.Print ("Erased = " & dsPolygonMesh.Erased) Debug.Print ("Layer = " & dsPolygonMesh.Layer) Debug.Print ("LineScale = " & dsPolygonMesh.LineScale) Debug.Print ("LineStyle = " & dsPolygonMesh.LineStyle) Debug.Print ("LineWeight = " & dsPolygonMesh.LineWeight) Debug.Print ("Visible = " & 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 ("BoundingBox: " & x1 & ", " & y1 & ", " & z1 & ", " & x2 & ", " & y2 & ", " & z2)
'Print PolygonMesh parameters Debug.Print ("FitSmooth = " & dsPolygonMesh.FitSmooth) Debug.Print ("NDensity = " & dsPolygonMesh.NDensity) Debug.Print ("MDensity = " & dsPolygonMesh.MDensity) Debug.Print ("NClosed = " & dsPolygonMesh.NClosed) Debug.Print ("MClosed = " & dsPolygonMesh.MClosed) Debug.Print ("MVertexCount = " & dsPolygonMesh.GetMVertexCount()) Debug.Print ("NVertexCount = " & dsPolygonMesh.GetNVertexCount())
'Print PolygonMesh coordinates Debug.Print ("Coordinates of polygon mesh vertices:") Dim vertexIndex As Long For vertexIndex = 0 To dsPolygonMesh.GetVerticesCount() - 1 Dim x As Double, y As Double, z As Double dsPolygonMesh.GetVertexCoordinate vertexIndex, x, y, z
Debug.Print ("Vertex " & vertexIndex & ": (1),(2),(3): " & x & ", " & y & ", " & z) Next End Sub