Module Dometyl.Eyelet

type hole =
  1. | Through
  2. | Inset of {
    1. depth : float;
    2. punch : [ `Rel of float | `Abs of float ] option;
    }
type sink =
  1. | Pan of float
  2. | Counter
type fastener =
  1. | SameMagnet
  2. | Magnet of {
    1. rad : float;
    2. thickness : float;
    }
  3. | Screw of {
    1. head_rad : float;
    2. shaft_rad : float;
    3. sink : sink;
    4. height : float;
    5. clearance : float option;
    }
type wall_loc =
  1. | Body of [ `N | `E | `S | `W ] * Idx.t
  2. | Thumb of [ `N | `E | `S | `W ] * Idx.t
type placement =
  1. | Normal of OCADml.V3.t
  2. | Point of OCADml.V3.t
type config = {
  1. outer_rad : float;
  2. inner_rad : float;
  3. thickness : float;
  4. hole : hole;
}
type t = {
  1. scad : OSCADml.Scad.d3;
  2. cut : OSCADml.Scad.d3 option;
  3. centre : OCADml.V3.t;
  4. config : config;
}
val translate : OCADml.V3.t -> t -> t
val xtrans : float -> t -> t
val ytrans : float -> t -> t
val ztrans : float -> t -> t
val rotate : ?about:OCADml.V3.t -> OCADml.V3.t -> t -> t
val xrot : ?about:OCADml.V3.t -> float -> t -> t
val yrot : ?about:OCADml.V3.t -> float -> t -> t
val zrot : ?about:OCADml.V3.t -> float -> t -> t
val axis_rotate : ?about:OCADml.V3.t -> OCADml.V3.t -> float -> t -> t
val quaternion : ?about:OCADml.V3.t -> OCADml.Quaternion.t -> t -> t
val scale : OCADml.V3.t -> t -> t
val xscale : float -> t -> t
val yscale : float -> t -> t
val zscale : float -> t -> t
val mirror : OCADml.V3.t -> t -> t
val affine : OCADml.Affine3.t -> t -> t
val inset : ?punch:[ `Rel of float | `Abs of float ] -> float -> hole
val screw_fastener : ?head_rad:float -> ?shaft_rad:float -> ?sink:sink -> ?height:float -> ?clearance:float -> unit -> fastener
val default_config : config
val m4_config : config
val bumpon_config : config
val magnet_6x3_config : config
val m4_countersunk_fastener : fastener
val make : ?fn:int -> ?fillet:float -> placement:placement -> config -> OCADml.Path3.t -> t
val place : ?fn:int -> ?fillet:float -> ?width:float -> ?bury:float -> ?config:config -> inline:OCADml.Path3.t -> outline:OCADml.Path3.t -> [ `Loc of OCADml.v3 | `Reloc of OCADml.v3 | `U of float ] -> t
val default_wall_locs : wall_loc list
val wall_locations : walls:Walls.t -> wall_loc list -> [> `Reloc of OCADml.v3 ] list
val to_scad : t -> OSCADml.Scad.d3
val apply : t -> OSCADml.Scad.d3 -> OSCADml.Scad.d3