- 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
This commit is contained in:
Marius
2021-06-19 15:44:40 +03:00
parent ba59e9ed58
commit 91bdcf674e
3 changed files with 26 additions and 17 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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