Hide Table of Contents

Create Polygon Face Mesh Example (VBA)

This example shows how to create a polygon face mesh.

'--------------------------------------------------------------
' 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 polygon face mesh is created and zoomed to fit.
' 2. All polygon mesh face 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()
        'Polygon face mesh parameters
        Dim verticesCount As Integer
        verticesCount = 8
        
        Dim coordinatesArray() As Variant
        coordinatesArray = Array(2#, 2#, 0#, 2#, 6#, 0#, _
        6#, 6#, 0#, 6#, 2#, 0#, 2#, 2#, _
        2#, 2#, 6#, 2#, 6#, 6#, 2#, 6#, 2#, 2#)
        
        Dim faceVerticesCountArray() As Variant
        faceVerticesCountArray = Array(4, 4, 4, 4, 4, 4)
        
        Dim faceVerticesArray() As Variant
        faceVerticesArray = Array(1, 2, 3, 4, 5, 6, 7, 8, _
        1, 5, 8, 4, 2, 6, 7, 3, 3, 7, 8, _
        4, 1, 2, 6, 5)
        
        Dim coordinatesDoubleArray() As Double
        Dim i As Long
        Dim arraySize As Long
        arraySize = UBound(coordinatesArray)
        ReDim coordinatesDoubleArray(arraySize)
        For i = 0 To arraySize
            coordinatesDoubleArray(i) = coordinatesArray(i)
        Next i
        
        Dim faceVerticesCountLongArray() As Long
        arraySize = UBound(faceVerticesCountArray)
        ReDim faceVerticesCountLongArray(arraySize)
        For i = 0 To arraySize
            faceVerticesCountLongArray(i) = faceVerticesCountArray(i)
        Next i
        
        Dim faceVerticesLongArray() As Long
        arraySize = UBound(faceVerticesArray)
        ReDim faceVerticesLongArray(arraySize)
        For i = 0 To arraySize
            faceVerticesLongArray(i) = faceVerticesArray(i)
        Next i
        
        'Add polygon face mesh
        Dim dsPolyFaceMesh As DraftSight.PolyFaceMesh
        Set dsPolyFaceMesh = dsSketchMgr.InsertPolyFaceMesh(verticesCount, coordinatesDoubleArray, faceVerticesCountLongArray, faceVerticesLongArray)
        If Not dsPolyFaceMesh Is Nothing Then
            'Zoom to fit
            dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing
            
            'Print Polygon face mesh properties
            PrintParameters dsPolyFaceMesh
        Else
            MsgBox ("Polygon face mesh entity was not added to the current drawing.")
        End If
        
    End Sub
    Sub PrintParameters(ByVal dsPolyFaceMesh As DraftSight.PolyFaceMesh)
        Debug.Print ("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)
        Dim x1 As Double, y1 As Double, z1 As Double
        Dim x2 As Double, y2 As Double, z2 As Double
        dsPolyFaceMesh.GetBoundingBox x1, y1, z1, x2, y2, z2
        Debug.Print ("BoundingBox: " & x1 & ", " & y1 & ", " & z1 & ", " & x2 & ", " & y2 & ", " & z2)
        'Print polygon face mesh faces
        Dim countFaces As Long
        countFaces = dsPolyFaceMesh.GetFacesCount
        Debug.Print ("Count of faces = " & countFaces)
        Dim faceIndex As Long
            For faceIndex = 0 To dsPolyFaceMesh.GetFacesCount() - 1
            Dim corner1Vertex As Long, corner2Vertex As Long, corner3Vertex As Long, corner4Vertex As Long
            dsPolyFaceMesh.GetFace faceIndex, corner1Vertex, corner2Vertex, corner3Vertex, corner4Vertex
            Debug.Print ("Face(0) : (1),(2),(3),(4) " & faceIndex & " : " & corner1Vertex & ", " & corner2Vertex & ", " & corner3Vertex & ", " & corner4Vertex)
        Next
        
        'Print polygon face mesh vertices
        Dim countVertices As Long
        countVertices = dsPolyFaceMesh.GetVerticesCount
        Debug.Print ("Count of vertices = " & countVertices)
        Dim vertexIndex As Long
        For vertexIndex = 0 To dsPolyFaceMesh.GetVerticesCount() - 1
            Dim x As Double, y As Double, z As Double
            dsPolyFaceMesh.GetVertexCoordinate vertexIndex, x, y, z
            Debug.Print ("Vertex (0) : (1),(2),(3) " & vertexIndex & " : " & x & ", " & y & ", " & z)
        Next
        
    End Sub

 



Provide feedback on this topic

SOLIDWORKS welcomes your feedback concerning the presentation, accuracy, and thoroughness of the documentation. Use the form below to send your comments and suggestions about this topic directly to our documentation team. The documentation team cannot answer technical support questions. Click here for information about technical support.

* Required

 
*Email:  
Subject:   Feedback on Help Topics
Page:   Create Polygon Face Mesh Example (VBA)
*Comment:  
*   I acknowledge I have read and I hereby accept the privacy policy under which my Personal Data will be used by Dassault Systèmes

Print Topic

Select the scope of content to print:

x

We have detected you are using a browser version older than Internet Explorer 7. For optimized display, we suggest upgrading your browser to Internet Explorer 7 or newer.

 Never show this message again
x

Web Help Content Version: API Help (English only) 2019 SP05

To disable Web help from within SOLIDWORKS and use local help instead, click Help > Use SOLIDWORKS Web Help.

To report problems encountered with the Web help interface and search, contact your local support representative. To provide feedback on individual help topics, use the “Feedback on this topic” link on the individual topic page.