I'm trying to scale or resize an object to a specific size by picking an edge from that mesh, and then setting that edge to a new measurement, automatically resizing the whole object proportionally. In other poly-based 3d software that I use, it is really easy to do. The tool is called 'tape measure' tool which has the option to resize). How to do that in Blender?
-
2https://blender.stackexchange.com/questions/87243/how-to-scale-dimensions-proportionally-to-a-specific-size – Duarte Farrajota Ramos Mar 26 '22 at 01:41
-
How to scale an object by selecting a reference linear distance (from point A to point B), and then simply typing the desired new number distance we want. Is that possible? – Emet Derek Mar 26 '22 at 03:11
-
maybe the Archimesh or Archicad addons? – moonboots Mar 26 '22 at 08:39
-
1Does this answer your question? How to scale dimensions proportionally to a specific size? – Chris Mar 26 '22 at 08:53
-
I found something similar but not exactly what I was looking for, I'm talking about 'CAD Transform' addon for blender, which can do the job, but in my opinion it is a little bit tricky, and not as simple as 'tape measure tool' from the other software that I use. Thanks people, I appreciate all your answers. – Emet Derek Mar 27 '22 at 00:41
1 Answers
Go tab into Edit Mode and tick Edge Length under Overlays so you can see the length of any selected edge. You can set the length of the selected edge using bpy.ops.object.mesh_edge_length_set().
You can easily resize the entire mesh proportionally after resizing the selected edge using the following script. Simply select an edge and go to Text Editor under the Scripting Tab. Then input the new length value for the set_my_selected_edge_to_length variable in the script and click Run Script.
import bpy
import bmesh
set_my_selected_edge_to_length = 1.43 #your new length for selected edge
context = bpy.context
ob = context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)
def resize(scale):
ob.scale = (scale, scale, scale)
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.ops.object.transform_apply(scale=True)
for e in bm.edges:
if not e.select:
continue
scale = set_my_selected_edge_to_length / e.calc_length()
resize(scale)
break
bm.free()
The Edit Mesh Tools has also pretty useful functions that also include edge resizing. I recommend installing this addon under menu Edit > Preferences > Add-ons > Edit Mesh Tools
The tools are available under Edit Tab > Mesh Tools.
- 10,995
- 8
- 23
- 51



