Code:
//------------------------------------------------------------------------------
//Callback Name: apply_cb
//------------------------------------------------------------------------------
public int apply_cb()
{
int errorCode = 0;
try
{
//---- Enter your callback code here -----
System.Collections.Generic.SortedList<double, NXOpen.Assemblies.Component> objlst = new System.Collections.Generic.SortedList<double, NXOpen.Assemblies.Component>(); Part workPart = theSession.Parts.Work;
int i = 0;
for (i = 0; i < selDev.GetProperties().GetTaggedObjectVector("SelectedObjects").Length; i++)
{
Point3d comppos;
Matrix3x3 compmatr;
if (String.Compare(selDev.GetProperties().GetTaggedObjectVector("SelectedObjects")[i].GetType().FullName.ToString(), "NXOpen.Assemblies.Component", true) != 0) continue;
NXOpen.Assemblies.Component comp = (NXOpen.Assemblies.Component)selDev.GetProperties().GetTaggedObjectVector("SelectedObjects")[i];
comp.GetPosition(out comppos, out compmatr);
objlst.Add(comppos.X, comp);
}
if (objlst.Count < 1) return 0; //keine Komponenten markiert
NXOpen.Assemblies.Component[] complst = new NXOpen.Assemblies.Component[objlst.Count];
i = 0;
foreach (NXOpen.Assemblies.Component comp in objlst.Values)
{
complst[i] = comp;
i++;
}
ErrorList errLst;
errLst = workPart.ComponentAssembly.ReplaceReferenceSetInOwners("MEIN_REFSET", complst); //Referenceset umschalten
errLst.Dispose();
bool isint = true;
int start = -1;
string praefix = txtPraefix.GetProperties().GetString("Value").Trim();
string txt = txtDev.GetProperties().GetString("Value").Trim();
string suffix = txtSuffix.GetProperties().GetString("Value").Trim();
try
{
start = int.Parse(txt);
}
catch
{
isint = false;
}
foreach (NXOpen.Assemblies.Component comp in objlst.Values)
{
NXObject[] nxobj = new NXObject[1];
nxobj[0] = comp;
AttributePropertiesBaseBuilder attpropbui = workPart.PropertiesManager.CreateAttributePropertiesBuilder(nxobj);
attpropbui.ObjectPicker = AttributePropertiesBaseBuilder.ObjectOptions.ComponentInstance;
attpropbui.Title = "MEIN_ATTRIBUTE";
string zieltext = praefix + txt + suffix;
if (isint)
{
zieltext = praefix + start.ToString() + suffix;
}
attpropbui.StringValue = zieltext;
nxobj[0] = attpropbui.Commit();
NXOpen.Annotations.SimpleDraftingAid nullAnnotations_SimpleDraftingAid = null;
NXOpen.Annotations.PmiNoteBuilder pminotebld;
pminotebld = workPart.Annotations.CreatePmiNoteBuilder(nullAnnotations_SimpleDraftingAid);
pminotebld.Origin.Anchor = NXOpen.Annotations.OriginBuilder.AlignmentPosition.MidCenter;
// ----------------------------------------------
// Dialogfenster Anfang Attribute
// ----------------------------------------------
string[] leer = new string[0];
pminotebld.Text.TextBlock.SetText(leer);
pminotebld.Text.TextBlock.AddAttributeReference(comp, "MEINE_VARIABLE", false, 1, 1);
pminotebld.Style.LetteringStyle.GeneralTextSize = 2.5;
pminotebld.Style.LetteringStyle.GeneralTextCharSpaceFactor = 0.5;
// hier muß das benannte Koordinatensystem "MEIN_CCSYS" ermittelt werden
CartesianCoordinateSystem ccsys = (CartesianCoordinateSystem)comp.FindObject("PROTO#HANDLE R-250690");
Xform xfrm = workPart.Xforms.CreateXform(ccsys, NXOpen.SmartObject.UpdateOption.AfterModeling);
pminotebld.Origin.Plane.PlaneMethod = NXOpen.Annotations.PlaneBuilder.PlaneMethodType.UserDefined;
pminotebld.Origin.Plane.UserDefinedPlane = xfrm;
Point pointfeat = (Point)comp.FindObject("PROTO#.Features|POINT(4)|POINT 1");
Point pointxfrm = workPart.Points.CreatePoint( pointfeat, null, NXOpen.SmartObject.UpdateOption.AfterModeling);
NXOpen.Annotations.Annotation.AssociativeOriginData assocOrig;
assocOrig.OriginType = NXOpen.Annotations.AssociativeOriginType.AtAPoint;
assocOrig.View = null;
assocOrig.ViewOfGeometry = null;
assocOrig.PointOnGeometry = null;
assocOrig.VertAnnotation = null;
assocOrig.VertAlignmentPosition = NXOpen.Annotations.AlignmentPosition.TopLeft;
assocOrig.HorizAnnotation = null;
assocOrig.HorizAlignmentPosition = NXOpen.Annotations.AlignmentPosition.TopLeft;
assocOrig.AlignedAnnotation = null;
assocOrig.DimensionLine = 0;
assocOrig.AssociatedView = workPart.ModelingViews.WorkView;
assocOrig.AssociatedPoint = pointxfrm;
assocOrig.OffsetAnnotation = null;
assocOrig.OffsetAlignmentPosition = NXOpen.Annotations.AlignmentPosition.TopLeft;
assocOrig.XOffsetFactor = 0.0;
assocOrig.YOffsetFactor = 0.0;
assocOrig.StackAlignmentPosition = NXOpen.Annotations.StackAlignmentPosition.Above;
pminotebld.Origin.SetAssociativeOrigin(assocOrig);
pminotebld.Commit();
pminotebld.Destroy();
attpropbui.Destroy();
start++;
}
errLst = workPart.ComponentAssembly.ReplaceReferenceSetInOwners("MODEL", complst); //Koordinatensystem ausblenden
errLst.Dispose();
}
catch (Exception ex)
{
//---- Enter your exception handling code here -----
errorCode = 1;
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
}
return errorCode;
}