Exemplo n.º 1
0
        private static IVisio.VisUICmds _map_axis_to_uicmd(VA.Drawing.Axis v)
        {
            switch (v)
            {
            case VA.Drawing.Axis.XAxis: return(IVisio.VisUICmds.visCmdDistributeHSpace);

            case VA.Drawing.Axis.YAxis: return(IVisio.VisUICmds.visCmdDistributeVSpace);

            default: throw new System.ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 2
0
        public void Distribute(VA.Drawing.Axis axis, double d)
        {
            if (!this.Client.HasActiveDocument)
            {
                return;
            }
            var application = this.Client.VisioApplication;
            var selection   = this.Client.Selection.Get();
            var shapeids    = selection.GetIDs();

            using (var undoscope = new UndoScope(application, "Distribute"))
            {
                ArrangeHelper.DistributeWithSpacing(application.ActivePage, shapeids, axis, d);
            }
        }
Exemplo n.º 3
0
        public void Distribute(IList <IVisio.Shape> target_shapes, VA.Drawing.Axis axis)
        {
            this.AssertApplicationAvailable();
            this.AssertDocumentAvailable();

            int shape_count = this.GetTargetSelection(target_shapes);

            if (shape_count < 1)
            {
                return;
            }

            var cmd = _map_axis_to_uicmd(axis);

            using (var undoscope = new VA.Application.UndoScope(this.Client.VisioApplication, "Distribute Shapes"))
            {
                this.Client.VisioApplication.DoCmd((short)cmd);
            }
        }
Exemplo n.º 4
0
        public static void DistributeWithSpacing(IVisio.Page page, IList <int> shapeids, VA.Drawing.Axis axis, double spacing)
        {
            if (page == null)
            {
                throw new System.ArgumentNullException("page");
            }

            if (shapeids == null)
            {
                throw new System.ArgumentNullException("shapeids");
            }

            if (spacing < 0.0)
            {
                throw new System.ArgumentOutOfRangeException("spacing");
            }

            if (shapeids.Count < 2)
            {
                return;
            }

            // Calculate the new Xfrms
            var sortpos = axis == VA.Drawing.Axis.XAxis
                ? PositionOnShape.PinX
                : PositionOnShape.PinY;

            var delta = axis == VA.Drawing.Axis.XAxis
                ? new VA.Drawing.Size(spacing, 0)
                : new VA.Drawing.Size(0, spacing);


            var sorted_shape_ids = ArrangeHelper.SortShapesByPosition(page, shapeids, sortpos);
            var input_xfrms      = ArrangeHelper.GetXForm(page, sorted_shape_ids);;
            var output_xfrms     = new List <VA.Shapes.XFormCells>(input_xfrms.Count);
            var bb      = GetBoundingBox(input_xfrms);
            var cur_pos = new VA.Drawing.Point(bb.Left, bb.Bottom);

            foreach (var input_xfrm in input_xfrms)
            {
                var new_pinpos = axis == VA.Drawing.Axis.XAxis
                    ? new VA.Drawing.Point(cur_pos.X + input_xfrm.LocPinX.Result, input_xfrm.PinY.Result)
                    : new VA.Drawing.Point(input_xfrm.PinX.Result, cur_pos.Y + input_xfrm.LocPinY.Result);

                var output_xfrm = new VA.Shapes.XFormCells();
                output_xfrm.PinX = new_pinpos.X;
                output_xfrm.PinY = new_pinpos.Y;
                output_xfrms.Add(output_xfrm);

                cur_pos = cur_pos.Add(input_xfrm.Width.Result, input_xfrm.Height.Result).Add(delta);
            }

            // Apply the changes
            update_xfrms(page, sorted_shape_ids, output_xfrms);
        }