- in Geometry Editor - fixed a crash on Geometry Editor exit
This commit is contained in:
@@ -15,6 +15,7 @@ CHANGELOG for FlatCAM beta
|
|||||||
- in Geometry Editor - added more parameters displayed for the geometric elements selected in the Geometry Table: is_valid, is_empty, is_ccw, is_simple, is_ring
|
- in Geometry Editor - added more parameters displayed for the geometric elements selected in the Geometry Table: is_valid, is_empty, is_ccw, is_simple, is_ring
|
||||||
- in Geometry Editor - added a new feature: Simplification. It will greatly reduce the number of vertex points in a geometry element selected in the Geometry Table thus potentially greatly reducing the resulting GCode number of lines
|
- in Geometry Editor - added a new feature: Simplification. It will greatly reduce the number of vertex points in a geometry element selected in the Geometry Table thus potentially greatly reducing the resulting GCode number of lines
|
||||||
- in Geometry Editor - simplification method is now threaded and optimized
|
- in Geometry Editor - simplification method is now threaded and optimized
|
||||||
|
- in Geometry Editor - fixed a crash on Geometry Editor exit
|
||||||
|
|
||||||
26.11.2020
|
26.11.2020
|
||||||
|
|
||||||
|
|||||||
@@ -3321,6 +3321,7 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
transform_complete = QtCore.pyqtSignal()
|
transform_complete = QtCore.pyqtSignal()
|
||||||
|
|
||||||
build_ui_sig = QtCore.pyqtSignal()
|
build_ui_sig = QtCore.pyqtSignal()
|
||||||
|
clear_tree_sig = QtCore.pyqtSignal()
|
||||||
|
|
||||||
draw_shape_idx = -1
|
draw_shape_idx = -1
|
||||||
|
|
||||||
@@ -3666,6 +3667,8 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
|
|
||||||
self.simplification_btn.clicked.connect(self.on_simplification_click)
|
self.simplification_btn.clicked.connect(self.on_simplification_click)
|
||||||
|
|
||||||
|
self.clear_tree_sig.connect(self.on_clear_tree)
|
||||||
|
|
||||||
# Event signals disconnect id holders
|
# Event signals disconnect id holders
|
||||||
self.mp = None
|
self.mp = None
|
||||||
self.mm = None
|
self.mm = None
|
||||||
@@ -3823,6 +3826,7 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
self.selected = []
|
self.selected = []
|
||||||
last_obj_shape = None
|
last_obj_shape = None
|
||||||
|
|
||||||
|
try:
|
||||||
selected_tree_items = self.tw.selectedItems()
|
selected_tree_items = self.tw.selectedItems()
|
||||||
for sel in selected_tree_items:
|
for sel in selected_tree_items:
|
||||||
for obj_shape in self.storage.get_objects():
|
for obj_shape in self.storage.get_objects():
|
||||||
@@ -3839,21 +3843,22 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
self.is_valid_entry.set_value(last_sel_geo.is_valid)
|
self.is_valid_entry.set_value(last_sel_geo.is_valid)
|
||||||
self.is_empty_entry.set_value(last_sel_geo.is_empty)
|
self.is_empty_entry.set_value(last_sel_geo.is_empty)
|
||||||
|
|
||||||
if last_sel_geo.geom_type == 'LinearRing':
|
|
||||||
self.is_ccw_entry.set_value(last_sel_geo.is_ccw)
|
|
||||||
|
|
||||||
if last_sel_geo.geom_type in ['LinearRing', 'LineString', 'MultiLineString']:
|
if last_sel_geo.geom_type in ['LinearRing', 'LineString', 'MultiLineString']:
|
||||||
length = last_sel_geo.length
|
length = last_sel_geo.length
|
||||||
coords = list(last_sel_geo.coords)
|
coords = list(last_sel_geo.coords)
|
||||||
vertex_nr = len(coords)
|
vertex_nr = len(coords)
|
||||||
self.is_simple_entry.set_value(last_sel_geo.is_simple)
|
self.is_simple_entry.set_value(last_sel_geo.is_simple)
|
||||||
self.is_ring_entry.set_value(last_sel_geo.is_ring)
|
self.is_ring_entry.set_value(last_sel_geo.is_ring)
|
||||||
|
if last_sel_geo.geom_type == 'LinearRing':
|
||||||
|
self.is_ccw_entry.set_value(last_sel_geo.is_ccw)
|
||||||
elif last_sel_geo.geom_type == 'Polygon':
|
elif last_sel_geo.geom_type == 'Polygon':
|
||||||
length = last_sel_geo.exterior.length
|
length = last_sel_geo.exterior.length
|
||||||
coords = list(last_sel_geo.exterior.coords)
|
coords = list(last_sel_geo.exterior.coords)
|
||||||
vertex_nr = len(coords)
|
vertex_nr = len(coords)
|
||||||
self.is_simple_entry.set_value(last_sel_geo.is_simple)
|
self.is_simple_entry.set_value(last_sel_geo.is_simple)
|
||||||
self.is_ring_entry.set_value(last_sel_geo.is_ring)
|
self.is_ring_entry.set_value(last_sel_geo.is_ring)
|
||||||
|
if last_sel_geo.exterior.geom_type == 'LinearRing':
|
||||||
|
self.is_ccw_entry.set_value(last_sel_geo.exterior.is_ccw)
|
||||||
else:
|
else:
|
||||||
length = 0.0
|
length = 0.0
|
||||||
coords = 'None'
|
coords = 'None'
|
||||||
@@ -3862,6 +3867,8 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
self.geo_len_entry.set_value(length, decimals=self.decimals)
|
self.geo_len_entry.set_value(length, decimals=self.decimals)
|
||||||
self.geo_coords_entry.setText(str(coords))
|
self.geo_coords_entry.setText(str(coords))
|
||||||
self.geo_vertex_entry.set_value(vertex_nr)
|
self.geo_vertex_entry.set_value(vertex_nr)
|
||||||
|
except Exception as e:
|
||||||
|
self.app.log.debug("APpGeoEditor.on_tree_selection_change() -> %s" % str(e))
|
||||||
|
|
||||||
self.replot()
|
self.replot()
|
||||||
|
|
||||||
@@ -3889,7 +3896,7 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
for geo in selected_shapes_geos:
|
for geo in selected_shapes_geos:
|
||||||
self.add_shape(DrawToolShape(geo), build_ui=False)
|
self.add_shape(DrawToolShape(geo), build_ui=False)
|
||||||
|
|
||||||
self.plot_all()
|
self.replot()
|
||||||
|
|
||||||
self.build_ui_sig.emit()
|
self.build_ui_sig.emit()
|
||||||
|
|
||||||
@@ -4018,12 +4025,14 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
# self.app.log.debug("AppGeoEditor.deactivate() --> %s" % str(e))
|
# self.app.log.debug("AppGeoEditor.deactivate() --> %s" % str(e))
|
||||||
|
|
||||||
# Show original geometry
|
# Show original geometry
|
||||||
|
try:
|
||||||
if self.fcgeometry:
|
if self.fcgeometry:
|
||||||
self.fcgeometry.visible = True
|
self.fcgeometry.visible = True
|
||||||
|
|
||||||
# clear the Tree
|
# clear the Tree
|
||||||
self.tw.clear()
|
self.clear_tree_sig.emit()
|
||||||
self.geo_parent = self.tw.invisibleRootItem()
|
except Exception as err:
|
||||||
|
self.app.log.debug("AppGeoEditor.deactivate() --> %s" % str(err))
|
||||||
|
|
||||||
# hide the UI
|
# hide the UI
|
||||||
self.geo_frame.hide()
|
self.geo_frame.hide()
|
||||||
@@ -4209,6 +4218,11 @@ class AppGeoEditor(QtCore.QObject):
|
|||||||
except (TypeError, AttributeError):
|
except (TypeError, AttributeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def on_clear_tree(self):
|
||||||
|
self.tw.clearSelection()
|
||||||
|
self.tw.clear()
|
||||||
|
self.geo_parent = self.tw.invisibleRootItem()
|
||||||
|
|
||||||
def add_shape(self, shape, build_ui=True):
|
def add_shape(self, shape, build_ui=True):
|
||||||
"""
|
"""
|
||||||
Adds a shape to the shape storage.
|
Adds a shape to the shape storage.
|
||||||
|
|||||||
Reference in New Issue
Block a user