示例#1
0
        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());
        }
示例#2
0
    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();
                }
            }
        }
    }
示例#3
0
    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());
        }
    }
示例#4
0
    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);
            }
        }
    }