private static NXOpen.NXObject[] Members(Snap.NX.Component comp) { var uFSession = NXOpen.UF.UFSession.GetUFSession(); Tag @null = Tag.Null; NXOpen.NXObject nxopenTaggedObject = null; var list = new List <NXOpen.NXObject>(); do { @null = uFSession.Assem.CycleEntsInPartOcc(comp.NXOpenTag, @null); if (@null != Tag.Null) { try { nxopenTaggedObject = GetObjectFromTag(@null); if (nxopenTaggedObject != null) { list.Add(nxopenTaggedObject); } } catch { } } }while (@null != Tag.Null); return(list.ToArray()); }
public override void Update(NXOpen.BlockStyler.UIBlock block) { if (block == selection0) { Snap.NX.Component component = selection0.GetSelectedObjects().FirstOrDefault() as NXOpen.Assemblies.Component; var com = component.Parent.Children.FirstOrDefault(u => u.Name == component.Name && u.GetAttributeInfo().Where(m => m.Title == SnapEx.ConstString.EACT_POSITIONING_DATE).Count() <= 0); if (com != null) { selection0.SetSelectedObjects(new TaggedObject[] { com.NXOpenComponent }); UpdateTreeControl(); } } else if (block == button0) //删除按钮 { var node = tree_control0.GetSelectedNodes().FirstOrDefault(); if (node != null) { var index = int.Parse(node.DisplayText) - 1; if (coms.Count > index) { var com = coms[index]; coms.Remove(com); com.Delete(); UpdateTreeControl(); } } } }
void UpdateTreeControl() { DeleteTreeNodes(); Snap.NX.Component component = selection0.GetSelectedObjects().FirstOrDefault() as NXOpen.Assemblies.Component; component.IsHighlighted = false; coms = new List <Snap.NX.Component>(); component.Parent.Children.ToList().ForEach(u => { if (u.Name == component.Name) { if (u.GetAttributeInfo().Where(m => m.Title == SnapEx.ConstString.EACT_POSITIONING_DATE).Count() > 0) { coms.Add(u); } } }); coms.OrderBy(u => u.GetDateTimeAttribute(SnapEx.ConstString.EACT_POSITIONING_DATE)); for (int i = coms.Count - 1; i >= 0; i--) { var com = coms[i]; var node = tree_control0.CreateNode((i + 1).ToString()); tree_control0.InsertNode(node, null, null, NXOpen.BlockStyler.Tree.NodeInsertOption.AlwaysFirst); node.SetColumnDisplayText(1, com.Position.X.ToString()); node.SetColumnDisplayText(2, com.Position.X.ToString()); node.SetColumnDisplayText(3, com.Position.X.ToString()); } }
void Perform(bool isHighlighted = false) { var workPart = theSession.Parts.Work; var body = selection0.SelectedObjects.FirstOrDefault() as Snap.NX.Body; var jiajuBody = selectionJiaju.SelectedObjects.FirstOrDefault() as Snap.NX.Body; tempObjs.ForEach(u => { Snap.NX.NXObject snapU = u; snapU.Delete(); }); tempObjs.Clear(); if (body != null) { Snap.NX.Body snapBody = body; //电极原点 var tempElecOrigin = SnapEx.Helper.GetElecMidPosition(workPart, body); if (tempElecOrigin == null) { theUI.NXMessageBox.Show("提示", NXOpen.NXMessageBox.DialogType.Information, "该电极未发现基准点!"); return; } var elecOrgin = (Snap.Position)tempElecOrigin; if (isHighlighted) { SnapEx.Create.DisplayModification(tempObjs); } bool isPatter = false; if (enum01.SelectedItem == "平移") { isPatter = toggleMovePatter.Value; } else { isPatter = toggleRotationPatter.Value; } int sum = 0; if (isPatter) { sum = (int)(expressionPatterSum.Value < 0?0:expressionPatterSum.Value); } double distance = expressionPatterDistance.Value; var vector = Snap.Vector.Unit(vectorPatter.Direction); if (body.NXOpenBody.OwningComponent != null && snapBody.Prototype != null) { var snapComponent = snapBody.OwningComponent;; NXOpen.Assemblies.Component component = snapComponent; var transForm = GetTransform(elecOrgin); for (int i = 0; i < sum + 1; i++) { Snap.NX.Component newComponent = workPart.ComponentAssembly.CopyComponents(new List <NXOpen.Assemblies.Component> { component }.ToArray()).First(); newComponent.Prototype.Bodies.First().SetDateTimeAttribute(EACT_POSITIONING_DATE, DateTime.Now); tempObjs.Add(newComponent); //平移旋转 var trans = transForm.Matrix; Matrix3x3 matrix = new Matrix3x3(); matrix.Xx = trans[0]; matrix.Xy = trans[4]; matrix.Xz = trans[8]; matrix.Yx = trans[1]; matrix.Yy = trans[5]; matrix.Yz = trans[9]; matrix.Zx = trans[2]; matrix.Zy = trans[6]; matrix.Zz = trans[10]; workPart.ComponentAssembly.MoveComponent(newComponent, new Vector3d(trans[3], trans[7], trans[11]), matrix); if (i != 0) { workPart.ComponentAssembly.MoveComponent(newComponent, (distance * i) * vector, new Snap.Orientation()); } } } else { NXOpen.Point point = null; if (!isHighlighted) { var tempPoint = SnapEx.Helper.GetElecMidPointInPart(Snap.Globals.WorkPart, snapBody); if (tempPoint != null) { point = tempPoint; } } for (int i = 0; i < sum + 1; i++) { var newBody = snapBody.Copy(); var guid = Guid.NewGuid().ToString(); newBody.SetStringAttribute(SnapEx.EactConstString.EACT_ELECT_GROUP, guid); newBody.SetDateTimeAttribute(EACT_POSITIONING_DATE, DateTime.Now); tempObjs.Add(newBody); var transForm = GetTransform(elecOrgin); if (i != 0) { transForm = Snap.Geom.Transform.Composition(transForm, Snap.Geom.Transform.CreateTranslation((distance * i) * vector)); } newBody.Move(transForm); if (point != null) { Snap.NX.Point newPoint = Snap.NX.Point.Wrap(point.Tag).Copy(); newPoint.SetStringAttribute(SnapEx.EactConstString.EACT_ELECT_GROUP, guid); newPoint.Move(transForm); } } } if (toggleJiaju.Value && jiajuBody != null) { for (int i = 0; i < sum + 1; i++) { Snap.NX.Body snapJiajuBody = jiajuBody; var newJiajuBody = snapJiajuBody.Copy(); var guid = Guid.NewGuid().ToString(); newJiajuBody.Layer = body.Layer; newJiajuBody.SetDateTimeAttribute(EACT_POSITIONING_DATE, DateTime.Now); tempObjs.Add(newJiajuBody); elecOrgin = new Snap.Position((snapBody.Box.MaxX + snapBody.Box.MinX) / 2, (snapBody.Box.MaxY + snapBody.Box.MinY) / 2, snapBody.Box.MinZ); var transForm = GetTransform(elecOrgin); if (i != 0) { transForm = Snap.Geom.Transform.Composition(transForm, Snap.Geom.Transform.CreateTranslation((distance * i) * vector)); } newJiajuBody.Move(transForm); } } if (isHighlighted) { SnapEx.Create.DisplayModification(tempObjs); } } }