I have a small routine, part of a larger macro. The intent of the routine is to mark an entity with a call out on the screen. When the callout is displayed, it doesn't point to the selected entity. Do I have to specify the coordinates of the callout leader? If yes, what is the best way to get the relevant coordinates for an entity, ie an edge, vertex or surface?
Private Sub selectEntityAndAddCallout(swEntity As SldWorks.Entity, ByVal sCalloutText As String)
Dim swModel As SldWorks.ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim swSelData As SldWorks.SelectData
Dim swCallout As SldWorks.Callout
Dim callH As New SwCalloutHandlerClass
Dim boolstatus As Boolean
Set swModel =
Set swSelMgr = swModel.SelectionManager
Set swSelData = swSelMgr.CreateSelectData
'Select entity
Call swModel.ClearSelection2(True)
boolstatus = swEntity.Select4(False, swSelData)
'Display callout
Set swCallout = swSelMgr.CreateCallout2(1, callH)
boolstatus = swSelMgr.SetCallout(1, swCallout) 'TODO: need to make callout point to selected entity.
swCallout.Label2(0) = sCalloutText
swCallout.Value(0) = ""
swCallout.MultipleLeaders = False
swCallout.ValueInactive(0) = True
End Sub
SolidworksApi macros