for developers
Sign In
Join
Discussions
Documentation
Tutorials
Examples
Editor
Scene
Import Scene
Export Scene
Load Last Scene
Save Current Scene
Model
Save Model
Upload Model
Show Printability
Render
Preferences
Help
Reference Guide
Examples
Tutorials
Generate
Save Model
Reset Params
Check Model
var params=[{name:"image",label:"Pattern Image",desc:"Image",type:"uri",defaultVal:"http:\/\/www.shapeways.com\/rrstatic\/img\/shapejs\/creator\/sw_logo.png"}];var voxelSize=0.05*MM;function makeImage(path,width,height,thickness){var img=new Image3D(path,width,height,thickness);img.setBaseThickness(0.0);img.setBlurWidth(0.5*voxelSize);img.setUseGrayscale(false);return img;} function main(args){var imageThickness=10*MM;var ringSize=19.76*MM;var ringThickness=1.5*MM;var ringWidth=2*MM;var bezelAngle=Math.PI/8;var bezelHeight=1.5*MM;var imagePath=args.image;var imageScale=0.95;var inRad=ringSize/2;var outRad=inRad+ringThickness;var By=inRad+bezelHeight;var sinA=Math.sin(bezelAngle);var BC=(Ay-By)*Math.tan(bezelAngle);var Ay=outRad/sinA;var Fy=Ay*sinA*sinA;var bezelBase=Fy;var bezelTop=By;var margin=0.2*MM;var gridWidth=2*outRad+2*margin;var gridHeight=2*bezelTop+2*margin;var Cx=(Ay-By)*Math.tan(bezelAngle);var Dx=Cx*(1+bezelHeight/(Ay-By));var cutR=inRad;var Ex=ringWidth/2+cutR;var dd=1*MM;var Ey=inRad-Math.sqrt(cutR*cutR-(Ex-Dx+dd)*(Ex-Dx+dd));var imageWidth=imageScale*Cx*2;var imageHeight=imageWidth;var image=makeImage(imagePath,imageWidth,imageHeight,imageThickness);var imageTransform=new CompositeTransform();imageTransform.add(new Rotation(new Vector3d(1,0,0),-Math.PI/2));imageTransform.add(new Translation(0,By,0));image.setTransform(imageTransform);var ringBase=new Sphere(outRad);var bezel=new Intersection();bezel.add(new Cone(new Vector3d(0,Ay,0),new Vector3d(0,-1,0),bezelAngle));bezel.add(new Plane(new Vector3d(0,1,0),bezelTop));bezel.add(new Plane(new Vector3d(0,-1,0),-bezelBase));bezel.setBlend(0.1*MM);var ring=new Union();ring.add(ringBase);ring.add(bezel);var cutoff=new Union();var rounding=0.2*MM;var gw=gridWidth;var gw2=gridWidth/2;cutoff.add(new Cylinder(new Vector3d(0,0,-gw2),new Vector3d(0,0,gw2),inRad));cutoff.add(new Cylinder(new Vector3d(-gw2,Ey,Ex),new Vector3d(gw2,Ey,Ex),cutR));cutoff.add(new Cylinder(new Vector3d(-gw2,Ey,-Ex),new Vector3d(gw2,Ey,-Ex),cutR));cutoff.add(new Box(0,-inRad,Ex+rounding/2,gw,2*(inRad+Ey),2*cutR));cutoff.add(new Box(0,-inRad,-Ex-rounding/2,gw,2*(inRad+Ey),2*cutR));cutoff.setBlend(rounding);var fullRing=new Subtraction(ring,cutoff);fullRing.setBlend(0.1*MM);var ringWithImage=new Subtraction(fullRing,image);var bounds=new Bounds(-gridWidth/2,gridWidth/2,-gridHeight/2,gridHeight/2,-gridWidth/2,gridWidth/2);var scene=new Scene(ringWithImage,bounds,voxelSize);scene.setName("SignetRing");return scene;}
Preferences
Close
Printability Check
Region check
Voxel size
Number of regions
Largest region
Close