aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjaseg <git@jaseg.net>2020-05-19 13:55:56 +0200
committerjaseg <git@jaseg.net>2020-05-19 14:03:36 +0200
commit498e7e61542810865f64b642c2e006bf2f82c456 (patch)
tree7f69bec32f67621cf55a1f470f21303df0a29008
parent0dcc11ebd03a6b80e9d930ab9edf5fe74291f95b (diff)
downloadgerbolyze-498e7e61542810865f64b642c2e006bf2f82c456.tar.gz
gerbolyze-498e7e61542810865f64b642c2e006bf2f82c456.tar.bz2
gerbolyze-498e7e61542810865f64b642c2e006bf2f82c456.zip
gerbolyze: read gerber units from input file
-rwxr-xr-xgerbolyze.py18
1 files changed, 5 insertions, 13 deletions
diff --git a/gerbolyze.py b/gerbolyze.py
index 3b2bb4c..3284ae7 100755
--- a/gerbolyze.py
+++ b/gerbolyze.py
@@ -15,12 +15,6 @@ import cv2
import enum
import tqdm
-class Unit(enum.Enum):
- MM = 0
- INCH = 1
- MIL = 2
-
-
def generate_mask(
outline,
target,
@@ -28,7 +22,6 @@ def generate_mask(
bounds,
debugimg,
status_print,
- gerber_unit,
extend_overlay_r_mil,
subtract_gerber
):
@@ -54,7 +47,7 @@ def generate_mask(
# Vertically flip exported image
original_img = cv2.imread(img_file, cv2.IMREAD_GRAYSCALE)[::-1, :]
- f = 1 if gerber_unit == Unit.INCH else 25.4 # MM
+ f = 1 if outline.units == 'inch' else 25.4
r = 1+2*max(1, int(extend_overlay_r_mil/1000 * f * scale))
status_print('Expanding keepout composite by', r)
@@ -108,7 +101,6 @@ def pcb_area_mask(outline, scale, bounds):
def generate_template(
silk, mask, copper, outline, drill,
image,
- gerber_unit=Unit.MM,
process_resolution:float=6, # mil
resolution_oversampling:float=10, # times
status_print=lambda *args:None
@@ -119,8 +111,10 @@ def generate_template(
mask.layer_class = 'topmask'
copper.layer_class = 'top'
outline.layer_class = 'outline'
- scale = (1000/process_resolution) / 25.4 * resolution_oversampling # dpmm
+
+ f = 1.0 if outline.cam_source.units == 'metric' else 25.4
+ scale = (1000/process_resolution) / 25.4 * resolution_oversampling * f # dpmm
bounds = outline.cam_source.bounding_box
# Create a new drawing context
@@ -142,7 +136,6 @@ def paste_image(
extend_overlay_r_mil:float=6,
extend_picture_r_mil:float=2,
status_print=lambda *args:None,
- gerber_unit=Unit.MM,
debugdir:str=None):
debugctr = 0
@@ -171,7 +164,7 @@ def paste_image(
status_print(' * source image has size {}, going for scale {}dpmm'.format((imgw, imgh), scale))
# Merge layers to target mask
- target_img = generate_mask(outline, target, scale, bounds, debugimg, status_print, gerber_unit, extend_overlay_r_mil, subtract_gerber)
+ target_img = generate_mask(outline, target, scale, bounds, debugimg, status_print, extend_overlay_r_mil, subtract_gerber)
# Threshold source image. Ideally, the source image is already binary but in case it's not, or in case it's not
# exactly binary (having a few very dark or very light grays e.g. due to JPEG compression) we're thresholding here.
@@ -373,7 +366,6 @@ def render_preview(source, image, side, process_resolution, resolution_oversampl
generate_template(
silk, mask, copper, outline, drill,
image,
- gerber_unit=Unit.MM,
process_resolution=process_resolution,
resolution_oversampling=resolution_oversampling,
)