Create Callout Independent of a Selection (VB.NET)
This example shows how to create a callout that is independent of a
selection.
'---------------------------------------------------------------
' Preconditions:
' 1. Document is open in SolidWorks.
' 2. Right-click on the project in Project Explorer, select Add
Reference,
'
browse to <SolidWorks_install_dir>\api\redist,
'
and select SolidWorks.interop.swpublished.dll.
'
' Postconditions:
' 1. A callout is created with two leaders.
' 2. The callout label does not display a colon.
' 3. The callout value is ignored.
'----------------------------------------------------------------
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
SolidWorks.Interop.swpublished
Imports
System
Imports
System.Diagnostics
Partial
Class
SolidWorksMacro
Dim
swModel As
ModelDoc2
Dim
swExt As
ModelDocExtension
Dim
swSelMgr As
SelectionMgr
Dim
mathUtil As
MathUtility
Public
Sub
main()
swModel = swApp.ActiveDoc
swExt = swModel.Extension
swSelMgr = swModel.SelectionManager
mathUtil = swApp.GetMathUtility
Dim
handle As
New
calloutHandler
Dim
mp As
MathPoint
Dim
vPnt(2) As
Double
vPnt(0) = 0.0#
vPnt(1) = 0.0#
vPnt(2) = 0.0#
mp = mathUtil.CreatePoint(vPnt)
Dim
myCallout As
Callout
myCallout = swExt.CreateCallout(2, handle)
myCallout.Value(1) =
""
myCallout.IgnoreValue(1)
= True
myCallout.Label2(1) =
"SldWorks API"
myCallout.SkipColon =
True
Call
myCallout.SetLeader(True,
True)
Call
myCallout.SetTargetPoint(1, 0.001, 0.001, 0)
Call
myCallout.SetTargetPoint(2, -0.001, 0.001, 0)
myCallout.Position = mp
myCallout.ValueInactive(0) =
True
myCallout.TextBox =
False
myCallout.Display(True)
End
Sub
Public
swApp As
SldWorks
End
Class
'
' calloutHandler.vb
'
Imports
SolidWorks.Interop.sldworks
Imports
SolidWorks.Interop.swconst
Imports
SolidWorks.Interop.swpublished
Imports
System
Imports
System.Diagnostics
<System.Runtime.InteropServices.ComVisible(True)>
_
Public
Class
calloutHandler
Implements
SwCalloutHandler
Private
Function
OnStringValueChanged(ByVal
pManipulator As
Object,
ByVal
RowID As
Integer,
ByVal
Text As
String)
As
Boolean
Implements
SolidWorks.Interop.swpublished.ISwCalloutHandler.OnStringValueChanged
Debug.Print("Text: "
& Text)
Debug.Print("Row: "
& RowID)
Return
True
End
Function
End
Class