Created
July 16, 2018 22:09
-
-
Save jamesporter/e53d5535f2bb25f0da3b617b7c7eddc2 to your computer and use it in GitHub Desktop.
Revisions
-
jamesporter created this gist
Jul 16, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,154 @@ # OpenJSCAD Cheat Sheet James Porter ## 0. 3D * Architecture-style * x,y,z ## 1. main Always have a main function which returns an object ```js function main () { return union( difference( cube({size: 3, center: true}), sphere({r: 2, center: true}) ), intersection( sphere({r: 1.3, center: true}), cube({size: 2.1, center: true}) ) ).translate([0, 0, 1.5]).scale(10); } ``` ## 2. Basic Shapes: Cube ```js cube({size: 1, center: true}) cube({size: [1,2,3]}) ``` * size `s` or `[x,y,z]` * center (location) `false` by default (at 'bottom' corner) ## 3. Basic Shapes: Cylinder ```js cylinder({r: 1, h: 10}) ``` * r for radius * h for height * again can `center` or not (default) * `fn` to control detail ## 4. Transforms: Scale ```js scale(2,obj) scale([1,2,3],obj) ``` * can scale in simple way * or per x,y,z ## 5. Transforms: Translate ```js translate([5,4,3], obj) ``` * Move by `[x,y,z]` * e.g. move up 5 units: ```js translate([0,0,5], obj) ``` ## 6. Transforms: Rotation ```js rotate([90,0,45], obj) ``` * Rotate about `[x,y,z]` (respectively) * e.g. rotate about vertical by 90 degrees: ```js rotate([0,0,90], obj) ``` **NB Degrees not radians** ## 7. Operations: Union * Glue stuff together ```js union([obj, another]) union(obj, another) ``` ## 8. Basic Shapes: Sphere ```js sphere({r: 4}) ``` * r for radius * `center` is true by default (unlike other primitive objects) * `fn` to control detail ## 9. Basic Shapes: Polygon + linear_extrude List of points to make a (2D) polygon on x,y plane ```js let p1 = polygon([ [0,0],[3,0],[3,3] ]) let p2 = polygon({ points: [ [0,0],[3,0],[3,3] ] }) ``` Then extrude with `linear_extrude`: ```js linear_extrude({ height: 10 }, p1); linear_extrude({ height: 1 }, p2); ``` ## 10. Operations: Intersect * Bit in all the shapes ```js intersection( sphere({r: 1.3, center: true}), cube({size: 2.1, center: true}) ) ``` * Can take bunch of arguments or array ## 11. Operations: Difference * First shape with rest carved out ```js difference( cube({size: 3, center: true}), sphere({r: 2, center: true}) ) ``` * Can take bunch of arguments or array ## Appendix See [the full docs](https://openjscad.org/dokuwiki/doku.php?id=start) Adds some mathematical things like `sin` that work with degrees not radians. You might want to use `Math.{round,sin,cos,tan,floor,ceil,sqrt,random}` to generate things in simple way.