- added percentage display for work done in NCC Tool
This commit is contained in:
@@ -13,6 +13,7 @@ CAD program, and create G-Code for Isolation routing.
|
|||||||
|
|
||||||
- remade visibility threaded
|
- remade visibility threaded
|
||||||
- reimplemented the thread listening for new FlatCAM process starting with args so it is no longer subclassed but using the moveToThread function
|
- reimplemented the thread listening for new FlatCAM process starting with args so it is no longer subclassed but using the moveToThread function
|
||||||
|
- added percentage display for work done in NCC Tool
|
||||||
|
|
||||||
5.09.2019
|
5.09.2019
|
||||||
|
|
||||||
|
|||||||
@@ -1324,6 +1324,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
# ####### Read the parameters #########################################
|
# ####### Read the parameters #########################################
|
||||||
# #####################################################################
|
# #####################################################################
|
||||||
|
|
||||||
|
units = self.app.ui.general_defaults_form.general_app_group.units_radio.get_value()
|
||||||
|
|
||||||
log.debug("Copper clearing started. Reading parameters.")
|
log.debug("Copper clearing started. Reading parameters.")
|
||||||
ncc_method = method if method else self.ncc_method_radio.get_value()
|
ncc_method = method if method else self.ncc_method_radio.get_value()
|
||||||
|
|
||||||
@@ -1611,7 +1613,13 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
cp = None
|
cp = None
|
||||||
for tool in sorted_tools:
|
for tool in sorted_tools:
|
||||||
log.debug("Starting geometry processing for tool: %s" % str(tool))
|
log.debug("Starting geometry processing for tool: %s" % str(tool))
|
||||||
app_obj.inform.emit(_('[success] Non-Copper Clearing with ToolDia = %s started.') % str(tool))
|
app_obj.inform.emit(
|
||||||
|
'[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '),
|
||||||
|
str(tool),
|
||||||
|
units.lower(),
|
||||||
|
_('started. Progress'),
|
||||||
|
0)
|
||||||
|
)
|
||||||
cleared_geo[:] = []
|
cleared_geo[:] = []
|
||||||
|
|
||||||
# Get remaining tools offset
|
# Get remaining tools offset
|
||||||
@@ -1628,13 +1636,18 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
if type(area) is Polygon:
|
if type(area) is Polygon:
|
||||||
area = MultiPolygon([area])
|
area = MultiPolygon([area])
|
||||||
|
|
||||||
|
# variables to display the percentage of work done
|
||||||
|
step = int(len(area.geoms) / 100)
|
||||||
|
disp_number = 0
|
||||||
|
old_disp_number = 0
|
||||||
|
log.warning("Total number of polygons to be cleared. %s" % str(len(area.geoms)))
|
||||||
|
log.warning("Step: %d" % step)
|
||||||
|
|
||||||
if area.geoms:
|
if area.geoms:
|
||||||
if len(area.geoms) > 0:
|
if len(area.geoms) > 0:
|
||||||
# pol_nr = 0
|
pol_nr = 0
|
||||||
for p in area.geoms:
|
for p in area.geoms:
|
||||||
if p is not None:
|
if p is not None:
|
||||||
# pol_nr += 1
|
|
||||||
# log.debug("Polygons cleared: %d" % pol_nr)
|
|
||||||
try:
|
try:
|
||||||
if isinstance(p, Polygon):
|
if isinstance(p, Polygon):
|
||||||
if ncc_method == 'standard':
|
if ncc_method == 'standard':
|
||||||
@@ -1673,7 +1686,22 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
app_obj.poly_not_cleared = True
|
app_obj.poly_not_cleared = True
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# check if there is a geometry at all in the cleared geometry
|
pol_nr += 1
|
||||||
|
disp_number = int(pol_nr / step)
|
||||||
|
# log.debug("Polygons cleared: %d" % pol_nr)
|
||||||
|
|
||||||
|
if disp_number > old_disp_number and disp_number <= 100:
|
||||||
|
app_obj.inform.emit(
|
||||||
|
'[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '),
|
||||||
|
str(tool),
|
||||||
|
units.lower(),
|
||||||
|
_('started. Progress'),
|
||||||
|
disp_number)
|
||||||
|
)
|
||||||
|
old_disp_number = disp_number
|
||||||
|
# log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number))
|
||||||
|
|
||||||
|
# check if there is a geometry at all in the cleared geometry
|
||||||
if cleared_geo:
|
if cleared_geo:
|
||||||
# Overall cleared area
|
# Overall cleared area
|
||||||
cleared = empty.buffer(-offset * (1 + overlap)).buffer(-tool / 1.999999).buffer(
|
cleared = empty.buffer(-offset * (1 + overlap)).buffer(-tool / 1.999999).buffer(
|
||||||
@@ -1871,12 +1899,19 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
area = empty.buffer(0)
|
area = empty.buffer(0)
|
||||||
|
|
||||||
log.debug("Copper clearing. Finished calculation of 'empty' area.")
|
log.debug("Copper clearing. Finished calculation of 'empty' area.")
|
||||||
|
|
||||||
# Generate area for each tool
|
# Generate area for each tool
|
||||||
while sorted_tools:
|
while sorted_tools:
|
||||||
tool = sorted_tools.pop(0)
|
tool = sorted_tools.pop(0)
|
||||||
log.debug("Starting geometry processing for tool: %s" % str(tool))
|
log.debug("Starting geometry processing for tool: %s" % str(tool))
|
||||||
|
|
||||||
app_obj.inform.emit(_('[success] Non-Copper Rest Clearing with ToolDia = %s started.') % str(tool))
|
app_obj.inform.emit(
|
||||||
|
'[success] %s %s%s %s: %d%%' % (_('Non-Copper Rest Clearing with tool diameter = '),
|
||||||
|
str(tool),
|
||||||
|
units.lower(),
|
||||||
|
_('started. Progress'),
|
||||||
|
0)
|
||||||
|
)
|
||||||
|
|
||||||
tool_used = tool - 1e-12
|
tool_used = tool - 1e-12
|
||||||
cleared_geo[:] = []
|
cleared_geo[:] = []
|
||||||
@@ -1901,8 +1936,16 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
area = MultiPolygon(deepcopy(allparts))
|
area = MultiPolygon(deepcopy(allparts))
|
||||||
allparts[:] = []
|
allparts[:] = []
|
||||||
|
|
||||||
|
# variables to display the percentage of work done
|
||||||
|
step = int(len(area.geoms) / 100)
|
||||||
|
disp_number = 0
|
||||||
|
old_disp_number = 0
|
||||||
|
log.warning("Total number of polygons to be cleared. %s" % str(len(area.geoms)))
|
||||||
|
log.warning("Step: %d" % step)
|
||||||
|
|
||||||
if area.geoms:
|
if area.geoms:
|
||||||
if len(area.geoms) > 0:
|
if len(area.geoms) > 0:
|
||||||
|
pol_nr = 0
|
||||||
for p in area.geoms:
|
for p in area.geoms:
|
||||||
if p is not None:
|
if p is not None:
|
||||||
if isinstance(p, Polygon):
|
if isinstance(p, Polygon):
|
||||||
@@ -1925,31 +1968,46 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
|||||||
# this polygon should be added to a list and then try clear it with
|
# this polygon should be added to a list and then try clear it with
|
||||||
# a smaller tool
|
# a smaller tool
|
||||||
rest_geo.append(p)
|
rest_geo.append(p)
|
||||||
elif isinstance(p, MultiPolygon):
|
elif isinstance(p, MultiPolygon):
|
||||||
for poly in p:
|
for poly in p:
|
||||||
if poly is not None:
|
if poly is not None:
|
||||||
try:
|
try:
|
||||||
if ncc_method == 'standard':
|
if ncc_method == 'standard':
|
||||||
cp = self.clear_polygon(poly, tool_used,
|
cp = self.clear_polygon(poly, tool_used,
|
||||||
self.app.defaults["gerber_circle_steps"],
|
self.app.defaults["gerber_circle_steps"],
|
||||||
overlap=overlap, contour=contour,
|
overlap=overlap, contour=contour,
|
||||||
connect=connect)
|
connect=connect)
|
||||||
elif ncc_method == 'seed':
|
elif ncc_method == 'seed':
|
||||||
cp = self.clear_polygon2(poly, tool_used,
|
cp = self.clear_polygon2(poly, tool_used,
|
||||||
self.app.defaults["gerber_circle_steps"],
|
self.app.defaults["gerber_circle_steps"],
|
||||||
overlap=overlap, contour=contour,
|
overlap=overlap, contour=contour,
|
||||||
connect=connect)
|
connect=connect)
|
||||||
else:
|
else:
|
||||||
cp = self.clear_polygon3(poly, tool_used,
|
cp = self.clear_polygon3(poly, tool_used,
|
||||||
self.app.defaults["gerber_circle_steps"],
|
self.app.defaults["gerber_circle_steps"],
|
||||||
overlap=overlap, contour=contour,
|
overlap=overlap, contour=contour,
|
||||||
connect=connect)
|
connect=connect)
|
||||||
cleared_geo.append(list(cp.get_objects()))
|
cleared_geo.append(list(cp.get_objects()))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
log.warning("Polygon can't be cleared. %s" % str(e))
|
log.warning("Polygon can't be cleared. %s" % str(e))
|
||||||
# this polygon should be added to a list and then try clear it with
|
# this polygon should be added to a list and then try clear it with
|
||||||
# a smaller tool
|
# a smaller tool
|
||||||
rest_geo.append(poly)
|
rest_geo.append(poly)
|
||||||
|
|
||||||
|
pol_nr += 1
|
||||||
|
disp_number = int(pol_nr / step)
|
||||||
|
# log.debug("Polygons cleared: %d" % pol_nr)
|
||||||
|
|
||||||
|
if disp_number > old_disp_number and disp_number <= 100:
|
||||||
|
app_obj.inform.emit(
|
||||||
|
'[success] %s %s%s %s: %d%%' % (_('Non-Copper Clearing with tool diameter = '),
|
||||||
|
str(tool),
|
||||||
|
units.lower(),
|
||||||
|
_('started. Progress'),
|
||||||
|
disp_number)
|
||||||
|
)
|
||||||
|
old_disp_number = disp_number
|
||||||
|
# log.debug("Polygons cleared: %d. Percentage done: %d%%" % (pol_nr, disp_number))
|
||||||
|
|
||||||
# check if there is a geometry at all in the cleared geometry
|
# check if there is a geometry at all in the cleared geometry
|
||||||
if cleared_geo:
|
if cleared_geo:
|
||||||
|
|||||||
Reference in New Issue
Block a user