piecad.projectbox.pb API documentation

# Module `piecad.projectbox.pb`

## Functions

`def hole(r, wall)`
  Expand source code

      def hole(r, wall):
          return circle(r).extrude(wall).rotate((180, 0, 0))

`def horizontal_slot_hole(w, h, wall)`
  Expand source code

      def horizontal_slot_hole(w, h, wall):
          return rounded_rectangle((w, h), h/2.0).extrude(wall).rotate((180, 0, 0)).translate((-(w+h)/2.0, 0, 0))

`def tap_post(h: float, size_d: float, post_wall=2.0, add_taper=False, z_rot=0)`
  Expand source code

      def tap_post(h: float, size_d: float, post_wall=2.0, add_taper=False, z_rot=0):
          """
          A post suitable for tapping or using a self-taping screw or bolt.

          Parameter `h` is the height of the post (without taper).

          Parameter `size_d` is a diameter because that's how bolts are usually
          specified. For example a M4 bolt has a 4mm diameter.

          Parameter `post_wall`, how thick (beyond the screw) the wall should be.

          If you are mounting your posts horizontally (from the sides of the box),
          set `add_taper` to `True` and a 45 degree taper is added to the bottom
          of the post to aid in 3d printing.

          By default a tap post's bottom is centered at (0, 0, 0), BUT, if you
          add a taper then the tap post's top is centered at (0, 0, 0).

          Parameter `z_rot` is if you want to rotate the post (used in some lids).
          """
          inner_d = size_d*0.8 #Possibly snug, but with PLA I prefer that
          outer_d = post_wall*2+size_d
          circ = difference(circle(outer_d/2.0), circle(inner_d/2.0))
          if (add_taper):
              tp = circ.extrude(h*2)
              tp = difference(tp,
                  cube([outer_d, outer_d, h*3+2], center=True).rotate([45, 0, z_rot]).translate([0,0,h]))
              return tp.translate([0, 0, -h*2])
          else:
              return circ.extrude(h)

  A post suitable for tapping or using a self-taping screw or bolt.

  Parameter `h` is the height of the post (without taper).

  Parameter `size_d` is a diameter because that's how bolts are usually specified. For example a M4 bolt has a 4mm diameter.

  Parameter `post_wall`, how thick (beyond the screw) the wall should be.

  If you are mounting your posts horizontally (from the sides of the box), set `add_taper` to `True` and a 45 degree taper is added to the bottom of the post to aid in 3d printing.

  By default a tap post's bottom is centered at (0, 0, 0), BUT, if you add a taper then the tap post's top is centered at (0, 0, 0).

  Parameter `z_rot` is if you want to rotate the post (used in some lids).

`def tapered_bolt_hole(height, size_d)`
  Expand source code

      def tapered_bolt_hole(height, size_d):
          bolt_top_r = size_d
          r = size_d/2.0
          chamfer_h = sin(45)*bolt_top_r
          h_chamfered = height if chamfer_h>height else chamfer_h
          h_remaining = 0 if chamfer_h>height else height-chamfer_h
          o = union(
              cylinder(height=1, radius=bolt_top_r),
              cone(height=h_chamfered, radius_low=bolt_top_r, radius_high=r).translate((0, 0, 1)),
              cylinder(height=h_remaining, radius=r*0.80).translate((0, 0, h_chamfered+1)),
          ).rotate((180, 0, 0))
          return o

`def wedge(sz, thk)`
  Expand source code

      def wedge(sz, thk):
          return polyhedron(vertices=[
                  [0, 0, 0], [0, -sz, 0], [0, 0, sz],
                  [thk, 0, 0], [thk, -sz, 0], [thk, 0, sz]],
                  faces=[[1,2,0], [4,3,5], [3,0, 2], [3,2,5], [3,1,0], [4,1,3], [2,1,5], [5,1,4]
                  ])