Attach Block Definition Annotation to Leader Example (VBA)
This example shows how to attach a Block definition annotation to a Leader.
'--------------------------------------------------------------
' 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. Start DraftSight and open a drawing document.
' 5. Run the macro.
'
' Postconditions:
' 1. A message box pops up when the Block definition,
' named MyBlockAnnotation, is created.
' 2. Click OK to close the message box.
' 3. A Leader is created and MyBlockAnnotation is
' is attached to the Leader.
' 4. The drawing zooms to fit.
' 5. Examine the drawing.
'----------------------------------------------------------------
Option Explicit
Sub main()
Dim dsApp As DraftSight.Application
Dim dsDoc As DraftSight.Document
Dim dsModel As DraftSight.Model
Dim dsSketchManager As DraftSight.SketchManager
'Connect to DraftSight
Set dsApp = GetObject(, "DraftSight.Application")
'Get active document
Set dsDoc = dsApp.GetActiveDocument()
If Not dsDoc Is Nothing Then
'Get model space
Set dsModel = dsDoc.GetModel()
'Get Sketch Manager
Set dsSketchManager = dsModel.GetSketchManager()
'First Line's parameters
Dim startX As Double
startX = 1#
Dim startY As Double
startY = 1#
Dim startZ As Double
startZ = 0#
Dim endX As Double
endX = 6#
Dim endY As Double
endY = 1#
Dim endZ As Double
endZ = 0#
'Construct a Line
Dim dsLine As DraftSight.Line
Set dsLine = dsSketchManager.InsertLine(startX, startY, startZ, endX, endY, endZ)
'Second Line's parameters
Dim start2X As Double
start2X = 2#
Dim start2Y As Double
start2Y = 2#
Dim start2Z As Double
start2Z = 0#
Dim end2X As Double
end2X = 2#
Dim end2Y As Double
end2Y = 20#
Dim end2Z As Double
end2Z = 0#
'Construct another Line
Dim dsLine2 As DraftSight.Line
Set dsLine2 = dsSketchManager.InsertLine(start2X, start2Y, start2Z, end2X, end2Y, end2Z)
Dim typesArray(1) As Long
typesArray(0) = 21
typesArray(1) = 21
Dim linesArray(1) As DraftSight.Line
Set linesArray(0) = dsLine
Set linesArray(1) = dsLine2
Dim dsBlockDef As DraftSight.BlockDefinition
Set dsBlockDef = dsDoc.CreateBlockDefinition("MyBlockAnnotation", "Block annotation to attach to Leader", 0, 0, 0, typesArray, linesArray, dsBlockDefinitionEntities_ConvertToBlock) MsgBox ("Name of Block definition: " & dsBlockDef.GetName)
MsgBox ("Name of Block definition: " & dsBlockDef.GetName
'Add Leader
Dim leaderCoordinates(5) As Double
leaderCoordinates(0) = 6.5
leaderCoordinates(1) = 7.2
leaderCoordinates(2) = 0
leaderCoordinates(3) = 7.7
leaderCoordinates(4) = 8.6
leaderCoordinates(5) = 0
Dim noteWidth As Double
noteWidth = 1#
Dim noteText As String
noteText = "L1 "
Dim dsLeader As DraftSight.Leader
Set dsLeader = dsSketchManager.InsertLeader(leaderCoordinates, noteWidth, noteText)
'Attach Block definition to Leader,
'which creates a Block instance
Dim dsMathUtility As DraftSight.MathUtility
Set dsMathUtility = dsApp.GetMathUtility
Dim dsMathPoint As DraftSight.MathPoint
Set dsMathPoint = dsMathUtility.CreatePoint(20, 20, 25)
dsLeader.SetBlockAnnotation "MyBlockAnnotation", dsMathPoint
dsApp.Zoom dsZoomRange_Fit, Nothing, Nothing
End If
End Sub