G-kod ścieżek generuje się poprawnie, ale plik wierceń za cholerę nie chciał...
Tutaj to już myślałem że szlag mnie trafi...
Co prawda domyślałem się, że jeżeli plik nie jest generowany, to się program gdzieś wywala, ale robił to tak dyskretnie, że podejrzanych nie było...
W końcu zobaczyłem w dolnym rogu okna taki skromny komunikat:

No to see shell, ale tam żadnego komunikatu o błędzie nie było...
Program tylko raportował:
Kod: Zaznacz cały
[DEBUG] Creating CNC Job from Excellon for tool: 1
[DEBUG] Using OR-Tools Basic drill path optimization.
W końcu, z braku innych pomysłów, postanowiłem poszukać tego OR-Tools i znalazłem FlatCAM_beta_8.994/appTools/ToolQRCode.py
Szybki test:
Kod: Zaznacz cały
# python3 ToolQRCode.py
Traceback (most recent call last):
File "/opt/FlatCAM_beta_8.994/appTools/ToolQRCode.py", line 11, in <module>
from appTool import AppTool
ModuleNotFoundError: No module named 'appTool'
Nie ma pakietu appTool w Ubuntu 22.04...
Jest apptools (s na końcu), ale to najwyraźniej nie to samo...
Natomiast istnienie popularnego pakietu apptools powoduje, że Google za żadną cholerę nie chce szukać appTool...
Normalnie masakra....
Jedyne co mi przyszło do głowy, to znaleźć wywołanie ToolQRCode.py, zakomentować je i zobaczyć co się stanie...
No to poszukałem pliku zawierającego ciąg "Using OR-Tools Basic drill path optimization" (tak, tak, komunikaty nie biorą się znikąd...) i w FlatCAM_beta_8.994/camlib.py znalazłem następujący fragment:
Kod: Zaznacz cały
# #############################################################################################################
# #############################################################################################################
# ################################## DRILLING !!! #########################################################
# #############################################################################################################
# #############################################################################################################
if opt_type == 'M':
log.debug("Using OR-Tools Metaheuristic Guided Local Search drill path optimization.")
elif opt_type == 'B':
log.debug("Using OR-Tools Basic drill path optimization.")
elif opt_type == 'T':
log.debug("Using Travelling Salesman drill path optimization.")
else:
log.debug("Using no path optimization.")
Pierwsze o czym pomyślałem, to w preferencjach zaznaczyć opcję "Travelling Salesman", ale się okazało że zaznaczać można sobie do woli, a i tak wywala komunikat "Using OR-Tools Basic"....
No coś jest totalnie spieprzone, może celowo, czasem się zdarza że autor blokuje funkcje które go nie satysfakcjonują, ale zostawia je w menu, bo ma nadzieję kiedyś to poprawić...
W każdym razie miałem już dość kombinowania i zrobiłem numer chamski, ale skuteczny:
Kod: Zaznacz cały
# #############################################################################################################
opt_type = 'T'
if opt_type == 'M':
Nietrudno się domyślić, że bez względu na to co było wcześniej, od tej linii będzie użyta opcja "Travelling Salesman", nie używająca trefnego OR-Tools z trefnym importem appTool....
Ta optymalizacja działa dość kiepsko, ale działa i g-kod jest generowany...
Jak pisałem wcześniej, windowsowa wersja robi problemy z unicode, więc pomimo tego skopanego eksportu wierceń, wersja na Linuksa może być atrakcyjna, a że maszyna będzie wiercić trochę dłużej da się przeboleć...