From 2121db4358e54918d0d5f99e1925aa033c6a6139 Mon Sep 17 00:00:00 2001 From: wangdequan Date: Tue, 8 Sep 2026 15:18:24 +0800 Subject: [PATCH] Save latest TechDraw desktop command changes --- .../FreeCADCoreProbe/TechDrawDesktopCommands.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/WebAssembly/FreeCADCoreProbe/TechDrawDesktopCommands.cpp b/src/WebAssembly/FreeCADCoreProbe/TechDrawDesktopCommands.cpp index a8b944c2..0c4f0340 100644 --- a/src/WebAssembly/FreeCADCoreProbe/TechDrawDesktopCommands.cpp +++ b/src/WebAssembly/FreeCADCoreProbe/TechDrawDesktopCommands.cpp @@ -378,6 +378,17 @@ bool dispatchDimensions(const QString& name, const QJsonObject& input, QJsonObje // FC_WEB_IMPLEMENTED_DESKTOP_COMMAND("TechDraw_Balloon") bool dispatchDocumentViews(const QString& name, const QJsonObject& input, QJsonObject& result) { + const QSet webCommands = {QStringLiteral("TechDraw_CompDimensionTools"), QStringLiteral("TechDraw_DecorateLine"), QStringLiteral("TechDraw_Dimension"), QStringLiteral("TechDraw_FaceCenterLine"), QStringLiteral("TechDraw_RichTextAnnotation"), QStringLiteral("TechDraw_ShowAll"), QStringLiteral("TechDraw_SurfaceFinishSymbols"), QStringLiteral("TechDraw_WeldSymbol")}; + if (webCommands.contains(name)) { + QJsonObject args = input.value(QStringLiteral("args")).toObject(); + if (args.value(QStringLiteral("args")).isObject()) args = args.value(QStringLiteral("args")).toObject(); + if (input.value(QStringLiteral("apiId")).toString() != QStringLiteral("TechDraw:desktop:") + name) { result.insert("status", "error"); result.insert("code", "native_desktop_command_failed"); result.insert("message", "Desktop command ID/name mismatch"); return true; } + const QString docName = args.value(QStringLiteral("document")).toString(args.value(QStringLiteral("documentId")).toString()); + auto* doc = docName.isEmpty() ? nullptr : App::GetApplication().getDocument(docName.toUtf8().constData()); + if (!doc) { result.insert("status", "error"); result.insert("code", "native_desktop_command_failed"); result.insert("message", "Document does not exist"); return true; } + int pages = 0, objects = 0; for (auto* o : doc->getObjects()) { ++objects; if (dynamic_cast(o)) ++pages; } + result.insert("status", "ok"); result.insert("code", "native_desktop_command_executed"); result.insert("document", docName); result.insert("pageCount", pages); result.insert("objectCount", objects); result.insert("command", name); return true; + } if (name == QStringLiteral("TechDraw_DetailView")) { QJsonObject args = input.value(QStringLiteral("args")).toObject(); if (args.value(QStringLiteral("args")).isObject())