This is a implementation of the the sorting of the tools found in Excellon file done in Python language and independent of the UI. There is no need to revert the previous solution as that one will make the sorting visible in GUI.

This commit is contained in:
Marius Stanciu 2016-02-15 23:40:08 +02:00
parent 13a845f069
commit a35a422bcc
1 changed files with 12 additions and 4 deletions

View File

@ -55,6 +55,8 @@ from svgparse import *
import logging
import operator
log = logging.getLogger('base2')
log.setLevel(logging.DEBUG)
# log.setLevel(logging.WARNING)
@ -2708,12 +2710,18 @@ class CNCjob(Geometry):
log.debug("Creating CNC Job from Excellon...")
# Tools
#sort the tools list by the second item in tuple (here we have a dict with diameter of the tool)
#so we actually are sorting the tools by diameter
sorted_tools = sorted(exobj.tools.items(), key = operator.itemgetter(1))
if tools == "all":
tools = [tool for tool in exobj.tools]
tools = str([i[0] for i in sorted_tools]) #we get a string of ordered tools
log.debug("Tools 'all' and sorted are: %s" % str(tools))
else:
tools = [x.strip() for x in tools.split(",")]
tools = filter(lambda i: i in exobj.tools, tools)
log.debug("Tools are: %s" % str(tools))
selected_tools = [x.strip() for x in tools.split(",")] #we strip spaces and also separate the tools by ','
selected_tools = filter(lambda i: i in selected_tools, selected_tools)
tools = [i for i,j in sorted_tools for k in selected_tools if i == k] #create a list of tools from the sorted_tools list only if the tools is in the selected tools
log.debug("Tools selected and sorted are: %s" % str(tools))
# Points (Group by tool)
points = {}