Create a Callout Independent of a Selection (C#)
This example shows how to create a callout this is independent of a
selection.
//---------------------------------------------------------------
//
// Preconditions: Document
is open in SolidWorks.
//
//
// Postconditions: A callout with two leaders is created.
//
//
//
//----------------------------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.swpublished;
using System;
using System.Diagnostics;
namespace ExampleCS.csproj
{
partial
class SolidWorksMacro
{
ModelDoc2
swModel;
ModelDocExtension
swExt;
SelectionMgr
swSelMgr;
MathUtility
mathUtil;
public
void Main()
{
swModel
= swApp.ActiveDoc as ModelDoc2;
swExt
= swModel.Extension;
swSelMgr
= swModel.SelectionManager as
SelectionMgr;
mathUtil
= swApp.GetMathUtility() as MathUtility;
calloutHandler
handle = new calloutHandler();
MathPoint
mp;
double[]
vPnt = new double[3];
vPnt[0]
= 0.0;
vPnt[1]
= 0.0;
vPnt[2]
= 0.0;
mp
= mathUtil.CreatePoint(vPnt) as
MathPoint;
Callout
myCallout;
myCallout
= (Callout)swExt.CreateCallout(2,
handle);
myCallout.set_Value(1,
"test");
myCallout.set_Label2(1,
"SldWorks API");
myCallout.SetLeader(true, true);
myCallout.SetTargetPoint(1, 0.001, 0.001, 0);
myCallout.SetTargetPoint(2, -0.001, 0.001, 0);
myCallout.Position = mp;
myCallout.set_ValueInactive(0, true);
myCallout.TextBox = false;
myCallout.Display(true);
}
///
<summary>
///
The SldWorks swApp variable is pre-assigned for you.
///
</summary>
public
SldWorks swApp;
}
}
//
// calloutHandler.cs
//
using System;
using System.Collections.Generic;
using System.Text;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using SolidWorks.Interop.swpublished;
using System.Diagnostics;
namespace ExampleCS.csproj
{
[System.Runtime.InteropServices.ComVisible(true)]
public
class calloutHandler : SwCalloutHandler
{
#region
ISwCalloutHandler Members
bool
ISwCalloutHandler.OnStringValueChanged(object
pManipulator, int RowID, string Text)
{
Debug.Print("Text:
" + Text);
Debug.Print("Row:
" + RowID.ToString());
return
true;
}
#endregion
}
}