fix/FCStd模板命令行导入兼容-zwl-0520

dev
Zhaowenlong 6 days ago
parent 0ea8998070
commit 9bd8e15f31

@ -574,4 +574,5 @@ ManualWiring.py
- 2026-05-20新增 FCStd 设备模板制作基础能力,支持把模型上的点位创建为带 `Role="Terminal"`、`CanWire=true`、`QetTemplateSlotName` 的模板端子 LCS已用单元测试验证端子语义写入和模板校验逻辑。
- 2026-05-20补充 A 方案资产流转设计,明确 `.FCStd` 为正式设备资产zwl/QET 只负责选择、保存、导出 `.FCStd` 路径FreeCADExchange 负责读取 LCS 端子语义并生成工程端子。
- 2026-05-20补上 `QET_Template_SaveAsFCStd` 模板保存命令,保存前会校验至少存在一个有效模板端子,并自动补 `.FCStd` 后缀;已用单元测试验证保存路径和端子校验结果。
- 2026-05-20修复 `TemplateAuthoring.py``FreeCADCmd.exe` 命令行模式下导入时误注册 GUI 命令的问题;已在运行目录验证创建 `P1` 模板端子、保存 `.FCStd`、重新打开后端子语义仍可识别。
```

@ -321,7 +321,7 @@ def register_commands():
global _COMMANDS_REGISTERED
if _COMMANDS_REGISTERED:
return
if Gui is None:
if Gui is None or not hasattr(Gui, "addCommand"):
return
Gui.addCommand("QET_Template_AddTerminal", CommandAddTemplateTerminal())
Gui.addCommand("QET_Template_ValidateTerminals", CommandValidateTemplateTerminals())

@ -46,6 +46,11 @@ def _install_fake_freecad():
sys.modules["FreeCADGui"] = fake_freecadgui
def _install_fake_freecad_without_gui_commands():
_install_fake_freecad()
sys.modules["FreeCADGui"] = types.ModuleType("FreeCADGui")
class FakeViewObject:
def __init__(self):
self.Visibility = True
@ -115,6 +120,13 @@ def _reload_modules():
class TemplateAuthoringTest(unittest.TestCase):
def test_import_skips_command_registration_when_gui_has_no_add_command(self):
_install_fake_freecad_without_gui_commands()
template_authoring = _reload_modules()
self.assertTrue(hasattr(template_authoring, "save_template_as_fcstd"))
def test_create_template_terminal_writes_lcs_semantics(self):
_install_fake_freecad()
template_authoring = _reload_modules()

Loading…
Cancel
Save