gui um Selectionsbox für Pfad zu 3D Modell ergänzt. callbacks der Knöpfe erfolgt jetzt nur noch im Controller. 3D-Modell Pflichtfeld implementiert
This commit is contained in:
+10
-1
@@ -2,5 +2,14 @@
|
|||||||
\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool
|
\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\02_Bedarfspool
|
||||||
\\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
|
\\ssg.local\freigaben\SIVAS_CAD_EDM\Schulung\Migration\02_Bedarfspool
|
||||||
|
|
||||||
|
# [3D-Modelle]
|
||||||
|
# BaugruppeSchweissbaugruppe=\\ssg.local\freigaben\Abteilungen\Entwicklung\CAD\Standards\SolidEdge\Template\DIN Metric\baugruppe.asm
|
||||||
|
# Kaufteil=\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
|
||||||
|
# Einzelteil=\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
|
||||||
|
# EinzelteilDefault=\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\01_Rohdatenpool\
|
||||||
|
|
||||||
[3D-Modelle]
|
[3D-Modelle]
|
||||||
\\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\01_Rohdatenpool
|
BaugruppeSchweissbaugruppe=Baugruppe
|
||||||
|
Kaufteil=Kaufteil
|
||||||
|
Einzelteil=Einzelteil
|
||||||
|
EinzelteilDefault=C:\Users\m.stangl\Documents\10-Develop\CreoMigrate\work\test
|
||||||
@@ -7,6 +7,7 @@ from controller import Controller
|
|||||||
from manage_configs import Configs, SivasAssemblyData
|
from manage_configs import Configs, SivasAssemblyData
|
||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
|
import json
|
||||||
from get_teilestamm import FetchSivasTeilestamm
|
from get_teilestamm import FetchSivasTeilestamm
|
||||||
|
|
||||||
|
|
||||||
@@ -117,7 +118,7 @@ if __name__ == '__main__':
|
|||||||
|
|
||||||
model = CadItem()
|
model = CadItem()
|
||||||
if args.demo:
|
if args.demo:
|
||||||
model.from_json(demo_data)
|
model.from_json(json.loads(demo_data))
|
||||||
build_gui(model, configs)
|
build_gui(model, configs)
|
||||||
|
|
||||||
elif args.sivasid:
|
elif args.sivasid:
|
||||||
@@ -133,7 +134,8 @@ if __name__ == '__main__':
|
|||||||
sivas_teilestamm = FetchSivasTeilestamm(sivasid, data_dir)
|
sivas_teilestamm = FetchSivasTeilestamm(sivasid, data_dir)
|
||||||
|
|
||||||
sivas_teilestamm.fetch_from_db(args.uselocal)
|
sivas_teilestamm.fetch_from_db(args.uselocal)
|
||||||
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
if not args.uselocal:
|
||||||
|
sivas_teilestamm.get_unmigrated_teilstamm_csvs()
|
||||||
redids = sivas_teilestamm.get_red_ids()
|
redids = sivas_teilestamm.get_red_ids()
|
||||||
sad = SivasAssemblyData(data_dir, filename)
|
sad = SivasAssemblyData(data_dir, filename)
|
||||||
parent_children = sad.get_parent_children()
|
parent_children = sad.get_parent_children()
|
||||||
|
|||||||
+37
-27
@@ -1,6 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import os
|
import os
|
||||||
|
import glob
|
||||||
|
|
||||||
class DataModel:
|
class DataModel:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@@ -417,6 +418,9 @@ class GuiLogic():
|
|||||||
self.call_and_set_data('cb_neuaufbau')
|
self.call_and_set_data('cb_neuaufbau')
|
||||||
self.call_and_set_data('cb_aus_halbzeug_neu')
|
self.call_and_set_data('cb_aus_halbzeug_neu')
|
||||||
self.call_and_set_data('cb_halbzeugoberflaeche')
|
self.call_and_set_data('cb_halbzeugoberflaeche')
|
||||||
|
self.call_and_set_data('cb_lebenszyklus_status_neu')
|
||||||
|
self.call_and_set_data('cb_3Dmodel_neu')
|
||||||
|
|
||||||
|
|
||||||
def call_and_set_data(self, callbackfunc):
|
def call_and_set_data(self, callbackfunc):
|
||||||
eval('self._model.set_gui_dict(self.'+callbackfunc+'(None))')
|
eval('self._model.set_gui_dict(self.'+callbackfunc+'(None))')
|
||||||
@@ -474,25 +478,17 @@ class GuiLogic():
|
|||||||
pass
|
pass
|
||||||
elif key == 'cb_farbe_neu':
|
elif key == 'cb_farbe_neu':
|
||||||
ret = self.cb_farbe_neu(value)
|
ret = self.cb_farbe_neu(value)
|
||||||
# Aktionen
|
|
||||||
elif key == 'cb_speichern':
|
|
||||||
self._model.save_to_file()
|
|
||||||
pass
|
|
||||||
elif key == 'cb_migrieren':
|
|
||||||
pass
|
|
||||||
elif key == 'cb_zurücksetzen':
|
|
||||||
pass
|
|
||||||
elif key == 'cb_suche_asm':
|
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
raise Exception("this callback does not exist "+key)
|
raise Exception("this callback does not exist "+key)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_dependent(self, key):
|
def get_dependent(self, key):
|
||||||
"""gibt die Namen der Callbacks zurück, welche nach dem Aufruf der ursprünglichen Methode wegen der Abhängigkeiten der Comboboxen anschliessend folgen sollen"""
|
""" gibt die Namen der Callbacks zurück, welche nach dem Aufruf der ursprünglichen Methode
|
||||||
|
wegen der Abhängigkeiten der Comboboxen anschliessend folgen sollen
|
||||||
|
"""
|
||||||
ret = list()
|
ret = list()
|
||||||
if key == 'cb_pdm_kategorie_neu':
|
if key == 'cb_pdm_kategorie_neu':
|
||||||
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu']
|
ret = ['cb_neuaufbau', 'cb_aus_halbzeug_neu', 'cb_3Dmodel_neu']
|
||||||
elif key == 'cb_neuaufbau':
|
elif key == 'cb_neuaufbau':
|
||||||
ret = []
|
ret = []
|
||||||
elif key == 'cb_aus_halbzeug_neu':
|
elif key == 'cb_aus_halbzeug_neu':
|
||||||
@@ -539,6 +535,7 @@ class GuiLogic():
|
|||||||
ret = []
|
ret = []
|
||||||
elif key == 'cb_farbe_neu':
|
elif key == 'cb_farbe_neu':
|
||||||
ret = []
|
ret = []
|
||||||
|
# Aktionen der Knöpfe werden vom Controller verarbeitet
|
||||||
elif key == 'cb_speichern':
|
elif key == 'cb_speichern':
|
||||||
ret = []
|
ret = []
|
||||||
elif key == 'cb_migrieren':
|
elif key == 'cb_migrieren':
|
||||||
@@ -547,6 +544,8 @@ class GuiLogic():
|
|||||||
ret = []
|
ret = []
|
||||||
elif key == 'cb_suche_asm':
|
elif key == 'cb_suche_asm':
|
||||||
ret = []
|
ret = []
|
||||||
|
elif key == 'cb_3dsuchen':
|
||||||
|
ret = []
|
||||||
else:
|
else:
|
||||||
raise Exception("this callback does not exist "+key)
|
raise Exception("this callback does not exist "+key)
|
||||||
return ret
|
return ret
|
||||||
@@ -611,7 +610,7 @@ class GuiLogic():
|
|||||||
ret['lebenszyklus_status_neu'] = lstatus[0]
|
ret['lebenszyklus_status_neu'] = lstatus[0]
|
||||||
ret['cb_lebenszyklus_status_neu'] = lstatus
|
ret['cb_lebenszyklus_status_neu'] = lstatus
|
||||||
else:
|
else:
|
||||||
ret['cb_lebenszyklus_status_neu'] = selected
|
ret['lebenszyklus_status_neu'] = selected
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def cb_halbzeugfarbe(self, selected):
|
def cb_halbzeugfarbe(self, selected):
|
||||||
@@ -646,40 +645,51 @@ class GuiLogic():
|
|||||||
def cb_3Dmodel_neu(self, selected):
|
def cb_3Dmodel_neu(self, selected):
|
||||||
ret = dict()
|
ret = dict()
|
||||||
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||||
|
pfad = self._config.Pfade.get('3D-Modelle', 'BaugruppeSchweissbaugruppe')
|
||||||
|
|
||||||
|
pfad = ''
|
||||||
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
|
if pdm_kategorie_neu == "Baugruppe" or pdm_kategorie_neu == "Schweissbaugruppe":
|
||||||
# Defaultwert = \\ssg.local\freigaben\Abteilungen\Entwicklung\CAD\Standards\SolidEdge\Template\DIN Metric\baugruppe.asm
|
pfad = self._config.Pfade.get('3D-Modelle', 'BaugruppeSchweissbaugruppe')
|
||||||
|
ret['cb_3Dmodel_neu'] = [pfad]
|
||||||
# Dropdownwerte = keine
|
# Dropdownwerte = keine
|
||||||
# state_ComboBox = disabled
|
# state_ComboBox = disabled
|
||||||
# state_Button = disabled
|
# state_Button = disabled
|
||||||
# ret = {
|
|
||||||
# '': '',
|
|
||||||
# '': '',
|
|
||||||
# }
|
|
||||||
pass
|
|
||||||
elif pdm_kategorie_neu == "Kaufteil":
|
elif pdm_kategorie_neu == "Kaufteil":
|
||||||
# Defaultwert = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
|
pfad = self._config.Pfade.get('3D-Modelle', 'Kaufteil')
|
||||||
|
ret['cb_3Dmodel_neu'] = [pfad]
|
||||||
# Dropdownwerte = keine
|
# Dropdownwerte = keine
|
||||||
# state_ComboBox = disabled
|
# state_ComboBox = disabled
|
||||||
# state_Button = disabled
|
# state_Button = disabled
|
||||||
pass
|
|
||||||
elif pdm_kategorie_neu == "Einzelteil":
|
elif pdm_kategorie_neu == "Einzelteil":
|
||||||
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
|
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
|
||||||
neuaufbau = self._model.get_gui_data("neuaufbau")
|
neuaufbau = self._model.get_gui_data("neuaufbau")
|
||||||
if aus_halbzeug == "True" or neuaufbau == "True":
|
if aus_halbzeug == "True" or neuaufbau == "True":
|
||||||
# Defaultwert = \\ssg.local\freigaben\SIVAS_CAD_EDM\Migration\06_3D_Vorlagen\ET_mit_Volumen.par
|
pfad = self._config.Pfade.get('3D-Modelle', 'Einzelteil')
|
||||||
|
ret['cb_3Dmodel_neu'] = [pfad]
|
||||||
# Dropdownwerte = keine
|
# Dropdownwerte = keine
|
||||||
# state_ComboBox = disabled
|
# state_ComboBox = disabled
|
||||||
# state_Button = disabled
|
# state_Button = disabled
|
||||||
pass
|
|
||||||
else:
|
else:
|
||||||
# Defaultwert = ""
|
search_path = self._config.Pfade.get('3D-Modelle', 'EinzelteilDefault')
|
||||||
|
itemid = str(self._model.get_current_item_id())
|
||||||
|
pfade = []
|
||||||
|
for root, dirnames, filenames in os.walk(search_path):
|
||||||
|
pfade.extend(glob.glob(root + "/"+itemid+".par"))
|
||||||
|
for root, dirnames, filenames in os.walk(search_path):
|
||||||
|
pfade.extend(glob.glob(root + "/"+itemid+".asm"))
|
||||||
# Dropdownwerte = Dateipfade von allen .par-Dateien, die die aktuelle Teilenummer im Dateinamen aufweisen und sich gleichzeitig in einem der rekursiv durchsuchten Pfade aus der Sektion "3D-Modelle" in "Zielpfade.cfg" befinden.
|
# Dropdownwerte = Dateipfade von allen .par-Dateien, die die aktuelle Teilenummer im Dateinamen aufweisen und sich gleichzeitig in einem der rekursiv durchsuchten Pfade aus der Sektion "3D-Modelle" in "Zielpfade.cfg" befinden.
|
||||||
# state_ComboBox = readonly
|
# state_ComboBox = readonly
|
||||||
# state_Button = keiner
|
# state_Button = keiner
|
||||||
|
ret['cb_3Dmodel_neu'] = pfade
|
||||||
|
if len(pfade) == 0:
|
||||||
|
pfad ="<id not found>"
|
||||||
|
else:
|
||||||
|
pfad = pfade[0]
|
||||||
|
|
||||||
# IF Button "Durchsuchen" geklickt und benutzerdefinierte Solid Edge-Datei gewählt:
|
if selected is None:
|
||||||
# Defaultwert = Dateipfad der gewählten Solid Edge-Datei
|
ret['model3d_neu'] = pfad
|
||||||
pass
|
else:
|
||||||
|
ret['model3d_neu'] = selected
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+29
-5
@@ -162,16 +162,40 @@ class Controller(Observer):
|
|||||||
if not self._model:
|
if not self._model:
|
||||||
raise Exception("no model yet added")
|
raise Exception("no model yet added")
|
||||||
|
|
||||||
# Logik um neue Werte in Oberfläche oder Modell zu füllen
|
# Aktionen der Knöpfe
|
||||||
model_values = self._model.callback(key, value)
|
if key == 'cb_speichern':
|
||||||
if model_values:
|
self._model.save_to_file()
|
||||||
self.set_gui_dict(model_values)
|
elif key == 'cb_migrieren':
|
||||||
self.refresh_gui()
|
pass
|
||||||
|
elif key == 'cb_zurücksetzen':
|
||||||
|
pass
|
||||||
|
elif key == 'cb_suche_asm':
|
||||||
|
pass
|
||||||
|
elif key == 'cb_3dsuchen':
|
||||||
|
self.suche_3d()
|
||||||
|
|
||||||
|
# callbacks der gui zur
|
||||||
|
else:
|
||||||
|
# Logik um neue Werte in Oberfläche oder Modell zu füllen
|
||||||
|
model_values = self._model.callback(key, value)
|
||||||
|
if model_values:
|
||||||
|
self.set_gui_dict(model_values)
|
||||||
|
self.refresh_gui()
|
||||||
|
|
||||||
# gib dem observer Bescheid, was aufgerufen wurde
|
# gib dem observer Bescheid, was aufgerufen wurde
|
||||||
self.notify(self._model, key,value)
|
self.notify(self._model, key,value)
|
||||||
self.refresh_gui()
|
self.refresh_gui()
|
||||||
|
|
||||||
|
def suche_3d(self):
|
||||||
|
pdm_kategorie_neu = self._model.get_gui_data("pdm_kategorie_neu")
|
||||||
|
aus_halbzeug = self._model.get_gui_data("aus_halbzeug_neu")
|
||||||
|
neuaufbau = self._model.get_gui_data("neuaufbau")
|
||||||
|
# Suche Knopf darf nur bei Einzelteilen funktionieren und wenn Halbzeug/NEuaufbau nicht angehakt sind
|
||||||
|
if pdm_kategorie_neu == "Einzelteil" and aus_halbzeug == "False" or neuaufbau == "False":
|
||||||
|
newpath = self._view.suche_3d()
|
||||||
|
self._model.set_gui_data('model3d_neu', newpath)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+20
-8
@@ -52,6 +52,8 @@ class AllFrames():
|
|||||||
def set_button_content(self, adict):
|
def set_button_content(self, adict):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TreeView():
|
class TreeView():
|
||||||
def __init__(self, frame, nrow=0):
|
def __init__(self, frame, nrow=0):
|
||||||
# a treeview
|
# a treeview
|
||||||
@@ -325,23 +327,21 @@ class RightFramePDM(AllFrames):
|
|||||||
model3d_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
|
model3d_label.grid(column=col_left, row=self.rownum, sticky=tk.W, padx=3, pady=3)
|
||||||
self.model3d_neu = tk.StringVar()
|
self.model3d_neu = tk.StringVar()
|
||||||
self.model3d_combo = ttk.Combobox(frame, textvariable=self.model3d_neu)
|
self.model3d_combo = ttk.Combobox(frame, textvariable=self.model3d_neu)
|
||||||
self.model3d_combo['values'] = ['pfad1 Teilenummer in Dateinamen','pfad2 Teilenummer in Dateinamen']
|
|
||||||
self.model3d_combo['state'] = 'readonly'
|
self.model3d_combo['state'] = 'readonly'
|
||||||
self.model3d_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('cb_3Dmodel_neu', self.model3d_neu.get()))
|
self.model3d_combo.bind('<<ComboboxSelected>>', lambda event:self.callback('cb_3Dmodel_neu', self.model3d_neu.get()))
|
||||||
self.model3d_combo.grid(column=col_left+1, columnspan=2, row=self.rownum, sticky=tk.W, padx=3, pady=3)
|
self.model3d_combo.grid(column=col_left+1, columnspan=2, row=self.rownum, sticky=tk.EW, padx=3, pady=3)
|
||||||
#toplevel = tk.Toplevel()
|
|
||||||
#toplevel.title("search Window")
|
|
||||||
#filename = filedialog.askopenfilename(
|
|
||||||
# parent=toplevel,
|
|
||||||
# title="Browse File"
|
|
||||||
#)
|
|
||||||
self.rownum += 1
|
self.rownum += 1
|
||||||
|
|
||||||
|
#lambda: self.callback("cb_speichern", None)
|
||||||
|
suche3d_button = ttk.Button(frame, text="Durchsuchen..", command=lambda: self.callback("cb_3dsuchen", None))
|
||||||
|
suche3d_button.grid(column=col_left+2, row=self.rownum, sticky=tk.EW)
|
||||||
|
self.rownum += 1
|
||||||
|
|
||||||
separator = ttk.Separator(frame, orient='horizontal')
|
separator = ttk.Separator(frame, orient='horizontal')
|
||||||
separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3)
|
separator.grid(column=col_left, columnspan=3, row=self.rownum, sticky=tk.EW, padx=3, pady=3)
|
||||||
self.rownum += 1
|
self.rownum += 1
|
||||||
|
|
||||||
|
|
||||||
def get_database_str(self):
|
def get_database_str(self):
|
||||||
if self.datenbank.get() == 1:
|
if self.datenbank.get() == 1:
|
||||||
datenbank = "produktiv"
|
datenbank = "produktiv"
|
||||||
@@ -1282,6 +1282,18 @@ class App():
|
|||||||
self.canvas.yview("scroll", event.delta, "units")
|
self.canvas.yview("scroll", event.delta, "units")
|
||||||
return "break"
|
return "break"
|
||||||
|
|
||||||
|
def suche_3d(self):
|
||||||
|
"""create a new window with the file search dialog"""
|
||||||
|
toplevel = tk.Toplevel()
|
||||||
|
toplevel.title("search Window")
|
||||||
|
selected = filename = filedialog.askopenfilename(
|
||||||
|
parent=toplevel,
|
||||||
|
initialdir= os.getcwd(),
|
||||||
|
title="please select .par or .asm file",
|
||||||
|
filetypes=[("Part-Dokumente", ".par"), ("Assembly-Dokumente", ".asm")]
|
||||||
|
)
|
||||||
|
toplevel.destroy()
|
||||||
|
return selected
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user