- working in Excellon Editor to Tool Resize to consider the slots, too
This commit is contained in:
@@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing.
|
|||||||
|
|
||||||
=================================================
|
=================================================
|
||||||
|
|
||||||
|
16.08.2019
|
||||||
|
|
||||||
|
- working in Excellon Editor to Tool Resize to consider the slots, too
|
||||||
|
|
||||||
15.08.2019
|
15.08.2019
|
||||||
|
|
||||||
- added Edit -> Preferences GUI and storage for the Excellon Editor Add Slots
|
- added Edit -> Preferences GUI and storage for the Excellon Editor Add Slots
|
||||||
|
|||||||
@@ -852,6 +852,11 @@ class FCDrillResize(FCShapeTool):
|
|||||||
def make(self):
|
def make(self):
|
||||||
self.draw_app.is_modified = True
|
self.draw_app.is_modified = True
|
||||||
|
|
||||||
|
try:
|
||||||
|
self.draw_app.tools_table_exc.itemChanged.disconnect()
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
new_dia = self.draw_app.resdrill_entry.get_value()
|
new_dia = self.draw_app.resdrill_entry.get_value()
|
||||||
except:
|
except:
|
||||||
@@ -909,8 +914,7 @@ class FCDrillResize(FCShapeTool):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
# if the exception happen here then we are not dealing with slots neither
|
# if the exception happen here then we are not dealing with slots neither
|
||||||
# therefore something else is not OK so we return
|
# therefore something else is not OK so we return
|
||||||
self.draw_app.app.inform.emit(
|
self.draw_app.app.inform.emit(_("[ERROR_NOTCL] Cancelled."))
|
||||||
_("[ERROR_NOTCL] Cancelled."))
|
|
||||||
return
|
return
|
||||||
|
|
||||||
sel_shapes_to_be_deleted.append(select_shape)
|
sel_shapes_to_be_deleted.append(select_shape)
|
||||||
@@ -928,16 +932,31 @@ class FCDrillResize(FCShapeTool):
|
|||||||
self.draw_app.points_edit[new_dia].append((0, 0))
|
self.draw_app.points_edit[new_dia].append((0, 0))
|
||||||
self.geometry = []
|
self.geometry = []
|
||||||
|
|
||||||
# if following the resize of the drills there will be no more drills for the selected tool then
|
for dia_key in list(self.draw_app.storage_dict.keys()):
|
||||||
# delete that tool
|
# if following the resize of the drills there will be no more drills for some of the tools then
|
||||||
if not self.draw_app.points_edit[sel_dia]:
|
# delete those tools
|
||||||
self.draw_app.on_tool_delete(sel_dia)
|
try:
|
||||||
|
if not self.draw_app.points_edit[dia_key]:
|
||||||
|
self.draw_app.on_tool_delete(dia_key)
|
||||||
|
except KeyError:
|
||||||
|
# if the exception happen here then we are not dealing with drills but with slots
|
||||||
|
# so we try for them
|
||||||
|
try:
|
||||||
|
if not self.draw_app.slot_points_edit[dia_key]:
|
||||||
|
self.draw_app.on_tool_delete(dia_key)
|
||||||
|
except KeyError:
|
||||||
|
# if the exception happen here then we are not dealing with slots neither
|
||||||
|
# therefore something else is not OK so we return
|
||||||
|
self.draw_app.app.inform.emit(_("[ERROR_NOTCL] Cancelled."))
|
||||||
|
return
|
||||||
|
|
||||||
for shp in sel_shapes_to_be_deleted:
|
for shp in sel_shapes_to_be_deleted:
|
||||||
self.draw_app.selected.remove(shp)
|
self.draw_app.selected.remove(shp)
|
||||||
|
|
||||||
self.draw_app.build_ui()
|
self.draw_app.build_ui()
|
||||||
self.draw_app.replot()
|
self.draw_app.replot()
|
||||||
|
# we reactivate the signals after the after the tool editing
|
||||||
|
self.draw_app.tools_table_exc.itemChanged.connect(self.draw_app.on_tool_edit)
|
||||||
self.draw_app.app.inform.emit(_("[success] Done. Drill/Slot Resize completed."))
|
self.draw_app.app.inform.emit(_("[success] Done. Drill/Slot Resize completed."))
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -2406,20 +2425,35 @@ class FlatCAMExcEditor(QtCore.QObject):
|
|||||||
factor = current_table_dia_edited / dia_changed
|
factor = current_table_dia_edited / dia_changed
|
||||||
geometry = []
|
geometry = []
|
||||||
|
|
||||||
|
scaled_geo = []
|
||||||
for shape_exc in self.storage_dict[dia_changed].get_objects():
|
for shape_exc in self.storage_dict[dia_changed].get_objects():
|
||||||
scaled_geo = MultiLineString(
|
geo_list = []
|
||||||
[affinity.scale(subgeo, xfact=factor, yfact=factor, origin='center') for subgeo in shape_exc.geo]
|
if isinstance(shape_exc.geo, MultiLineString) or isinstance(shape_exc.geo, MultiPolygon):
|
||||||
)
|
for subgeo in shape_exc.geo:
|
||||||
|
geo_list.append(affinity.scale(subgeo, xfact=factor, yfact=factor, origin='center'))
|
||||||
|
scaled_geo = MultiLineString(geo_list)
|
||||||
|
elif isinstance(shape_exc.geo, Polygon):
|
||||||
|
scaled_geo = geo_list.append(affinity.scale(shape_exc.geo,
|
||||||
|
xfact=factor, yfact=factor, origin='center'))
|
||||||
|
|
||||||
|
if isinstance(shape_exc.geo, MultiLineString):
|
||||||
|
# add bogus drill points (for total count of drills) but only if the shape is a MultiLineString
|
||||||
|
# because the drills are MultiLineString
|
||||||
|
for k, v in self.olddia_newdia.items():
|
||||||
|
if v == current_table_dia_edited:
|
||||||
|
self.points_edit[k].append((0, 0))
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
# the shape is a Polygon or MultiPolygon therefore we have to increase the slot numbers
|
||||||
|
for k, v in self.olddia_newdia.items():
|
||||||
|
if v == current_table_dia_edited:
|
||||||
|
self.slot_points_edit[k].append((0, 0))
|
||||||
|
break
|
||||||
|
|
||||||
geometry.append(DrawToolShape(scaled_geo))
|
geometry.append(DrawToolShape(scaled_geo))
|
||||||
|
|
||||||
# add bogus drill points (for total count of drills)
|
# search for the old dia that correspond to the new dia and add the drills/slots in it's storage
|
||||||
for k, v in self.olddia_newdia.items():
|
# everything will be sorted out later, when the edited Excellon is updated
|
||||||
if v == current_table_dia_edited:
|
|
||||||
self.points_edit[k].append((0, 0))
|
|
||||||
break
|
|
||||||
|
|
||||||
# search for the old dia that correspond to the new dia and add the drills in it's storage
|
|
||||||
# everything will be sort out later, when the edited Excellon is updated
|
|
||||||
for k, v in self.olddia_newdia.items():
|
for k, v in self.olddia_newdia.items():
|
||||||
if v == current_table_dia_edited:
|
if v == current_table_dia_edited:
|
||||||
self.add_exc_shape(geometry, self.storage_dict[k])
|
self.add_exc_shape(geometry, self.storage_dict[k])
|
||||||
|
|||||||
Reference in New Issue
Block a user