Hide Table of Contents

Attach Note and Tolerance Annotations to Leaders Example (VBA)

This example shows how to attach Note and Tolerance annotations to Leaders.

'-------------------------------------------------------------
' 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 Leader is constructed with a Note.
' 2. Click within the drawing to specify the point 
'    where to attach a geometric Tolerance annotation
'    to the Leader.
' 3. The geometric Tolerance annotation is attached to
'    the Leader.
' 4. A second leader is constructed with a Note.
' 5. Click within the drawing to specify the
'    point where to attach the New Note annotation to 
'    the Leader.
' 6. The New Note annotation is attached to the Leader.
' 7. The drawing is zoomed to fit.
'------------------------------------------------------------
Option Explicit
Dim dsApp As DraftSight.Application
Sub main()
    'Connect to DraftSight
    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 Not dsDoc Is Nothing Then    
        'Get model space
        Dim dsModel As DraftSight.Model
        Set dsModel = dsDoc.GetModel        
        'Get Sketch Manager
        Dim dsSketchManager As DraftSight.SketchManager
        Set dsSketchManager = dsModel.GetSketchManager        
        'Add first 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)        
        'Get command message
        Dim dsCommandMessage As DraftSight.CommandMessage
        Set dsCommandMessage = dsApp.GetCommandMessage        
        'Get math utility
        Dim dsMathUtility As DraftSight.MathUtility
        Set dsMathUtility = dsApp.GetMathUtility        
        'Prompt to select the point where to attach the
        'Tolerance annotation to the Leader
        Dim firstX As Double
        Dim firstY As Double
        Dim firstZ As Double
        Dim dsMathPlane As DraftSight.MathPlane
        Set dsMathPlane = dsMathUtility.CreateXYPlane
        dsCommandMessage.PromptForPoint2 "Click within the drawing to insert the geometric Tolerance", True, 0, 0, 0, firstX, firstY, firstZ, dsMathPlane        
        'Create the first math point
        Dim dsFirstMathPoint As DraftSight.MathPoint
        Set dsFirstMathPoint = dsMathUtility.CreatePoint(firstX, firstY, firstZ)        
        ' Attach the Tolerance annotation
        dsLeader.SetToleranceAnnotation "{\Fgdt;j}%%v{\Fgdt;n}0.7{\Fgdt;m}", dsFirstMathPoint        
        'Add second Leader
        Dim leaderCoordinates2(5) As Double
        leaderCoordinates2(0) = 18
        leaderCoordinates2(1) = 29
        leaderCoordinates2(2) = 0
        leaderCoordinates2(3) = 30
        leaderCoordinates2(4) = 26
        leaderCoordinates2(5) = 0
        Dim noteWidth2 As Double
        noteWidth2 = 1#
        Dim noteText2 As String
        noteText2 = "L2 "
        Dim dsLeader2 As DraftSight.Leader 
        Set dsLeader2 = dsSketchManager.InsertLeader(leaderCoordinates2, noteWidth2, noteText2)     
        'Get math utility
        Dim dsMathUtility2 As DraftSight.MathUtility
        Set dsMathUtility2 = dsApp.GetMathUtility        
        'Prompt to select the point where to attach the
        'New Note annotation to the Leader
        Dim secondX As Double
        Dim secondY As Double
        Dim secondZ As Double
        Dim dsMathPlane2 As DraftSight.MathPlane
        Set dsMathPlane2 = dsMathUtility.CreateXYPlane
        dsCommandMessage.PromptForPoint2 "Click within the drawing to insert a new Note", True, 0, 0, 0, secondX, secondY, secondZ, dsMathPlane2        
        'Create the first math point
        Dim dsSecondMathPoint2 As DraftSight.MathPoint
        Set dsSecondMathPoint2 = dsMathUtility2.CreatePoint(secondX, secondY, secondZ) 
       
        ' Attach the New Note annotation
        dsLeader2.SetToleranceAnnotation "New Note", dsSecondMathPoint2        
        dsApp.Zoom dsZoomRange_e.dsZoomRange_Fit, Nothing, Nothing        
    End If        
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:   Attach Note and Tolerance Annotations to Leaders 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.