A spider web is mostly a 2D drawing. A 3D-printable bowl is a 3D shape. The trick in this post is to draw the web as a flat CrossSection , extrude it straight down, and subtract it from a bowl shell. The same trick works for any pattern: leaves, stars, bats. Everything uses manifold3d and plain Python.
1. A bowl from two spheres
A shallow bowl is a spherical cap. For a cap of rim radius Rb and height H , the sphere radius is Rs = (Rb^2 + H^2) / (2 H) .
from manifold3d import Manifold , CrossSection as CS
Rb , H = 52.0 , 30.0 Rs = ( Rb * Rb + H * H ) / ( 2 * H )
def sph ( r , zc ): return Manifold . sphere ( r , 96 ). translate ([ 0 , 0 , zc ])
shell = ( sph ( Rs , Rs ) - sph ( Rs - 2.8 , Rs )). trim_by_plane ([ 0 , 0 , - 1 ], - H ) shell = shell + Manifold . cylinder ( 2.8 , 16 , 16 , 64 ) # flat foot to print on
Enter fullscreen mode
Exit fullscreen mode
trim_by_plane keeps the side the normal points to. The normal [0, 0, -1] with offset -H keeps everything below z = H .
2.…