From 91bdcf674e7387bfdf4ae728f449ba1caa11c323 Mon Sep 17 00:00:00 2001 From: Marius Date: Sat, 19 Jun 2021 15:44:40 +0300 Subject: [PATCH] - fixed Film Plugin (Tool) negative generation to have the black background in sync with the actual geometry when transformations are applied - fixed Film Plugin (Tool) to have mirroring done only with reference 'center' regardless of what is selected in the UI - in Film Plugin now multiple adjustments can be applied at the same time and correctly --- CHANGELOG.md | 6 ++++++ appPlugins/ToolFilm.py | 19 +++++++++++-------- camlib.py | 18 +++++++++--------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4e46951..ca453328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ CHANGELOG for FlatCAM beta ================================================= +19.06.2021 + +- fixed Film Plugin (Tool) negative generation to have the black background in sync with the actual geometry when transformations are applied +- fixed Film Plugin (Tool) to have mirroring done only with reference 'center' regardless of what is selected in the UI +- in Film Plugin now multiple adjustments can be applied at the same time and correctly + 17.06.2021 - fixed the setting color functionality on right click on the objects in the Project Tab such that the set color (or opacity) it is stored in a persistent setting correctly and the colors for Gerber objects are restored in order diff --git a/appPlugins/ToolFilm.py b/appPlugins/ToolFilm.py index 375ca9d7..cd78285f 100644 --- a/appPlugins/ToolFilm.py +++ b/appPlugins/ToolFilm.py @@ -671,6 +671,7 @@ class Film(AppTool): elif reference_point == 'bottomright': ref_val = (xmax, ymin) + # Transform the box object geometry transformed_box_geo = box_geo if scale_factor_x and not scale_factor_y: @@ -690,11 +691,11 @@ class Film(AppTool): if mirror: if mirror == 'x': - transformed_box_geo = affinity.scale(transformed_box_geo, 1.0, -1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, 1.0, -1.0, origin='center') if mirror == 'y': - transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, 1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, 1.0, origin='center') if mirror == 'both': - transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, -1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, -1.0, origin='center') bounds = transformed_box_geo.bounds size = bounds[2] - bounds[0], bounds[3] - bounds[1] @@ -703,7 +704,8 @@ class Film(AppTool): scale_factor_x=scale_factor_x, scale_factor_y=scale_factor_y, skew_factor_x=skew_factor_x, skew_factor_y=skew_factor_y, mirror=mirror, - scale_reference=reference_point, skew_reference=reference_point + scale_reference=reference_point, skew_reference=reference_point, + mirror_reference='center' ) uom = obj.units.lower() @@ -967,11 +969,11 @@ class Film(AppTool): if mirror: if mirror == 'x': - transformed_box_geo = affinity.scale(transformed_box_geo, 1.0, -1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, 1.0, -1.0, origin='center') if mirror == 'y': - transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, 1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, 1.0, origin='center') if mirror == 'both': - transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, -1.0, origin=ref_val) + transformed_box_geo = affinity.scale(transformed_box_geo, -1.0, -1.0, origin='center') bounds = transformed_box_geo.bounds size = bounds[2] - bounds[0], bounds[3] - bounds[1] @@ -980,7 +982,8 @@ class Film(AppTool): scale_factor_x=scale_factor_x, scale_factor_y=scale_factor_y, skew_factor_x=skew_factor_x, skew_factor_y=skew_factor_y, mirror=mirror, - scale_reference=reference_point, skew_reference=reference_point + scale_reference=reference_point, skew_reference=reference_point, + mirror_reference='center' ) # Change the attributes of the exported SVG diff --git a/camlib.py b/camlib.py index aadd3b3f..26883c56 100644 --- a/camlib.py +++ b/camlib.py @@ -2355,26 +2355,26 @@ class Geometry(object): geom = geom_svg if scale_factor_x and not scale_factor_y: - geom = affinity.scale(geom_svg, scale_factor_x, 1.0, origin=scale_ref) + geom = affinity.scale(geom, scale_factor_x, 1.0, origin=scale_ref) elif not scale_factor_x and scale_factor_y: - geom = affinity.scale(geom_svg, 1.0, scale_factor_y, origin=scale_ref) + geom = affinity.scale(geom, 1.0, scale_factor_y, origin=scale_ref) elif scale_factor_x and scale_factor_y: - geom = affinity.scale(geom_svg, scale_factor_x, scale_factor_y, origin=scale_ref) + geom = affinity.scale(geom, scale_factor_x, scale_factor_y, origin=scale_ref) if skew_factor_x and not skew_factor_y: - geom = affinity.skew(geom_svg, skew_factor_x, 0.0, origin=skew_ref) + geom = affinity.skew(geom, skew_factor_x, 0.0, origin=skew_ref) elif not skew_factor_x and skew_factor_y: - geom = affinity.skew(geom_svg, 0.0, skew_factor_y, origin=skew_ref) + geom = affinity.skew(geom, 0.0, skew_factor_y, origin=skew_ref) elif skew_factor_x and skew_factor_y: - geom = affinity.skew(geom_svg, skew_factor_x, skew_factor_y, origin=skew_ref) + geom = affinity.skew(geom, skew_factor_x, skew_factor_y, origin=skew_ref) if mirror: if mirror == 'x': - geom = affinity.scale(geom_svg, 1.0, -1.0, origin=mirror_ref) + geom = affinity.scale(geom, 1.0, -1.0, origin=mirror_ref) if mirror == 'y': - geom = affinity.scale(geom_svg, -1.0, 1.0, origin=mirror_ref) + geom = affinity.scale(geom, -1.0, 1.0, origin=mirror_ref) if mirror == 'both': - geom = affinity.scale(geom_svg, -1.0, -1.0, origin=mirror_ref) + geom = affinity.scale(geom, -1.0, -1.0, origin=mirror_ref) # scale_factor is a multiplication factor for the SVG stroke-width used within shapely's svg export # If 0 or less which is invalid then default to 0.01