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 uiParams=[{name:"image",desc:"Image",type:"uri",defaultVal:"https:\/\/static1.sw-cdn.net\/files\/cms\/shapejs\/images\/icosa_sphere_part_thin20.png"},{name:"xcoff",desc:"xcoff",type:"double","rangeMin":-1,"rangeMax":2,"step":0.05,defaultVal:1,onChange:"transformChanged"},{name:"ycoff",desc:"ycoff",type:"double","rangeMin":-1,"rangeMax":2,"step":0.05,defaultVal:1,onChange:"transformChanged"},{name:"zrot",desc:"zrot",type:"double","rangeMin":-180,"rangeMax":180,"step":0.05,defaultVal:0,onChange:"transformChanged"},{name:"text",desc:"Text",type:"string",defaultVal:"Shapeways",onChange:"textChanged"}];var vs=0.2*MM;var thickness=2.1*MM;var radius=77.5*MM-thickness/2;var rimHeight=2*MM;var footHeight=2.5*MM;var footThickness=2*MM;var footRatio=1/3;var TAU=(Math.sqrt(5)+1)/2;var PI=Math.PI;var overlap=0.5*MM;var TORAD=PI/180;var imgTrans;var imgBox;var scene;function getIcosahedralSymmetry(){var v5=new Vector3d(1,0,TAU);var v3=new Vector3d(0,1/TAU,TAU);var p35=new Vector3d();p35.cross(v3,v5);p35.normalize();var splanes=new Array();var count=0;splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(-1,0,0),0.0);splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(0,-1,0),0.0);splanes[count++]=new ReflectionSymmetry.getPlane(p35,0.0);return new ReflectionSymmetry(splanes);} function getSphereBend(fixedRadius,bendAmount,offset){var center=fixedRadius*fixedRadius/bendAmount;var radius=Math.sqrt(center*center+fixedRadius*fixedRadius);var cp=new CompositeTransform();cp.add(new PlaneReflection(new Vector3d(0,0,1),new Vector3d(0,0,offset)));cp.add(new SphereInversion(new Vector3d(0,0,-center+offset),radius));return cp;} function getImageReflection(xsize,ysize){var splanes=new Array();var count=0;splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(-1,0,0),xsize);splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(0,-1,0),ysize);splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(1,0,0),xsize);splanes[count++]=new ReflectionSymmetry.getPlane(new Vector3d(0,1,0),ysize);return new ReflectionSymmetry(splanes);} function getImage(radius,thickness,path){var s=radius/Math.sqrt(1+1.0/(TAU*TAU));var v5=new Vector3d(s/TAU,0,s);var v3=new Vector3d(0,s/(TAU*TAU),s);var union=new Union();var correction=1.11;var ypnt=v3.y*correction;var xpnt=v5.x*correction;var image=loadImage(path);var grid=image.getGrid();var threshold=0.5;var filled=getPercentFilled(grid,threshold);var thick=thickness;if(filled<0.20){thick=1.4*thickness;} imgBox=new Image3D(grid,xpnt,ypnt,thick,0.1*MM);imgBox.setUseGrayscale(false);imgBox.setImagePlace(Image3D.IMAGE_PLACE_TOP);imgBox.setBaseThickness(0.0);imgBox.setBaseThreshold(threshold);imgBox.setBlurWidth(0.1*MM);union.add(imgBox);union.setTransform(getSphereBend(v5.x,radius-v5.z,v5.z));return union;} function getPercentFilled(grid,threshold){var w=grid.getWidth();var h=grid.getHeight();var filled=0;var threshatt=65636/2;for(var y=0;y
Preferences
Close
Printability Check
Region check
Voxel size
Number of regions
Largest region
Close