I think that it will be better to have the drill bits ordered (from the lower diameter to the higher preferably) in the the GCode generated from the Excellon drill file.
My drill bits are in metric system. When we are working with an EDA software we still have to switch in between imperial and metric units, sometime in the same project (most of the through hole components have a pin pitch in imperial units while most of the modern SMT components are in metric). Some footprints for the components are made in imperial units so they have the drill bits diameters stated in inch and sub divisions, thous (mils). When in inch (mils) the drill bit diameter is a nice round number but when converted to mm's it will give something with many decimals.
Because of those above, I frequently find myself in the following situation. When I am looking to my design drill hole diameter list, converted from inch into mm's, I found diameters like (example following, the numbers are not realistic but around there): 1.0mm, 1.0017mm, 0.59999mm, 0.6mm and so on.
Usually, when I see the above, I simply ignore the toolchange request and hit continue but because of the way Flatcam is generating the Gcode, sometimes I cannot do that. Because Flatcam likes to select first one drill bit, let's say 0.6mm and then 3mm, and then 0.5999mm and then maybe 1.0017mm and so on.
You see, in this way I am forced to change the drill bits more than it is necessary. 0.6mm and 0.5999mm can be drilled with the same drill bit and so on.
I know that I could solve this in EDA software by modifying the footprints and changing the drill diameters but this is a tedious task and time consuming.
What I would like to see is that the Gcode generated by Flatcam is at least ordered in the sense that the drill bits toochange requests are made in a ordered fashion.
A better way will be to treat this like they do in pcb2gcode ULP plugin for EagleCAD. They create a list of drill bits and then an interval of drill request diameters for each drill bit. In this way, when the software encounter a drill diameter inside a certain interval, it will select the appointed tool (drill bit).
This way you have only one tool selected and the Gcode for let's say 0.59999mm drill diameter and for 0.6mm drill diameter are generated for only one tool, in my case 0.6mm.
Real Drills Interval low Interval high
0.5mm 0.45mm 0.52mm
0.6mm 0.52mm 0.62mm
0.7mm 0.62mm 0.72mm
and so on.