Hi,
I come from Cinema4D and I am surprised by the absence of a feature that I use every day with C4D: you cannot resize a selection with precision.
In C4D, there is a panel for that, but not in Blender.
I found an existing tool in Blender (Scale bounding box), but you don’t know the size of the selection, only the scale.
I contacted an add-on developer to update the features of the Scale bounding box tool, but it costs a little money.
If you are interested in this add-on, please let me know.
If enough of us pay ten euros or dollars, I think that will convince him to work on it.
As a newcomer, I can’t upload a file, so here’s the link.
Do you want to scale selection as in what is selected? Like if you increase it’s size more verts get selected or something like that? Or do you want to scale selected geometry?
The mock up shows geometry being scaled. This should be possible… Shouldn’t be very difficult. It would be better to use an operator for that though and so the size would be defined in adjust last operation panel instead of sidebar, because that’s how operators work in Blender…
Hi bro!
I can provide you this add-on for free you don’t need to pay for it.
You just have to go at preferences and Go to then install and install that python file i send
then you can see the exact scale value at Tool Tab in modifiers side bar.
bl_info = {
"name": "Exact Resize Selection",
"author": "Umar Ansari",
"version": (2, 0),
"blender": (3, 0, 0),
"location": "View3D > Sidebar > Tool",
"description": "Resize selected objects/meshes to exact dimensions in Object or Edit Mode",
"category": "Object",
}
import bpy
import bmesh
from mathutils import Vector
class OBJECT_PT_exact_resize(bpy.types.Panel):
bl_label = "Exact Resize"
bl_idname = "OBJECT_PT_exact_resize"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'Tool'
def draw(self, context):
layout = self.layout
obj = context.object
if obj:
layout.prop(obj, 'dimensions', text='Dimensions')
layout.operator('object.resize_to_dimensions')
class OBJECT_OT_resize_to_dimensions(bpy.types.Operator):
bl_label = "Resize to Dimensions"
bl_idname = "object.resize_to_dimensions"
bl_description = "Resize selection to exact dimensions"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
obj = context.object
if obj is None:
self.report({'WARNING'}, "No object selected")
return {'CANCELLED'}
if obj.mode == 'OBJECT':
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
elif obj.mode == 'EDIT':
bm = bmesh.from_edit_mesh(obj.data)
sel_verts = [v.co for v in bm.verts if v.select]
if not sel_verts:
self.report({'WARNING'}, "No vertices selected")
return {'CANCELLED'}
# Calculate current bounding box
min_corner = Vector((min(v.x for v in sel_verts), min(v.y for v in sel_verts), min(v.z for v in sel_verts)))
max_corner = Vector((max(v.x for v in sel_verts), max(v.y for v in sel_verts), max(v.z for v in sel_verts)))
current_size = max_corner - min_corner
# Target size from object dimensions
target_size = obj.dimensions
# Avoid division by zero
scale_factors = Vector((target_size.x / current_size.x if current_size.x != 0 else 1,
target_size.y / current_size.y if current_size.y != 0 else 1,
target_size.z / current_size.z if current_size.z != 0 else 1))
# Scale selection around its center
center = (min_corner + max_corner) / 2
for v in sel_verts:
v -= center
v.x *= scale_factors.x
v.y *= scale_factors.y
v.z *= scale_factors.z
v += center
bmesh.update_edit_mesh(obj.data)
return {'FINISHED'}
classes = [OBJECT_PT_exact_resize, OBJECT_OT_resize_to_dimensions]
def register():
for cls in classes:
bpy.utils.register_class(cls)
def unregister():
for cls in reversed(classes):
bpy.utils.unregister_class(cls)
if __name__ == "__main__":
register()
You just have to copy this code and past it at notepad file and name it as you want then save it as py extension.
Are you joking? Did AI write that for you? This is not even close to what they are asking for and makes absolutely no sense.
Did lenogre said that
I updated the code!
…or maybe I wasn’t too harsh… Please stop spreading AI slop without understanding it.
This should be achievable with geometry node’s box selection node

This…
might be a possibility… (?)
A specific tool for this job would be very handy!
I do something which is probably very cumbersome now that I think about it: I use vertex snap to scale a selection to a precisely-placed vertex, using the 3D cursor to set the reference point and the active vertex as the specific point in the selection to scale to my precisely-placed vertex. I do this so frequently that it’s a sequence in my muscle memory, but a simple shortcut to let me just enter a target dimension to scale to would definitely be an improvement. At least, assuming the operator gave me enough control to avoid the need for further adjustment.
I can edit this post to try and describe my process a little better if you want to try it.
One easy shortcut if your goal will be grid-aligned is to eyeball the scaling and then grid-snap afterward with Shift+S > Selection to Grid (or Shift+S S). Obviously this won’t work if all of the vertices in the selection are not meant to be aligned to the grid.
Hm… thinking about that… I also do this by just separating the selection to a separate object, scaling it to wanted dimensions and then joining again. Might be useful.
How would this work best in Blender though?.. Do you for example most often scale the selection uniformly in all axis? Is it in global or local space, or maybe custom transform orientation?.. Maybe a scale operator that would work same as it does now but in absolute units instead of a ratio would be the most awesome thing.
I use this for scaling an object by known distance. Maybe it could work with selection only as well. But what distance do you use and how do you specify what distance should be scaled?.. A bit confused about the design of this kind of tool that would be native to Blender…
If I understand this right, in Blender you would just select the bottom vertices, snap the cursor to them and then scale toward the cursor, with as much precision as you want.
Bottom vertices of what? As I understand the desired result would be the current selection being some specific dimension. But how would it be measured? By it’s bounding box in world space, local space? That’s not very useful… or is it? I think current scale operator that would work exactly the same but with absolute units would be awesome, since it can use custom transform orientations and axis constraints. The problem with that is that replicating all the functionality of that in Python would be… a lot if at all possible.
In the picture the bounding box is touching the bottom 3 vertices, and is then scaled toward them. That’s the same as snapping the cursor to them and scaling toward the cursor.
Well, yes of course, but you cannot do that to precise dimensions without some helping geometry made to snap to.
Oh I see, you want to type in the dimensions of the bounding box rather than a scale value.
Well, I don’t, the OP does. I would want an operator that allows to scale selection in edit mode to some precise dimensions(more kind of Blender way that would be consistent with existing operators rather than tools as I don’t like tools), but the exact possible working principle is not clear enough for me to start coding. Like for example it could probably be an operator that uses the distance from 3d cursor to active element and then rescales it to some specific one using the 3d cursor as transform pivot point, but that’s… probably inconvenient to move the 3d cursor first and also how would one deal with axis constraints and custom transform orientations?..
I wonder if it’s possible to wrap the existing scale operator inside some custom modal operator and keep most of it’s functionality… Doesn’t sound elegant, but what you gonna do?.. Might not be possible though. …just thinking out loud…
I think just add an operator that creates a bounding box around the selection, you pick the side of the box you want to move away from the cursor or another side of the box. Modal might be overkill, there are only 6 sides, unless you want the bounding box to be other geometric shapes.
I might add this to the addon I just released, it seems to fit as another selection tool. ![]()
Sounds like a tool though. I would much prefer to constrain axis with X , Y , Z . I’ll think about this some more.
