public void DistributeSelectionOnAxis(Models.Axis axis) { var cmdtarget = this._client.GetCommandTargetPage(); IVisio.VisUICmds cmd; switch (axis) { case VisioScripting.Models.Axis.XAxis: cmd = IVisio.VisUICmds.visCmdDistributeHSpace; break; case VisioScripting.Models.Axis.YAxis: cmd = IVisio.VisUICmds.visCmdDistributeVSpace; break; default: throw new System.ArgumentOutOfRangeException(); } using (var undoscope = this._client.Undo.NewUndoScope(nameof(DistributeSelectionOnAxis))) { cmdtarget.Application.DoCmd((short)cmd); } }
public void DistributeOnAxis(VisioScripting.TargetSelection targetselection, Models.Axis axis) { targetselection = targetselection.ResolveToSelection(this._client); if (targetselection.Selection.Count < 2) { return; } IVisio.VisUICmds cmd; switch (axis) { case VisioScripting.Models.Axis.XAxis: cmd = IVisio.VisUICmds.visCmdDistributeHSpace; break; case VisioScripting.Models.Axis.YAxis: cmd = IVisio.VisUICmds.visCmdDistributeVSpace; break; default: throw new System.ArgumentOutOfRangeException(); } using (var undoscope = this._client.Undo.NewUndoScope(nameof(DistributeOnAxis))) { targetselection.Selection.Application.DoCmd((short)cmd); } }
public void DistributeSelectionOnAxis(Models.TargetShapes targets, Models.Axis axis, double spacing) { var cmdtarget = this._client.GetCommandTargetPage(); var page = cmdtarget.ActivePage; targets = targets.ResolveShapes(this._client); var targetids = targets.ToShapeIDs(); using (var undoscope = this._client.Undo.NewUndoScope(nameof(DistributeSelectionOnAxis))) { VisioScripting.Helpers.ArrangeHelper.DistributeWithSpacing(page, targetids, axis, spacing); } }
internal static void _distribute_with_spacing(IVisio.Page page, IList <int> shapeids, Models.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 == VisioScripting.Models.Axis.XAxis ? VisioScripting.Models.ShapeRelativePosition.PinX : VisioScripting.Models.ShapeRelativePosition.PinY; var delta = axis == VisioScripting.Models.Axis.XAxis ? new VisioAutomation.Geometry.Size(spacing, 0) : new VisioAutomation.Geometry.Size(0, spacing); var input_xfrms = VisioScripting.Models.ShapeXFormData._get_xfrms(page, shapeids); var bb = VisioScripting.Models.ShapeXFormData.GetBoundingBox(input_xfrms); var cur_pos = new VisioAutomation.Geometry.Point(bb.Left, bb.Bottom); var newpositions = new List <VisioAutomation.Geometry.Point>(shapeids.Count); foreach (var input_xfrm in input_xfrms) { var new_pinpos = axis == VisioScripting.Models.Axis.XAxis ? new VisioAutomation.Geometry.Point(cur_pos.X + input_xfrm.XFormLocPinX, input_xfrm.XFormPinY) : new VisioAutomation.Geometry.Point(input_xfrm.XFormPinX, cur_pos.Y + input_xfrm.XFormLocPinY); newpositions.Add(new_pinpos); cur_pos = cur_pos.Add(input_xfrm.XFormWidth, input_xfrm.XFormHeight).Add(delta); } // Apply the changes var sorted_shapeids = ArrangeHelper._sort_shapes_by_position(page, shapeids, sortpos); _modify_pin_positions(page, sorted_shapeids, newpositions); }