UG二次开发 移动一个组件中的约束到某个图层 (C#)


 1 public static void setDisplayedConstraintLayer(string asmName ,int layerId)
 2 {
 3     NXOpen.Part workPart = theSession.Parts.Work;
 4     NXOpen.Part displayPart = theSession.Parts.Display;
 5     int type, subtype;
 6     Tag _object = Tag.Null;
 7     if (workPart == displayPart)
 8         goto lp01;
 9     UFSession.GetUFSession().Obj.CycleObjsInPart(workPart.Tag, 160, ref _object);
10     while (_object != Tag.Null)
11     {
12         UFSession.GetUFSession().Obj.AskTypeAndSubtype(_object, out type, out subtype);
13         if (subtype == 2)
14         {
15             NXOpen.Positioning.DisplayedConstraint displayedConstraintObj = (NXOpen.Positioning.DisplayedConstraint)NXObjectManager.Get(_object);
16             NXOpen.DisplayableObject[] objectArray1 = new NXOpen.DisplayableObject[1];
17             objectArray1[0] = displayedConstraintObj;
18             workPart.Layers.MoveDisplayableObjects(layerId, objectArray1);
19         }
20         UFSession.GetUFSession().Obj.CycleObjsInPart(workPart.Tag, 160, ref _object);
21     }
22 
23 lp01:
24     UFSession.GetUFSession().Obj.CycleObjsInPart(displayPart.Tag, 160, ref _object);
25     while (_object != Tag.Null)
26     {
27         UFSession.GetUFSession().Obj.AskTypeAndSubtype(_object, out type, out subtype);
28         if (subtype == 2)
29         {
30             NXOpen.Positioning.DisplayedConstraint displayedConstraintObj = (NXOpen.Positioning.DisplayedConstraint)NXObjectManager.Get(_object);
31             if (displayedConstraintObj.GetContextComponent().DisplayName == asmName)
32             {
33                 NXOpen.DisplayableObject[] objectArray1 = new NXOpen.DisplayableObject[1];
34                 objectArray1[0] = displayedConstraintObj;
35                 displayPart.Layers.MoveDisplayableObjects(layerId, objectArray1);
36             }
37         }
38         UFSession.GetUFSession().Obj.CycleObjsInPart(displayPart.Tag, 160, ref _object);
39     }
40 }