The following examples, shows how to get shapes and their sizing using plugins. Most of the examples are designed to be copied (just click on the code) and pasted into your own plugin. To understand how to use plugins, see Using plugins.
- Get all the shapes, and resize the page to fit with a border
- Get the currently selected shapes and resize
Get all the shapes, and resize the page to fit with a border
In this example, we shall open a new drawing and draw some shapes. Then we shall run our plugin, which will get the bounding box of all shapes, and reposition the shapes with a 10 pixel border and resize the page to fit all shapes.
var shapes = Vecta.activePage.shapes(), //get all shapes on the active page
select = new Vecta.Selection(shapes), //create a selection object and add in all shapes
box = select.box(), //get the total bounding box of all shapes
border = 10; //10 pixel border
//Calculate the offset to move shapes with a 10 pixel border
box.offset_x = border - box.x;
box.offset_y = border - box.y;
//Iterate through each shape and offset them
shapes.forEach(function (shape) {
//Read the current position, calling moveU without parameters will default to using pixels
var move = shape.moveU();
//Offset the shape
shape.move(move.x + box.offset_x, move.y + box.offset_y);
});
//Once we moved all shapes, we set the page size to the size of our merged bounding boxes
//plus 2 times the border, because we have left and right plus top and bottom borders
Vecta.activePage.width(box.width + border * 2) //set width
.height(box.height + border * 2); //set height
See also:
Get the currently selected shapes and resize
In this example, we wanted the user to select some shapes, and then run the plugin. The plugin will then resize all shapes to double their size, including stroke widths and font sizes.
var shapes = Vecta.selection.shapes(), //get the current selection object shapes
ratio = 2; //resize by a ratio of 2
shapes.forEach(function (shape) {
var size = shape.sizeU(), //Get the shape size in pixels
//Because stroke width may contain units, so we create a Vecta.Length object and convert to pixels
stroke_width = new Vecta.Length(shape.strokeWidth()).px(),
//Font size may return units, so we convert to pixels
font_size = new Vecta.Length(shape.fontSize()).px();
//Set the shape size to 2 times original
shape.size(size.width * ratio, size.height * ratio)
.strokeWidth(stroke_width * ratio)
.fontSize(font_size * ratio);
});
//Upon completion, we need to refresh the selection handles
Vecta.selection.refresh();