Files
2025-08-28 03:07:33 +07:00

89 lines
2.2 KiB
Python

#https://opensource.org/licenses/MIT
import os
import webbrowser
import shutil
import wx
import datetime
from threading import Thread
from .result_event import *
from .config import *
from .process import *
class PCBWayThread(Thread):
def __init__(self, wxObject):
Thread.__init__(self)
self.process = PCBWayProcess()
self.wxObject = wxObject
self.start()
def run(self):
try:
p_name = self.process.get_basedir()
self.report(5)
temp_dir = p_name + productionDir + datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
self.report(15)
os.makedirs(temp_dir)
os.makedirs(temp_dir + "gerber")
self.report(25)
self.process.get_gerber_file(temp_dir + "gerber")
self.report(35)
self.process.get_netlist_file(temp_dir)
self.report(45)
self.process.get_components_file(temp_dir)
self.report(55)
temp_file = shutil.make_archive(self.process.get_basename() + "_gerber", 'zip', temp_dir + "gerber")
self.report(60)
shutil.move(temp_file, temp_dir)
shutil.rmtree(temp_dir + "gerber")
self.report(65)
temp_file = os.path.join(temp_dir, os.path.basename(temp_file))
self.report(75)
readsofar = 0
totalsize = os.path.getsize(temp_file)
with open(temp_file, 'rb') as file:
while True:
data = file.read(10)
if not data:
break
readsofar += len(data)
percent = readsofar * 1e2 / totalsize
self.report(75 + percent / 9)
webbrowser.open("file://%s" % (temp_dir))
except Exception as e:
wx.MessageBox(str(e), "Error", wx.OK | wx.ICON_ERROR)
self.report(-1)
return
self.report(-1)
def report(self, status):
wx.PostEvent(self.wxObject, ResultEvent(status))