|
|
|
|
@ -7,8 +7,14 @@ import FreeCAD as App
|
|
|
|
|
import FreeCADGui as Gui
|
|
|
|
|
import DeviceImport
|
|
|
|
|
import DevicePreview
|
|
|
|
|
import ExchangeWriteBack
|
|
|
|
|
import TerminalImport
|
|
|
|
|
try:
|
|
|
|
|
import ExchangeWriteBack
|
|
|
|
|
except Exception:
|
|
|
|
|
ExchangeWriteBack = None
|
|
|
|
|
try:
|
|
|
|
|
import TerminalImport
|
|
|
|
|
except Exception:
|
|
|
|
|
TerminalImport = None
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
from PySide6 import QtCore, QtWidgets
|
|
|
|
|
@ -84,6 +90,16 @@ def _show_error(title, message):
|
|
|
|
|
QtWidgets.QMessageBox.critical(_get_main_window(), title, message)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _terminal_report_not_available():
|
|
|
|
|
return {
|
|
|
|
|
"imported_terminals": 0,
|
|
|
|
|
"updated_terminals": 0,
|
|
|
|
|
"removed_terminals": 0,
|
|
|
|
|
"skipped_terminals": 0,
|
|
|
|
|
"warnings": ["3D terminal import module is not available."],
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _qt_class_name(widget):
|
|
|
|
|
try:
|
|
|
|
|
return widget.metaObject().className()
|
|
|
|
|
@ -721,34 +737,42 @@ def _run_scheduled_device_import(attempt=0):
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
terminal_report = TerminalImport.import_terminals_from_payload(payload, scene_path)
|
|
|
|
|
except TerminalImport.TerminalImportError as exc:
|
|
|
|
|
_append_debug_log("terminal import failed: {0}".format(exc))
|
|
|
|
|
_show_error("QET Exchange", str(exc))
|
|
|
|
|
App.Console.PrintError("[FreeCADExchange] {0}\n".format(exc))
|
|
|
|
|
return
|
|
|
|
|
except Exception as exc:
|
|
|
|
|
_append_debug_log("unexpected terminal import exception: {0}".format(exc))
|
|
|
|
|
_append_debug_log(traceback.format_exc())
|
|
|
|
|
_show_error("QET Exchange", "Failed to import 3D terminals:\n{0}".format(exc))
|
|
|
|
|
App.Console.PrintError(
|
|
|
|
|
"[FreeCADExchange] Failed to import terminals: {0}\n".format(exc)
|
|
|
|
|
)
|
|
|
|
|
return
|
|
|
|
|
if TerminalImport is None:
|
|
|
|
|
_append_debug_log("terminal import skipped: TerminalImport module unavailable")
|
|
|
|
|
terminal_report = _terminal_report_not_available()
|
|
|
|
|
else:
|
|
|
|
|
try:
|
|
|
|
|
terminal_report = TerminalImport.import_terminals_from_payload(payload, scene_path)
|
|
|
|
|
except TerminalImport.TerminalImportError as exc:
|
|
|
|
|
_append_debug_log("terminal import failed: {0}".format(exc))
|
|
|
|
|
_show_error("QET Exchange", str(exc))
|
|
|
|
|
App.Console.PrintError("[FreeCADExchange] {0}\n".format(exc))
|
|
|
|
|
return
|
|
|
|
|
except Exception as exc:
|
|
|
|
|
_append_debug_log("unexpected terminal import exception: {0}".format(exc))
|
|
|
|
|
_append_debug_log(traceback.format_exc())
|
|
|
|
|
_show_error("QET Exchange", "Failed to import 3D terminals:\n{0}".format(exc))
|
|
|
|
|
App.Console.PrintError(
|
|
|
|
|
"[FreeCADExchange] Failed to import terminals: {0}\n".format(exc)
|
|
|
|
|
)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
setattr(App, STATE_TERMINAL_IMPORT_REPORT, terminal_report)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
writeback_report = ExchangeWriteBack.write_back_document(
|
|
|
|
|
App.ActiveDocument, scene_path=scene_path, payload=payload
|
|
|
|
|
)
|
|
|
|
|
except Exception as exc:
|
|
|
|
|
_append_debug_log("write-back failed after import: {0}".format(exc))
|
|
|
|
|
_append_debug_log(traceback.format_exc())
|
|
|
|
|
if ExchangeWriteBack is None:
|
|
|
|
|
_append_debug_log("write-back skipped: ExchangeWriteBack module unavailable")
|
|
|
|
|
writeback_report = None
|
|
|
|
|
else:
|
|
|
|
|
setattr(App, STATE_WRITEBACK_REPORT, writeback_report)
|
|
|
|
|
try:
|
|
|
|
|
writeback_report = ExchangeWriteBack.write_back_document(
|
|
|
|
|
App.ActiveDocument, scene_path=scene_path, payload=payload
|
|
|
|
|
)
|
|
|
|
|
except Exception as exc:
|
|
|
|
|
_append_debug_log("write-back failed after import: {0}".format(exc))
|
|
|
|
|
_append_debug_log(traceback.format_exc())
|
|
|
|
|
writeback_report = None
|
|
|
|
|
else:
|
|
|
|
|
setattr(App, STATE_WRITEBACK_REPORT, writeback_report)
|
|
|
|
|
|
|
|
|
|
App.Console.PrintMessage(
|
|
|
|
|
"[FreeCADExchange] Imported terminals: {0}, updated: {1}, removed: {2}\n".format(
|
|
|
|
|
|