AI CAD prompt: Raised-rib draining soap dish Create a new owned Nora3D part document. Use millimeters, world XY as the base and +Z as height. These dimensions are example defaults, not a claim of compatibility with a specific product. Retain named editable native features. 1. Create **Tray**, a 132 x 88 x 18 mm box, centered at X=0, Y=0, with its bottom at Z=4. 2. Create **Foot -55 -33**, a 10 x 10 x 4 mm box, centered at X=-55, Y=-33, with its bottom at Z=0. 3. Create **Foot -55 33**, a 10 x 10 x 4 mm box, centered at X=-55, Y=33, with its bottom at Z=0. 4. Create **Foot 55 -33**, a 10 x 10 x 4 mm box, centered at X=55, Y=-33, with its bottom at Z=0. 5. Create **Foot 55 33**, a 10 x 10 x 4 mm box, centered at X=55, Y=33, with its bottom at Z=0. 6. Unite **Tray**, **Foot -55 -33**, **Foot -55 33**, **Foot 55 -33**, **Foot 55 33** as **Footed tray**. Require one connected solid. 7. Create **Soap compartment**, a 120 x 76 x 32 mm box, centered at X=0, Y=0, with its bottom at Z=8. 8. Create **Drain -40**, a 6 x 56 x 8 mm box, centered at X=-40, Y=0, with its bottom at Z=3. 9. Create **Drain -20**, a 6 x 56 x 8 mm box, centered at X=-20, Y=0, with its bottom at Z=3. 10. Create **Drain 0**, a 6 x 56 x 8 mm box, centered at X=0, Y=0, with its bottom at Z=3. 11. Create **Drain 20**, a 6 x 56 x 8 mm box, centered at X=20, Y=0, with its bottom at Z=3. 12. Create **Drain 40**, a 6 x 56 x 8 mm box, centered at X=40, Y=0, with its bottom at Z=3. 13. Subtract **Soap compartment**, **Drain -40**, **Drain -20**, **Drain 0**, **Drain 20**, **Drain 40** from **Footed tray**, consuming the tool solids; name the result **Drained tray**. 14. Create **Drying rib -50**, a 3 x 64 x 3 mm box, centered at X=-50, Y=0, with its bottom at Z=8. 15. Create **Drying rib -30**, a 3 x 64 x 3 mm box, centered at X=-30, Y=0, with its bottom at Z=8. 16. Create **Drying rib -10**, a 3 x 64 x 3 mm box, centered at X=-10, Y=0, with its bottom at Z=8. 17. Create **Drying rib 10**, a 3 x 64 x 3 mm box, centered at X=10, Y=0, with its bottom at Z=8. 18. Create **Drying rib 30**, a 3 x 64 x 3 mm box, centered at X=30, Y=0, with its bottom at Z=8. 19. Create **Drying rib 50**, a 3 x 64 x 3 mm box, centered at X=50, Y=0, with its bottom at Z=8. 20. Unite **Drained tray**, **Drying rib -50**, **Drying rib -30**, **Drying rib -10**, **Drying rib 10**, **Drying rib 30**, **Drying rib 50** as **Soap dish**. Require one connected solid. ## Public controls | Control | Default | Range | Step | Meaning | | --- | ---: | --- | ---: | --- | | Soap compartment width | 120 | 112-124 | 1 | Inside width; the outside footprint stays fixed. | | Soap compartment length | 76 | 68-80 | 1 | Inside length; the outside footprint stays fixed. | | Rim height above feet | 18 | 14-22 | 1 | Tray height measured from the top of the 4 mm feet. | Keep all other features, positions and dimensions fixed. Expose only the listed controls. Radius means radius, not diameter; include physical clearance when choosing dimensions. Preserve open cavities, drainage paths and a single connected solid throughout the stated ranges.