Merge pull request #67 from Fisheiyy/naming-rework

Output folder name rework & Minor correction
This commit is contained in:
Benny Megidish
2023-06-14 10:06:55 +03:00
committed by GitHub
2 changed files with 36 additions and 29 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ netlistFileName = 'netlist.ipc'
designatorsFileName = 'designators.csv'
placementFileName = 'positions.csv'
bomFileName = 'bom.csv'
gerberArchiveName = 'gerber.zip'
gerberArchiveName = 'gerbers.zip'
outputFolder = 'production'
plotPlan = [
+35 -28
View File
@@ -4,6 +4,7 @@ import pcbnew
import shutil
import tempfile
import webbrowser
import datetime
from threading import Thread
from .events import StatusEvent
from .process import ProcessManager
@@ -20,46 +21,47 @@ class ProcessThread(Thread):
def run(self):
# initializing
self.report(0)
self.progress(0)
temp_dir = tempfile.mkdtemp()
gerber_dir = os.path.join(temp_dir, 'gerber')
assembly_dir = os.path.join(temp_dir, 'assembly')
timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')
os.makedirs(gerber_dir)
os.makedirs(assembly_dir)
temp_dir = tempfile.mkdtemp() + timestamp
os.makedirs(temp_dir)
os.makedirs(temp_dir + "_g")
_, temp_file = tempfile.mkstemp()
project_directory = os.path.dirname(self.process_manager.board.GetFileName())
output_path = os.path.join(project_directory, outputFolder)
try:
# configure and generate gerber
self.report(5)
self.process_manager.generate_gerber(gerber_dir)
# generate gerber
self.progress(5)
self.process_manager.generate_gerber(temp_dir + "_g")
# generate drill file
self.report(15)
self.process_manager.generate_drills(gerber_dir)
self.progress(15)
self.process_manager.generate_drills(temp_dir + "_g")
# generate netlist
self.report(25)
self.process_manager.generate_netlist(assembly_dir)
self.progress(25)
self.process_manager.generate_netlist(temp_dir)
# generate pick and place file
self.report(40)
self.process_manager.generate_positions(assembly_dir)
self.progress(40)
self.process_manager.generate_positions(temp_dir)
# generate BOM file
self.report(60)
self.process_manager.generate_bom(assembly_dir)
self.progress(60)
self.process_manager.generate_bom(temp_dir)
# generate production archive
self.report(75)
temp_file = self.process_manager.generate_archive(gerber_dir, temp_file)
self.progress(75)
temp_file = self.process_manager.generate_archive(temp_dir + "_g", temp_file)
shutil.move(temp_file, temp_dir)
shutil.rmtree(temp_dir + "_g")
temp_file = os.path.join(temp_dir, os.path.basename(temp_file))
except Exception as e:
wx.MessageBox(str(e), "Error", wx.OK | wx.ICON_ERROR)
self.report(-1)
self.progress(-1)
return
# progress bar done animation
@@ -72,7 +74,7 @@ class ProcessThread(Thread):
break
read_so_far += len(data)
percent = read_so_far * 1e2 / total_size
self.report(75 + percent / 8)
self.progress(75 + percent / 8)
# generate gerber name
title_block = self.process_manager.board.GetTitleBlock()
@@ -88,23 +90,28 @@ class ProcessThread(Thread):
company = pcbnew.ExpandTextVars(company, project)
file_date = pcbnew.ExpandTextVars(file_date, project)
# make output dir
filename = os.path.splitext(os.path.basename(self.process_manager.board.GetFileName()))[0]
gerberArchiveName = "_".join(("{} {}".format(title or filename, revision or '').strip() + '.zip').split())
name = "_".join(("{} {} {}".format(title or filename, revision or '', timestamp).strip()).split())
output_path = os.path.join(project_directory, outputFolder, name)
os.makedirs(output_path)
# rename gerber archive
os.rename(temp_file, os.path.join(gerber_dir, gerberArchiveName))
gerberArchiveName = "_".join(("{} {}".format(title or filename, revision or '').strip() + '.zip').split())
os.rename(temp_file, os.path.join(temp_dir, gerberArchiveName))
# copy & open cleaned output dir
# copy to & open output dir
try:
if os.path.exists(output_path):
shutil.rmtree(output_path)
shutil.copytree(temp_dir, output_path)
webbrowser.open("file://%s" % (output_path))
shutil.rmtree(temp_dir)
except Exception as e:
webbrowser.open("file://%s" % (temp_dir))
self.report(-1)
self.progress(-1)
def report(self, status):
wx.PostEvent(self.wx, StatusEvent(status))
def progress(self, percent):
wx.PostEvent(self.wx, StatusEvent(percent))