Esempio n. 1
0
        public void MoveTo(XYZ point, AlignType alignType)
        {
            if (!Parent.Pinned)
            {
                XYZ displacementVector = new XYZ();

                switch (alignType)
                {
                case AlignType.Left:
                    displacementVector = point - UpLeft;
                    break;

                case AlignType.Right:
                    displacementVector = point - UpRight;
                    break;

                case AlignType.Up:
                    displacementVector = point - UpRight;
                    break;

                case AlignType.Down:
                    displacementVector = point - DownRight;
                    break;

                case AlignType.Center:
                    displacementVector = point - Center;
                    break;

                case AlignType.Middle:
                    displacementVector = point - Center;
                    break;

                case AlignType.Vertically:
                    displacementVector = point - Center;
                    break;

                case AlignType.Horizontally:
                    displacementVector = point - Center;
                    break;

                case AlignType.UntangleVertically:
                    displacementVector = point - UpLeft;
                    break;

                case AlignType.UntangleHorizontally:
                    displacementVector = point - UpLeft;
                    break;

                default:
                    break;
                }

                if (!displacementVector.IsAlmostEqualTo(new XYZ(0, 0, 0)))
                {
                    Transform tr = Transform.CreateTranslation(_ownerView.CropBox.Transform.OfVector(displacementVector));

                    if (Parent.GetType() == typeof(IndependentTag))
                    {
                        IndependentTag tag    = Parent as IndependentTag;
                        CustomLeader   leader = new CustomLeader();
                        if (tag.HasLeader && tag.LeaderEndCondition == LeaderEndCondition.Free)
                        {
                            leader = new CustomLeader(tag.LeaderEnd, new XYZ(0, 0, 0));
                        }

                        tag.TagHeadPosition = tr.OfPoint(tag.TagHeadPosition);

                        if (tag.HasLeader && tag.LeaderEndCondition == LeaderEndCondition.Free)
                        {
                            tag.LeaderEnd = leader.End;
                        }
                    }
                    else if (Parent.GetType() == typeof(TextNote))
                    {
                        List <CustomLeader> leaders = new List <CustomLeader>();
                        TextNote            note    = Parent as TextNote;
                        if (note.LeaderCount != 0)
                        {
                            foreach (Leader leader in note.GetLeaders())
                            {
                                leaders.Add(new CustomLeader(leader));
                            }
                        }

                        note.Coord = tr.OfPoint(note.Coord);

                        if (leaders.Count != 0)
                        {
                            int i = 0;
                            foreach (Leader leader in note.GetLeaders())
                            {
                                leader.End   = leaders[i].End;
                                leader.Elbow = leaders[i].Elbow;
                                i++;
                            }
                        }
                    }
                    else if (Parent.GetType().IsSubclassOf(typeof(SpatialElementTag)))
                    {
                        SpatialElementTag tag = Parent as SpatialElementTag;

                        CustomLeader leader = new CustomLeader();
                        if (tag.HasLeader)
                        {
                            leader = new CustomLeader(tag.LeaderEnd, new XYZ(0, 0, 0));
                        }

                        Parent.Location.Move(_ownerView.CropBox.Transform.OfVector(displacementVector));

                        if (tag.HasLeader)
                        {
                            tag.LeaderEnd = leader.End;
                        }
                    }
                    else
                    {
                        Parent.Location.Move(_ownerView.CropBox.Transform.OfVector(displacementVector));
                    }
                }
            }
        }
        public void MoveTo(XYZ point, AlignType alignType)
        {
            XYZ xyz = new XYZ();

            switch (alignType)
            {
            case AlignType.Left:
                xyz = XYZ.op_Subtraction(point, this.UpLeft);
                break;

            case AlignType.Right:
                xyz = XYZ.op_Subtraction(point, this.UpRight);
                break;

            case AlignType.Up:
                xyz = XYZ.op_Subtraction(point, this.UpRight);
                break;

            case AlignType.Down:
                xyz = XYZ.op_Subtraction(point, this.DownRight);
                break;

            case AlignType.Center:
                xyz = XYZ.op_Subtraction(point, this.Center);
                break;

            case AlignType.Middle:
                xyz = XYZ.op_Subtraction(point, this.Center);
                break;

            case AlignType.Vertically:
                xyz = XYZ.op_Subtraction(point, this.Center);
                break;

            case AlignType.Horizontally:
                xyz = XYZ.op_Subtraction(point, this.Center);
                break;

            case AlignType.UntangleVertically:
                xyz = XYZ.op_Subtraction(point, this.UpLeft);
                break;

            case AlignType.UntangleHorizontally:
                xyz = XYZ.op_Subtraction(point, this.UpLeft);
                break;
            }
            Transform translation = Transform.CreateTranslation(this._ownerView.get_CropBox().get_Transform().OfVector(xyz));

            if (((object)this.Parent).GetType() == typeof(IndependentTag))
            {
                IndependentTag parent       = this.Parent as IndependentTag;
                CustomLeader   customLeader = new CustomLeader();
                if (parent.get_HasLeader() && parent.get_LeaderEndCondition() == 1)
                {
                    customLeader = new CustomLeader(parent.get_LeaderEnd(), new XYZ(0.0, 0.0, 0.0));
                }
                parent.set_TagHeadPosition(translation.OfPoint(parent.get_TagHeadPosition()));
                if (!parent.get_HasLeader() || parent.get_LeaderEndCondition() != 1)
                {
                    return;
                }
                parent.set_LeaderEnd(customLeader.End);
            }
            else if (((object)this.Parent).GetType() == typeof(TextNote))
            {
                List <CustomLeader> customLeaderList = new List <CustomLeader>();
                TextNote            parent           = this.Parent as TextNote;
                if ((uint)parent.get_LeaderCount() > 0U)
                {
                    using (IEnumerator <Leader> enumerator = ((IEnumerable <Leader>)parent.GetLeaders()).GetEnumerator())
                    {
                        while (((IEnumerator)enumerator).MoveNext())
                        {
                            Leader current = enumerator.Current;
                            customLeaderList.Add(new CustomLeader(current));
                        }
                    }
                }
                ((TextElement)parent).set_Coord(translation.OfPoint(((TextElement)parent).get_Coord()));
                if ((uint)customLeaderList.Count <= 0U)
                {
                    return;
                }
                int index = 0;
                using (IEnumerator <Leader> enumerator = ((IEnumerable <Leader>)parent.GetLeaders()).GetEnumerator())
                {
                    while (((IEnumerator)enumerator).MoveNext())
                    {
                        Leader current = enumerator.Current;
                        current.set_End(customLeaderList[index].End);
                        current.set_Elbow(customLeaderList[index].Elbow);
                        ++index;
                    }
                }
            }
            else if (((object)this.Parent).GetType().IsSubclassOf(typeof(SpatialElementTag)))
            {
                SpatialElementTag parent       = this.Parent as SpatialElementTag;
                CustomLeader      customLeader = new CustomLeader();
                if (parent.get_HasLeader())
                {
                    customLeader = new CustomLeader(parent.get_LeaderEnd(), new XYZ(0.0, 0.0, 0.0));
                }
                parent.set_TagHeadPosition(translation.OfPoint(parent.get_TagHeadPosition()));
                if (!parent.get_HasLeader())
                {
                    return;
                }
                parent.set_LeaderEnd(customLeader.End);
            }
            else
            {
                this.Parent.get_Location().Move(this._ownerView.get_CropBox().get_Transform().OfVector(xyz));
            }
        }