ohav;      !"#$%&'()*+,-./0123456789:2Type-checked wrappers for the OpenSCAD primitives.&#xa9; Mike Meyer, 2014BSD4 mwm@mired.org experimental Safe-Inferred245,A three-dimensional model. You can create a  from a  using .UA two-dimensional model. Note that the types do not mix implicitly. You must turn a  into a  using one of , , or .A  is either a , a , a transformation of a , a combination of s, or a # with it's rendering tweaked by a . s can be rendered.,The third argument to unsafePolyhedron is a .;A ; controls how edges in a  are joined by the < operation.A  is used to set one of the special variables that control the mesh used during generation of circular objects. They appear as arguments to various constructors, as well as in the // function to set them for the argument objects.JA 4x4 transformation matrix specifying a complete 3-space transform of a . is used where  expects an OpenSCAD vector of length 3.   is used where  expects an OpenSCAD vector of length 2. Create a rectangular  with  rectangle  x-size y-size.   is a   with both sides the same size. Create a circular  with circle radius . Project a  into a  with  projection cut .Turn a list of lists of  s and an Int into  polygon convexity points path. The argument to polygon is the list of paths that is the second argument to the OpenSCAD polygon function, except the points are  s, not references to  ~s in that functions points argument. If you were just going to pass in the points, it now needs to be in an extra level of List.,This provides direct access to the OpenScad polygonN command for performance reasons. This version uses the OpenSCAD arguments: polygon convexity points pathT to allow client code to save space. However, it bypasses all the checks done by &, which need the other representation.<< a  s edges by offset  delta join.Create a sphere with sphere radius .Create a box with cube x-size y-size z-size0A convenience function for creating a cube as a ! with all sides the same length.Create a cylinder with  cylinder radius height . Create an oblique cylinder with  cylinder radius1 height radius2 .Turn a list of list of s and an int into  polyhedron convexity points . The argument to polyhedron is the list of paths that is the second argument to the OpenSCAD polyhedron function, except the points are s, not the references to s used in that functions pointsJ argument. The function will build the appropriate function call, using faces9 if you pass in a side that uses more than 3 points, or  triangles if not. Note that faces2 doesn't work in older versions of OpenSCAD, and  triangles_ is depreciated. Until a mechanism to set the version of OpenSCAD is provided, generating the faces version will cause an error. Passing in  that have fewer than three points, have collinear points or have points that aren't in the same plane is an error that is caught by the library.,This provides direct access to the OpenSCAD  polyhedronO command for performance reasons. This version uses the OpenSCAD arguments:  polyhedron convexity points S to allow client code to save space. However, it bypasses all the checks done by ', which needs the other representation. Transform a  with a Turn a  into a  exactly as is. Extrude a  along a line with linear_extrude. Rotate a  around the origin with rotate_extrude  convexity  #Load a height map from a file with surface FilePath Invert Convexity. is import filename.Scale a 7, the vector specifying the scale factor for each axis. Resize a s to occupy the dimensions given by the vector. Note that this does nothing prior to the 2014 versions of OpenSCAD.  Rotate a 4 by different amounts around each of the three axis.! Translate a  along a  ." Mirror a ( across a plane intersecting the origin.# Render a W in a specific color. This doesn't use the OpenSCAD color model, but instead uses the  model. The  module rexports  so you can conveniently say # = .$ Render a ( in a transparent color. This uses the > color model.%A !2 that just goes up, since those seem to be common.&Create the union of a list of s.'%Create the intersection of a list of s.(The difference between two s.)The Minkowski sum of a list of s.*The convex hull of a list of s.++4 does all the real work. It will walk the AST for a &, returning an OpenSCAD program in a ?.,+A convenience function to render a list of s by taking their union.--A convenience function to write the rendered  to standard output.."A convenience function to write a & of s to standard output.// uses assign to set a  variable for it's s.00 is used to set the $fa variable in a  or /.11 is used to set the $fs variable in a  or /.22 is used to set the $fn variable in a  or /.33 is used where a : is needed but we don't want to change any of the values.4Use 4< to turn a diameter into a radius for circles, spheres, etc.5VYou can use '(#)' to write transformations in a more readable postfix form, cube 3  color red  translate (-3, -3, -3)w@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`;abcdefg hijklmno <heighttwistscaleslices convexity to extrude !"#$%&'()*+pqrstu,-.vwxyz/012345{|}~=       !"#$%&'()*+,-./0123456   &'()* !"#$%+,/21034-.5HONMLKJIHGFEDCBA@P ZYXWVUTSRQ[`_^]\;cbagfed hijklmno < !"#$%&'()*+pqrstu,-.vwxyz/012345{|}~5 Safe-Inferred96("*) = & U+222A, UNION7(")) = 'U+2229, INTERSECTION8(") = (U+2216, SET MINUS9(") = Symmetric differenceU+2296, CIRCLED MINUS:() = )U+2295, CIRCLED PLUS6789:6789:6789:6789:678 9 :       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHFIJKLMNOPQRSTUVWXYZ[\]\^_`abcdefg]hijklmnopqrstuvwxyz{|}~FGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFG FG FG FG FG FGFGFGFGFGFGFGFGFGFGFGFGFGFGFGFIOpenSCAD-0.3.0.2Graphics.OpenSCADGraphics.OpenSCAD.UnicodeGraphicsOpenSCADDataColour Data.ColourNamesModel3dModel2dModelSides TrianglesFacesFacet TransMatrixVector3dVector2dVector rectanglesquarecircle projectionpolygon unsafePolygonsphereboxcubecylinder obCylinder polyhedronunsafePolyhedron multMatrixsolid linearExtrude rotateExtrudesurface importFilescaleresizerotate translatemirrorcolor transparentupunion intersection difference minkowskihullrenderrenderLdrawdrawLvarfafsfndefdiam#∪∩∖⊖⊕Joinoffset colour-2.3.3Data.Colour.NamesredData.Colour.Internal AlphaColourbaseGHC.BaseStringVarImport DifferenceHull Minkowski IntersectionUnion TransparentColorMirror TranslateRotateResizeScaleSolidShapeToSolidSurface RotateExtrude LinearExtrude MultMatrix Polyhedron ObCylinderCylinderBoxSphereOffset ProjectionPolygonCircle RectangleMiterRoundBevelDefFnFsFarVectortoList#*#-#.isZero collinearcoplanarrShaperJoinrSolidrVectorLrSidesrListLrList rVecSolidrQuadrFacet showFacet $fMonoidModel$fSemigroupModel $fVector(,,) $fVector(,) yellowgreenyellow whitesmokewhitewheatviolet turquoisetomatothistletealtan steelblue springgreensnow slategrey slategray slateblueskybluesilversiennaseashellseagreen sandybrownsalmon saddlebrown royalblue rosybrownpurple powderblueplumpinkperu peachpuff papayawhip palevioletred paleturquoise palegreen palegoldenrodorchid orangeredorange olivedraboliveoldlacenavy navajowhitemoccasin mistyrose mintcream midnightbluemediumvioletredmediumturquoisemediumspringgreenmediumslatebluemediumseagreen mediumpurple mediumorchid mediumbluemediumaquamarinemaroonmagentalinen limegreenlime lightyellowlightsteelbluelightslategreylightslategray lightskyblue lightseagreen lightsalmon lightpink lightgrey lightgreen lightgraylightgoldenrodyellow lightcyan lightcoral lightblue lemonchiffon lawngreen lavenderblushlavenderkhakiivoryindigo indianredhotpinkhoneydew greenyellowgreengreygray goldenrodgold ghostwhite gainsborofuchsia forestgreen floralwhite firebrick dodgerbluedimgreydimgray deepskybluedeeppink darkviolet darkturquoise darkslategrey darkslategray darkslateblue darkseagreen darksalmondarkred darkorchid darkorangedarkolivegreen darkmagenta darkkhakidarkgrey darkgreendarkgray darkgoldenroddarkcyandarkbluecyancrimsoncornsilkcornflowerbluecoral chocolate chartreuse cadetblue burlywoodbrown bluevioletblueblanchedalmondbisquebeigeazure aquamarineaqua antiquewhite alicebluereadColourNameblack