public void Stack(Drawing.Axis axis, double space) { if (!this.Client.HasSelectedShapes(2)) { return; } if (space < 0.0) { throw new System.ArgumentOutOfRangeException("space", "must be non-negative"); } var application = this.Client.VisioApplication; using (var undoscope = new UndoScope(application, "Stack")) { if (axis == VA.Drawing.Axis.YAxis) { Align(null, VA.Drawing.AlignmentHorizontal.Center); } else { Align(null, VA.Drawing.AlignmentVertical.Center); } Distribute(axis, space); } }
public void Stack(Drawing.Axis axis, double space) { if (!this.Client.Selection.HasShapes(2)) { return; } if (space < 0.0) { throw new System.ArgumentOutOfRangeException(nameof(space), "must be non-negative"); } var application = this.Client.Application.Get(); using (var undoscope = this.Client.Application.NewUndoScope("Stack")) { if (axis == Drawing.Axis.YAxis) { this.Align(null, Drawing.AlignmentHorizontal.Center); } else { this.Align(null, Drawing.AlignmentVertical.Center); } this.Distribute(axis, space); } }
private static IVisio.VisUICmds _map_axis_to_uicmd(Drawing.Axis v) { switch (v) { case Drawing.Axis.XAxis: return(IVisio.VisUICmds.visCmdDistributeHSpace); case Drawing.Axis.YAxis: return(IVisio.VisUICmds.visCmdDistributeVSpace); default: throw new System.ArgumentOutOfRangeException(); } }
public void Distribute(Drawing.Axis axis, double d) { if (!this.Client.Document.HasActiveDocument) { return; } var application = this.Client.Application.Get(); var selection = this.Client.Selection.Get(); var shapeids = selection.GetIDs(); using (var undoscope = this.Client.Application.NewUndoScope("Distribute")) { ArrangeHelper.DistributeWithSpacing(application.ActivePage, shapeids, axis, d); } }
public void Distribute(IList <IVisio.Shape> target_shapes, Drawing.Axis axis) { this.Client.Application.AssertApplicationAvailable(); this.Client.Document.AssertDocumentAvailable(); int shape_count = this.GetTargetSelection(target_shapes); if (shape_count < 1) { return; } var cmd = ArrangeCommands._map_axis_to_uicmd(axis); var application = this.Client.Application.Get(); using (var undoscope = this.Client.Application.NewUndoScope("Distribute Shapes")) { application.DoCmd((short)cmd); } }
public static void DistributeWithSpacing(IVisio.Page page, IList <int> shapeids, Drawing.Axis axis, double spacing) { if (spacing < 0.0) { throw new System.ArgumentOutOfRangeException(nameof(spacing)); } if (shapeids.Count < 2) { return; } // Calculate the new Xfrms var sortpos = axis == Drawing.Axis.XAxis ? RelativePosition.PinX : RelativePosition.PinY; var delta = axis == Drawing.Axis.XAxis ? new Drawing.Size(spacing, 0) : new Drawing.Size(0, spacing); var sorted_shape_ids = ArrangeHelper.SortShapesByPosition(page, shapeids, sortpos); var input_xfrms = Shapes.XFormCells.GetCells(page, sorted_shape_ids); var output_xfrms = new List <Shapes.XFormCells>(input_xfrms.Count); var bb = ArrangeHelper.GetBoundingBox(input_xfrms); var cur_pos = new Drawing.Point(bb.Left, bb.Bottom); foreach (var input_xfrm in input_xfrms) { var new_pinpos = axis == Drawing.Axis.XAxis ? new Drawing.Point(cur_pos.X + input_xfrm.LocPinX.Result, input_xfrm.PinY.Result) : new Drawing.Point(input_xfrm.PinX.Result, cur_pos.Y + input_xfrm.LocPinY.Result); var output_xfrm = new 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 ArrangeHelper.update_xfrms(page, sorted_shape_ids, output_xfrms); }