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