Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- __author__ = 'Gary Williams, Grin Technologies'
- import sys
- import math
- from reportlab.lib.pagesizes import letter
- from reportlab.lib.units import inch, mm
- from reportlab.lib.colors import black, white, blue, red
- import PDF # https://pastebin.com/edit/imz8TQun
- tab_size = 0.5 * inch
- matl_thick = 6 * mm
- margin = 0.25 * inch
- gap = 0.125 * inch
- box_height = 4.5 * inch + 2 * matl_thick
- box_width = 6 * inch + 2 * matl_thick
- box_length = 8 * inch + 2 * matl_thick
- m3_hole_dia = 2.89 * mm
- m3_nut_thickness = 2.29 * mm
- m3_nut_width_flat_flat = 5.41 * mm
- m3_nut_width_point_point = 6.10 * mm
- screw_length = 10 * mm
- screw_hole_dia = m3_hole_dia
- nut_thickness = m3_nut_thickness
- nut_width = m3_nut_width_flat_flat
- cut_holes_for_screws = True
- cut_slots_for_screws = True
- def plot_edge(pdf, l):
- float_num_tabs = (l - 2 * matl_thick) / (2.0 * tab_size)
- num_tabs = int(float_num_tabs + 0.5)
- adj_tab_size = (l - 2 * matl_thick) / (2.0 * num_tabs)
- for i in range(0, num_tabs):
- if cut_holes_for_screws and i == 0:
- x, y, d = pdf.x, pdf.y, pdf.dir
- pdf.forward(0.5 * adj_tab_size, False)
- pdf.turn_left()
- pdf.forward(0.5 * matl_thick, False)
- pdf.circle(pdf.x, pdf.y, 0.5 * screw_hole_dia)
- pdf.set_xy(x, y)
- pdf.set_dir(d)
- pdf.turn_left()
- pdf.forward(0.5 * matl_thick)
- pdf.curve_right(0.5 * matl_thick)
- pdf.forward(adj_tab_size - matl_thick)
- pdf.curve_right(0.5 * matl_thick)
- pdf.forward(0.5 * matl_thick)
- pdf.turn_left()
- if cut_slots_for_screws and (i == num_tabs - 1):
- z0 = 0.5 * (adj_tab_size - screw_hole_dia)
- screw_depth = screw_length - matl_thick - nut_thickness + 1 * mm
- z1a = 2.0 / 3.0 * screw_depth
- z1b = screw_depth - z1a
- z2 = 0.5 * (nut_width - nut_thickness)
- pdf.forward(z0)
- pdf.turn_right()
- pdf.forward(z1a)
- pdf.turn_right()
- pdf.forward(z2)
- pdf.turn_left()
- pdf.forward(nut_thickness)
- pdf.turn_left()
- pdf.forward(z2)
- pdf.turn_right()
- pdf.forward(z1b)
- pdf.turn_left()
- pdf.forward(screw_hole_dia)
- pdf.turn_left()
- pdf.forward(z1b)
- pdf.turn_right()
- pdf.forward(z2)
- pdf.turn_left()
- pdf.forward(nut_thickness)
- pdf.turn_left()
- pdf.forward(z2)
- pdf.turn_right()
- pdf.forward(z1a)
- pdf.turn_right()
- pdf.forward(z0)
- else:
- pdf.forward(adj_tab_size)
- def plot_box_side(pdf, x0, y0, w, h):
- # pdf.rect(x0, y0, w, h)
- pdf.set_xy(x0 + matl_thick, y0 + matl_thick)
- pdf.set_dir(PDF.Direction.Up.value)
- for i in range(2):
- plot_edge(pdf, h)
- pdf.turn_right()
- plot_edge(pdf, w)
- pdf.turn_right()
- pdf = PDF.PDF(
- 'box.pdf',
- PDF.PageOrientation.Landscape,
- (24 * inch, 14 * inch),
- )
- pdf.setLineWidth(0)
- plot_box_side(pdf, margin, pdf.get_page_height() - margin - box_height, box_length, box_height)
- plot_box_side(pdf, margin, pdf.get_page_height() - margin - box_height - gap - box_width, box_length, box_width)
- plot_box_side(pdf, margin + box_length + gap, pdf.get_page_height() - margin - box_height, box_width, box_height)
- pdf.save()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement