Here is an example using the (seldom used?) scale param to linear_extrude.

```

$fn=30;

module 2D_shape() {

difference() {

offset(r=3) {

square(size=[20,30], center=true);

}

square(size=[20,30], center=true);

}

}

module 3D_projection (dist) {

linear_extrude(height = dist, center = true, convexity = 4, scale=0.1) {

children();

}

}

module shell (rad, thick) {

difference() {

sphere(r=rad, center=true);

sphere(r=rad-thick, center=true);

translate([0,0,rad/2])

cube([rad*2,rad*2,rad],center=true);

}

}

module result () {

difference() {

translate([0,0,24])

shell(20,1);

%3D_projection (30) 2D_shape();

}

}

result();

// shell(20,3);

```