Insert Shapes Example (VB.NET)

This example shows how to load a shape file and insert the shapes in the loaded shape file into a drawing.

'--------------------------------------------------------------
' Preconditions:
' 1. Create a VB.NET Windows console project.
' 2. Copy and paste this example 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. Start DraftSight and open a document.
' 6. Start debugging the project.
'
' Postconditions: 
' 1. Gets the Shape Manager.
' 2. Loads a shape file.
' 3. Gets the shapes in the loaded shape file.
' 4. Inserts the shapes, with an obliquing angle of 30, in the drawing.
' 5. Examine the drawing.
'----------------------------------------------------------------
 
Imports DraftSight.Interop.dsAutomation
Imports System.Runtime.InteropServices
Imports System.Windows.Forms
 
Module Module1
 
    Sub Main()
 
        Dim dsApp As DraftSight.Interop.dsAutomation.Application
 
        'Connect to DraftSight application
        dsApp = DirectCast(Marshal.GetActiveObject("DraftSight.Application"), DraftSight.Interop.dsAutomation.Application)
 
        ' Abort any command currently running in DraftSight to avoid nested commands
        dsApp.AbortRunningCommand()
 
        If dsApp Is Nothing Then
            Return
        End If
 
        '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 the Shape Manager
        Dim dsShapeMgr As ShapeManager = dsDoc.GetShapeManager()
 
        'Load shape file LTypeShp.shx
        Dim dsSysFile As SystemFiles = dsApp.GetSystemFiles()
        Dim FontsPathObj As Object() = DirectCast(dsSysFile.FontsPaths, Object())
        Dim fontPath As String = ""
        If FontsPathObj.Length > 0 Then
            fontPath = FontsPathObj(0).ToString()
        End If
 
        Dim shapeFileName As String = System.IO.Path.Combine(fontPath, "LTypeShp.shx")
 
        dsShapeMgr.Load(shapeFileName)
 
        'Get shapes
        Dim shapesStrList As Object() = DirectCast(dsShapeMgr.GetAvailableShapes(), Object())
        Dim shapesCount As Integer = shapesStrList.Length
 
        'Get Sketch Manager
        Dim dsSketchMgr As SketchManager = dsDoc.GetModel().GetSketchManager()
 
        'Insert shapes
        Dim PositionX As Double = 0.0, PositionY As Double = 0.0, PositionZ As Double = 0.0
        For i As Integer = 0 To shapesCount - 1
            Dim dsShape As Shape = dsSketchMgr.InsertShape(shapesStrList(i).ToString(), PositionX, PositionY, PositionZ, 1, 0.0)
 
            'Change obliquing property
            dsShape.Obliquing = 30 * Math.PI / 180
 
            Dim X1 As Double, Y1 As Double, Z1 As Double, X2 As Double, Y2 As Double, Z2 As Double
            dsShape.GetBoundingBox(X1, Y1, Z1, X2, Y2, Z2)
 
            PositionX += (X2 - X1) + 5
        Next
    End Sub
 
End Module