@gilboonet
thank you for that.
after a few mis-steps and with the guidance of editor prompts, i came up with this which seems to work for the sphere with a sound hole.
i'm tickled pink because i had wanted to provide form fields for the parameters also, but due to my newbieness, thought it would be additional html/javascripting.
function
main(params) {
var sr = params.sphereradius;
var sh = params.soundhole;
var wt = params.wallthickness;
var fn = params.fragmentnumber;
return [
difference(sphere({r:sr+wt, center:true, fn:fn}),
sphere({r:sr, center:true, fn:fn}),
cylinder ({r:sh, h:-(sr+wt)}))
];
}
function getParameterDefinitions() {
return [
{ name: 'sphereradius', type: 'number', initial: 47, caption: 'Sphere Radius' },
{ name: 'soundhole', type: 'number', initial: 15, caption: 'Sound Hole Radius' },
{ name: 'wallthickness', type: 'number', initial: 2, caption: 'Wall Thickness' },
{ name: 'fragmentnumber', type: 'number', initial: 100, caption: 'Fragment Number' },
];
}