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: "size", label: "Ring Size", desc: "US Ring Size", type: "double", rangeMin: 0, rangeMax: 16, step: 0.25, defaultVal: 11.5, group: "Size" }, { name: "bandWidth", label: "Band Width", desc: "Band Width", type: "double", rangeMin: 2, rangeMax: 10, step: 0.1, defaultVal: 6, unit: "MM", group: "Size" }, { name: "bandThick", label: "Liner Thickness", desc: "Liner Thickness", type: "double", rangeMin: 0, rangeMax: 2, step: 0.1, defaultVal: 0.8, unit: "MM", group: "Size" }, { name: "pattern", label: "Pattern Type", desc: "Pattern Type", type: "enum", values: ["Gyroid","SchwarzP","SchwarzD","Lidinoid"], defaultVal: "SchwarzP", group: "Pattern" }, { name: "period", label: "Pattern Period", desc: "Period", type: "double", rangeMin: 1, rangeMax: 12, step: 0.05, defaultVal: 3.65, unit: "MM", group: "Pattern" }, { name: "thickness", label: "Pattern Thickness", desc: "Thickness", type: "double", rangeMin: 0.5, rangeMax: 3, step: 0.1, defaultVal: 0.5, unit: "MM", group: "Pattern" }, { name: "height", label: "Pattern Height", desc: "Pattern Height", type: "double", rangeMin: 0.5, rangeMax: 4, step: 0.1, defaultVal: 1.6, unit: "MM", group: "Pattern" }, { name: "location", label: "Pattern Location", desc: "Location", type: "double", rangeMin: 0, rangeMax: 5, step: 0.1, defaultVal: 0, unit: "MM", group: "Pattern" }, { name: "rotation", label: "Pattern Rotation", desc: "Pattern Rotation in Degrees", type: "double", rangeMin: 0, rangeMax: 90, step: 1, defaultVal: 0, unit: "MM", group: "Pattern" }, { name: "patternBlend", label: "Pattern Blend", desc: "Pattern Blending", type: "double", rangeMin: 0, rangeMax: 1.5, step: 0.05, defaultVal: 0.5, unit: "MM", group: "Pattern" } ]; function ringSizeToRadius(size) { var diameter = 11.63*MM + (0.8128 * MM * size); return diameter / 2; } function main(args) { var size = ringSizeToRadius(args.size); var pattern_thick = args.height; var width = args.bandWidth; var gyroid; if (args.pattern == "Gyroid") { gyroid = new VolumePatterns.Gyroid(args.period, args.thickness); } else if (args.pattern == "Lidinoid") { gyroid = new VolumePatterns.Lidinoid(args.period, args.thickness); } else if (args.pattern == "SchwarzP") { gyroid = new VolumePatterns.SchwarzP(args.period, args.thickness); } else if (args.pattern == "SchwarzD") { gyroid = new VolumePatterns.SchwarzD(args.period, args.thickness); } gyroid.setTransform(new Rotation(1,0,0,args.rotation * 180/Math.PI)); var lthick = 1*MM; var band_thick = args.bandThick; var ocutter = new Cylinder(new Vector3d(0,-10*CM,0), new Vector3d(0,10*CM,0),size+pattern_thick+band_thick); var icutter = new Cylinder(new Vector3d(0,-10*CM,0), new Vector3d(0,10*CM,0),size+band_thick); var cutter = new Subtraction(ocutter,icutter); var body = Intersection(gyroid, cutter); body.setBlend(args.patternBlend); result = body; if (band_thick > 0) { var oliner = new Cylinder(new Vector3d(0,-10*CM,0), new Vector3d(0,10*CM,0),size+band_thick); var iliner = new Cylinder(new Vector3d(0,-10*CM,0), new Vector3d(0,10*CM,0),size); var liner = new Subtraction(oliner,iliner); liner.setBlend(0.5*MM); result = new Union(result,liner); result.setBlend(0.5*MM); } var fplane = new Plane(new Vector3d(0,-1,0),new Vector3d(0,width/2,0)); var bplane = new Plane(new Vector3d(0,1,0),new Vector3d(0,-width/2,0)); result.setTransform(new Translation(0,args.location,0)); result = new Subtraction(result,fplane); result.setBlend(0.25*MM); result = new Subtraction(result,bplane); result.setBlend(0.25*MM); s = ringSizeToRadius(16) + 6*MM; // Hardcode to show sizes changes better var scene = Scene(result, new Bounds(-s,s,-s,s,-s,s)); scene.setVoxelSize(0.05*MM); scene.setName("GyroidRing_size_"+args.size+"_period_"+args.period+"_thick_"+args.thickness+"_height_"+args.height); return scene; }
Preferences
Close
Printability Check
Region check
Voxel size
Number of regions
Largest region
Close