I mostly use solid basic shapes (like e.g. a cylinder) which I modify using extrude or moving edges/vertices and then combine using the boolean modifier, which can do union, difference and intersection.
Sometimes you have to switch to carve in the modifier to get it to work correctly.
The important thing is to only work with watertight objects. So for your hollow cylinder example I’d do the following:
- Create a cylinder with the desired outer radius and height.
- Create a taller cylinder with the radius of hole.
- Move both onto the same location. The taller cylinder should stick out on bottom and top
- Select the outer cylinder -> modifiers -> add modifier boolean -> difference to inner cylinder
- Select the outer cylinder and export it with the option “Export only selection”
Ender 3 v3 SE.
That’s basically an Ender 3 with all important upgrades and tweaks from the factory.
This has received pretty good reviews in total.