0

Using Inkscape and wanting to proportionately resize a grouped object based on an included part of the object.

For example I have an image with an outline of something. Within that image is a simple square of some random size. I want to expand the image proportionately until that square is exactly 1"x1" (or whatever)

Presently, I draw a 1"x1" square then select the original object, lock the width and height, and corner drag it until that square looks like it matches my 1x1 square. Then I have to move it to get closer to overlay, and stretch again. Repeat until it looks as close as I can visually manage.

There must be an easier and more efficient way. Suggestions?

1

Method 1.

Add a square clipping mask. Scale the result to the wanted size. Then release the mask.

This receipe unfortunately is useless if one wants perfect snapping. In illustrator it's possible to drag the clipped object to snap with a wanted size reference object. In Inkscape one must input the wanted size numerically to the Width and Height boxes.

Method 2

The red shape and two blue pieces are a group. That group must be scaled so that the blue shape has the same width and height as the orange rectangle:

enter image description here

  1. Draw (with snaps ON) the same sized rectangle (green) as the blue shape, drag it well below and aside from the group. The idea is to make a group where the new rectangle is in the corner. Make a group.

enter image description here

  1. Move the group on the orange rectangle so that bottom right corners snap. Drag the group to the right size from the top left corner. The green rectangle snaps with the orange, if there are all snap to point options on.

enter image description here

3.The orange rectangle is perfectly under the green rectangle. Ungroup. Done.

  • actually it does work in Inkscape 0.92, with a clipping mask. I just tried it. – Billy Kerr Aug 22 '18 at 20:21
  • see screenshot here – Billy Kerr Aug 22 '18 at 20:26
  • @BillyKerr yes, but it doesn't snap like in illustrator. It must snap or it's not handy. But I have already a new idea. – user287001 Aug 22 '18 at 20:34
  • Ah, but you don't need to snap it to anything when scaling. You can just enter the values into the H and W boxes. – Billy Kerr Aug 22 '18 at 20:37
  • @BillyKerr the fix is inserted. – user287001 Aug 22 '18 at 21:21
1

I really like @user287001's suggestion to use a clipping mask. But I will also mention a different method: you could use guides, and snapping. No guessing (or eyeballing) required.

In the example below I set two guides 100mm apart. To set a guide to an exact position you can double click a guide and type in a value.

enter image description here

Set up snapping options as follows:

  • Enable snapping
  • Snap nodes, paths, and handles
  • Snap cusp nodes inc. rectangle corners

Then I repeat the transform four times until the corners hit the guides each time.

enter image description here

My final check shows the size of the square as 99.99mm x 99.99mm

  • Is there a reasonable way to set 2 guides a specific distance apart? – Bradley M. Small Aug 23 '18 at 15:39
  • @BradleyM.Small - yes, you can drop a guide and double click it to enter exact values. I'm going to add this to the answer for clarity. – Billy Kerr Aug 23 '18 at 18:16
0

This extension was made for this purpose:

https://gitlab.com/Moini/inkscape-realscale-extension

  1. Draw a straight line on your drawing with the Bézier tool. This line will indicate the part of the drawing that should be of a certain size.

  2. Select the line and the group.

  3. Open Extensions > Scaling > RealScale and enter a value / unit for the goal length of the line (and thus, the object that has its length, in any direction, not only horizontally or vertically).

  4. Make sure the rest is set to metric and 1:1 and you don't draw a scale.

  5. Hit apply.

  6. Done.

  • this requires an additional library not installed on my system here. I will have to try this one later when I am on a machine that I can install the other library. – Bradley M. Small Aug 23 '18 at 15:44
  • I installed the python library that it asked for. Then went through the process and got this: Traceback (most recent call last): File "realscale.py", line 31, in <module> inkex.localize() AttributeError: 'module' object has no attribute 'localize' – Bradley M. Small Aug 23 '18 at 17:21
  • What's your Inkscape version? Current is 0.92.3 - where it works (at least for me). It's also supposed to work with 0.91, so are you using the ancient 0.48(.x)? If so, please update to the current version (on Windows: uninstall old, reinstall new): inkscape.org/releases – Moini Aug 24 '18 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.