Move Annotations to Notes Area Annotation View Example (C#)
This example shows how to move
all annotations to the Notes Area annotation view.
//----------------------------------------------
// Preconditions:
// 1. Open install_dir\samples\api\button.sldprt.
// 2. Add a note to the *Top annotation view by double-clicking
// *Top in the Annotations folder in the FeatureManager design
// tree and clicking Insert > Annotations > Note. If prompted
// to turn on feature dimensions display, click No.
// 3. Repeat step 2 to add a note to the *Front annotation view.
// 4. Double-click the Unassigned Items annotation view in the
// Annotations folder in the FeatureManager design tree.
// 5. Open the Immediate window.
//
// Postconditions:
// 1. Examine the Immediate window.
// 2. Double-click each annotation view in the FeatureManager
// design tree to verify that all annotations were moved
// from *Front and *Top to Notes Area only. If prompted to turn
// on feature dimensions display, click No.
//----------------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
using System;
using System.Diagnostics;
namespace IAnnotationViewCSharp.csproj
{
partial class SolidWorksMacro
{
public void Main()
{
ModelDoc2 swModel = default(ModelDoc2);
ModelDocExtension swModelExt = default(ModelDocExtension);
object[] swAnnViews = null;
object[] annotations = null;
Annotation[] annToMove = new Annotation[2];
AnnotationView swAnnView = default(AnnotationView);
Annotation swAnn = default(Annotation);
Feature swFeat = default(Feature);
int i = 0;
int j = 0;
int k = 0;
bool status = false;
swModel = (ModelDoc2)swApp.ActiveDoc;
swModelExt = (ModelDocExtension)swModel.Extension;
//Get the annotation views, number of annotation views,
//and their names, and hides annotations in annotation views
//that are not activated
swAnnViews = (object[])swModelExt.AnnotationViews;
Debug.Print("Number of annotation views: " + swModelExt.AnnotationViewCount);
for (i = 0; i <= swModelExt.AnnotationViewCount - 1; i++)
{
swAnnView = (AnnotationView)swAnnViews[i];
swFeat = (Feature)swAnnView;
Debug.Print(" " + swFeat.Name);
status = swAnnView.Hide();
//status dependent on whether the annotation view is activated
//Only Unassigned Items is activated
Debug.Print(" Hide: " + status);
}
//Iterate through each annotation view and its annotations
//Print each annotation name
//Add all annotations to an array to move them
k = 0;
Debug.Print(" Number of annotations in annotation view: ");
for (i = 0; i <= swModelExt.AnnotationViewCount - 1; i++)
{
swAnnView = (AnnotationView)swAnnViews[i];
swAnnView.Activate();
annotations = (object[])swAnnView.Annotations;
swFeat = (Feature)swAnnView;
Debug.Print(" " + swFeat.Name + " = " + swAnnView.AnnotationCount);
if ((annotations != null))
{
for (j = 0; j <= swAnnView.AnnotationCount - 1; j++)
{
swAnn = (Annotation)annotations[j];
if (k >= 0)
{
annToMove[k] = (Annotation)swAnn;
k = k + 1;
}
Debug.Print(" Annotation names:");
Debug.Print(" " + swAnn.GetName());
}
}
}
//Move all annotations to the Notes Area annotation view
Debug.Print("Move all annotations to Notes Area annotation view:");
k = 0;
for (i = 0; i <= swModelExt.AnnotationViewCount - 1; i++)
{
swAnnView = (AnnotationView)swAnnViews[i];
swAnnView.Activate();
swFeat = (Feature)swAnnView;
if (swFeat.Name == "Notes Area")
{
status = swAnnView.MoveAnnotations(annToMove);
Debug.Print(" Annotations moved: " + status);
status = swAnnView.Show();
//status should be false because annotation was activated
Debug.Print(" Show: " + status);
}
}
}
/// <summary>
/// The SldWorks swApp variable is pre-assigned for you.
/// </summary>
public SldWorks swApp;
}
}