Insert Autoballoons Example (VBA)
This example shows how to insert autoballoons in a drawing document
using the now obsolete method IDrawingDoc::AutoBalloon2.
'---------------------------------------------
'
' Preconditions:
' (1)
Drawing document is open.
' (2)
Drawing view is selected.
'
' Postconditions: If autoballoons have not already been
inserted in the
' drawing
document and the drawing document is not lightweight,
' then
autoballoons are inserted for each resolved component in the
' selected
drawing view.
'
'----------------------------------------------
Sub main()
Const
swDetailingBalloonLayout_Default As Long = -1
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swSelMgr As
SldWorks.SelectionMgr
Dim
swDraw As
SldWorks.DrawingDoc
Dim
swView As
SldWorks.View
Dim
vNoteArr As
Variant
Dim
vNote As
Variant
Dim
swNote As
SldWorks.note
Dim
swAnn As
SldWorks.Annotation
Dim
vAttachPos As
Variant
Dim
vAnnPos As
Variant
Dim
bRet As
Boolean
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swDraw = swModel
Set
swSelMgr = swModel.SelectionManager
Set
swView = swSelMgr.GetSelectedObject5(1)
bRet
= swDraw.ActivateView(swView.Name):
Debug.Assert bRet
Debug.Print
"File = " & swModel.GetPathName
'
Get autoballoon settings
Debug.Print
" DetailingBalloonsDisplayWithBentLeader
=
" & swModel.GetUserPreferenceToggle(swDetailingBalloonsDisplayWithBentLeader)
Debug.Print
" DetailingBOMBalloonStyle
=
" & swModel.GetUserPreferenceIntegerValue(swDetailingBOMBalloonStyle)
Debug.Print
" DetailingBOMBalloonFit
=
" & swModel.GetUserPreferenceIntegerValue(swDetailingBOMBalloonFit)
Debug.Print
" DetailingAutoBalloonLayout
=
" & swModel.GetUserPreferenceIntegerValue(swDetailingAutoBalloonLayout)
Debug.Print
" DetailingBalloonBentLeaderLength
=
" & swModel.GetUserPreferenceDoubleValue(swDetailingBalloonBentLeaderLength)
* 1000# & " mm"
Debug.Print
""
Debug.Print
" "
& swView.Name
vNoteArr
= swDraw.AutoBalloon2(swDetailingBalloonLayout_Default,
FALSE)
'
Returns an empty array if:
'
* Balloons
already exist in any drawing view on any on sheet in
'
the
drawing document.
'
* Drawing
document is lightweight.
'
Returns a note for each resolved component in the selected drawing view.
If
IsEmpty(vNoteArr) Then
Debug.Print
" No
balloons added."
Exit
Sub
End
If
For
Each vNote In vNoteArr
Set
swNote = vNote
Set
swAnn = swNote.GetAnnotation
vAttachPos
= swNote.GetAttachPos
vAnnPos
= swAnn.GetPosition
Debug.Print
" Text
= " & swNote.GetText
Debug.Print
" Layer
=
" & swAnn.Layer
Debug.Print
" AttachPos
=
(" & vAttachPos(0) * 1000# & ", " & vAttachPos(1)
* 1000# & ", " & vAttachPos(2) * 1000# & ")
mm"
Debug.Print
" AnnPos
=
(" & vAnnPos(0) * 1000# & ", " & vAnnPos(1)
* 1000# & ", " & vAnnPos(2) * 1000# & ") mm"
'bRet
= swAnn.SetPosition(vAnnPos(0)
+ 0.01, vAnnPos(1), vAnnPos(2))
Next
End Sub
'--------------------------------------