I'm not an artist and I don't play one on television, which means that my creation interests tend to the practical construction of 3D printed items. I've fallen into that camp, the one aimed at creating parts with specific dimensions.

If you don't have to operate at a strictly GUI level, you might want to look into OpenSCAD, which allows one to create a script of sorts, a series of steps used to create model components. It uses the common primitives such as a cube, sphere and cylinder, with modifiers, to create your objective. Many operators allow one to join, intersect, difference the created primitives.

One can create an object with direct parameters, but it's far more practical to use assignments and references in the code.

cube([10, 20, 5]);

will create a block that is 10 mm wide, 20 mm deep and 5 mm high.

block_wide = 10;
block_deep = 20;
block_high = 5;
cube([block_wide, block_deep, block_high]);

accomplishes the same thing, but allows those values to be used elsewhere, yet requires only one location to change all of them later, when you discover that bracket you made is just a tiny bit smaller than it should be.

There are tremendous resources in the OpenSCAD forum/mailing list as well as on countless YouTube videos, but that can be said of any useful program.

I've learned a bit of Fusion 360 (free for hobby use) but it also has a severe learning curve. What little I've learned comes in handy, as does using Meshmixer and occasionally Blender.

Every program becomes a tool for your use and if you can use only portions of many programs, you have a well-filled toolbox.

Good luck.