Add Attribute to Feature and Include in Library Feature Example (C#)
This example shows how to add an attribute to a feature and include
that attribute with the feature if the feature is saved as a library feature.
This example also includes instructions on how to verify that the attribute
is included on each instance of the library feature.
//------------------------------------------
// Preconditions:
// 1. Open a new part document.
// 2. Sketch a rectangle and extrude it.
// 3. Sketch a straight slot that fits on a face of
// of
the just-created extrude and cut-extrude the slot.
// The
cut-extrude should be named Extrude2.
//
// Postconditions: The Extrude2
feature is added to the part document with
// an
attribute of TestAttribute, which
is visible in the
// FeatureManager
design tree.
//
// To verify that the attribute is included in a library
feature:
// 1. Drag the Extrude2 feature to the
Design Library and
// save
the library feature.
// 2. Close, and optionally save, the part document.
// 3. Open a model document and drag-and-drop the just-created library
// feature
on the model.
// 4. Expand the just-dropped library feature in the FeatureManager design
// tree.
//
// Extrude2
and TestAttribute should appear
beneath the
// just-dropped
library feature in the FeatureManager design tree.
//
// 5. Close, and optionally save, the model document.
//-----------------------------------------
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Diagnostics;
using System;
namespace AddAttributesToFeature_CSharp.csproj
{
partial
class SolidWorksMacro
{
public
void Main()
{
ModelDoc2
swModel = default(ModelDoc2);
ModelDocExtension
swModelDocExt = default(ModelDocExtension);
SelectionMgr
swSelectionMgr = default(SelectionMgr);
Feature
swFeature = default(Feature);
SolidWorks.Interop.sldworks.Attribute
swAttribute = default(SolidWorks.Interop.sldworks.Attribute);
AttributeDef
swAttributeDef = default(AttributeDef);
Face2
swFace = default(Face2);
Object[]
Faces = null;
bool
@bool = false;
swModel
= (ModelDoc2)swApp.ActiveDoc;
swModelDocExt
= swModel.Extension;
swSelectionMgr
= (SelectionMgr)swModel.SelectionManager;
//
Create attribute
swAttributeDef
= (AttributeDef)swApp.DefineAttribute("TestPropagationOfAttribute");
@bool
= swAttributeDef.AddParameter("TestAttribute",
(int)swParamType_e.swParamTypeDouble, 2.0, 0);
@bool
= swAttributeDef.Register();
//
Select the feature to which to add the attribute
@bool
= swModelDocExt.SelectByID2("Extrude2", "BODYFEATURE",
0, 0, 0, false, 0, null, 0);
swFeature
= (Feature)swSelectionMgr.GetSelectedObject6(1, -1);
Debug.Print("Name
of feature to which to add attribute: " + swFeature.Name);
//
Add the attribute to one of the feature's faces
Faces
= (Object[])swFeature.GetFaces();
swFace
= (Face2)Faces[0];
swAttribute
= swAttributeDef.CreateInstance5(swModel,
swFace, "TestAttribute", 0, (int)swInConfigurationOpts_e.swAllConfiguration);
swAttribute.IncludeInLibraryFeature = true;
Debug.Print("Include
attribute in library feature? " + swAttribute.IncludeInLibraryFeature);
swModel.ForceRebuild3(false);
}
public
SldWorks swApp;
}
}