diff --git a/Docs/media/Breptera_Splash.gif b/Docs/media/Breptera_Splash.gif new file mode 100644 index 00000000..a66fda93 Binary files /dev/null and b/Docs/media/Breptera_Splash.gif differ diff --git a/README.de.md b/README.de.md new file mode 100644 index 00000000..da14d5bb --- /dev/null +++ b/README.de.md @@ -0,0 +1,402 @@ +

+ SolidDesigner +

+ +

+ License + C++ + Kernel + UI + Platform +

+ +

+ Open-Source-Plattform in Engineering-Qualität für parametrisches CAD und simulationsgetriebenes Design
+ Feature-basierte Modellierung • CAE-fähiges Datenmodell • Optimierungsorientierte Architektur +

+ +

+ SolidDesigner Demo-Vorschau +

+ +

+ Produkt-Demo-Vorschau +

+ +## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) + +> Ziel: ein professionelles System, das Solid-/Flächenmodellierung, Baugruppen, Zeichnungserstellung, Strukturmechanik, CFD, Multiphysik und Optimierung unterstützt — so dass Simulationen das Design selbst treiben können. + +--- + +## Quick Links + +- **JIRA-Board**: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 +- **Öffentliches Wiki (GitHub)**: https://github.com/hananiahhsu/SolidDesignerWiki +- **Design-Wiki (Confluence, Zugriff erforderlich)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 + +--- + +## Table of Contents + +- [Vision & Umfang](#vision--scope) +- [Produktüberblick](#product-overview) +- [Was enthalten ist](#whats-in-the-box) +- [Projektstruktur & Architektur](#project-layout--architecture) +- [Kernkonzepte](#core-concepts) +- [Fähigkeiten](#capabilities) +- [Roadmap](#roadmap) +- [Build & Run](#build--run) +- [Abhängigkeiten](#dependencies) + - [Open-Source-Stack & Lizenzen](#open-source-stack--licenses) +- [Erste Schritte](#getting-started) +- [Plugins & Scripting](#plugin--scripting) +- [Daten & Dateiformate](#data--file-formats) +- [Diagnostik, Logging & QA](#diagnostics-logging--qa) +- [Beitragen](#contributing) +- [Lizenz](#license) +- [Danksagungen](#acknowledgments) +- [FAQ](#faq) + +--- + +## Vision & Scope + +SolidDesigner soll eine **Full-Stack-CAD/CAE-Plattform in Engineering-Qualität** werden: + +- **Parametric CAD**: robuste Teile-/Baugruppenmodellierung, Skizzen/Constraints, historie-basierte Features und Zeichnungserstellung. +- **CAE**: integrierte Solver und/oder Adapter für **Strukturmechanik (FEA)**, **Strömungsmechanik (CFD)** und **Multiphysik**. +- **Optimization**: **Topologie-/Form-/Größenoptimierung**, Verstärkung/Gewichtsreduktion und simulationsgetriebene Designschleifen. +- **AI Assistance**: ein Engineering-„Copilot“ für Constraint-Inferenz, Feature-Intent-Erkennung, Design-Space-Exploration und Vorschläge zur Solver-Konfiguration. +- **Extensibility**: modulare Architektur mit stabiler Plugin- und Scripting-API. + +> **Status**: aktive Entwicklung (Pre-Alpha). APIs und Dateiformate können sich ändern. + +--- + +## Product Overview + +SolidDesigner (Marke: **Breptera**) ist eine **Desktop-CAD-Anwendung mit Workbench-Ausrichtung**, aufgebaut auf der wiederverwendbaren **Alice**-Plattform. + +

+ SolidDesigner Home Workbench +

+ +**Ziele aus Nutzersicht** + +- **Workflow**: Workbenches, Ribbon-Befehle, andockbare Panels und MDI-Viewports. +- **Parametric foundation**: Feature-History-Baum, Skizzen/Constraints, Rebuild- & Regenerationspipeline (WIP). +- **Engineering-first**: CAD-Datenmodell, ausgelegt zum Tragen von **Materialien, Lasten/BCs, Netzsteuerungen und Analyseergebnissen** (geplant). +- **Kernel-backed geometry**: Standard-B-Rep und Visualisierung über **OpenCascade (OCCT)**; Multi-Backend-Rendering wird auf Plattformebene unterstützt. + +> Der Screenshot oben zeigt die aktuelle UI-Richtung (Home Workbench + Discovery/Learning-Panel). Das genaue Layout ändert sich in der Pre-Alpha-Phase schnell. + +--- + +## What’s in the Box + +- Eine moderne C++17/20-Codebasis mit einem **Foundation-Submodul („Alice“)**. +- Eine darauf aufbauende **Desktop-Anwendung** („SolidDesigner“). +- Eine saubere Trennung zwischen den Schichten **Core / Data / Interaction / UI**. +- Frühe Implementierungen von **Feature-Graph**, **parametrischen Constraints**, **Diagnostik/Logging** und **Plugin-Hosting**. +- Eine langfristige Planung für **CAE-Solver** (FEA/CFD) und **Optimierung**. + +--- + +## Project Layout & Architecture + +**Physical Structure** + +``` +Physical Structure + | + |----- Alice (submodule) + | | + | |---- Bootstrap + | |---- Core + | |---- Data + | |---- Interaction + | |---- UI + | + |----- SolidDesigner (application) + | + |-- APP + |-- DATA + |-- Interaction + |-- UI + |-- Plugins +``` + +### Layered Architecture (high‑level) + +- **Alice/Core** — Plattformprimitiven und Basis-Utilities (Speicher, Threading, Diagnostik, Mathematik, Einheiten, Geometrieabstraktionen). +- **Alice/Data** — parametrisches Modell, Feature-/Operationsgraph, Constraint- & Bemaßungssystem, Dokument-/Session-Services. +- **Alice/Interaction** — Auswahl/Picking, Manipulatoren, Command-Pipeline, Undo/Redo-Transaktionen, Interaktionsgraph. +- **Alice/UI** — Qt-basierte (geplante) Shell, dockbare Bereiche, Property-Browser, Ribbon/Menüs/Shortcuts. +- **SolidDesigner/APP** — die Produktebene: Anwendungslebenszyklus, Persistenz, Projekt/Workspace, Plugins, Scripting. +- **SolidDesigner/DATA/Interaction/UI** — produktspezifische Erweiterungen über den Alice-Schichten. + +> Das **Alice**-Submodul ist bewusst wiederverwendbar und engine-artig ausgelegt; **SolidDesigner** komponiert daraus ein vollständiges Produkt. + +--- + +## Core Concepts + +- **Feature Graph**: Alle Modellierungsoperationen (Sketch, Extrude, Revolve, Fillet, Pattern, Boolean usw.) sind Knoten in einem gerichteten azyklischen Graphen mit **Historie und Abhängigkeiten**. Rebuilds propagieren deterministisch. +- **Constraint System**: geometrische und dimensionale Constraints mit Solver-Backends (heute Skizzen-Constraints; 3D-Constraints geplant). +- **Parametric Design**: benannte Parameter (Maße, Materialien, Randbedingungen) können sowohl Geometrie als auch Analyse treiben; unterstützt Ausdrücke und Einheiten. +- **Simulation‑Driven Design**: Analysen bewerten Designkandidaten; Ergebnisse fließen in Parameter zurück (z. B. automatische Gewichtsreduktion bis Spannungsziele erfüllt sind). +- **Multi‑representation Geometry**: Solid-/Surface-/B-Rep-Abstraktionen mit Toleranzen, Netzerzeugung für Analysen, CAD↔CAE-Konsistenz. +- **Transactions**: Jeder Befehl läuft in einer Transaktion; vollständiges Undo/Redo; aussagekräftige Fehlermeldungen über die Diagnostik-Engine. + +--- + +## Capabilities + +### CAD (current/planned) + +- Skizzieren mit Constraints und Bemaßungen +- Historienbasierte Modellierung: Extrude/Revolve/Sweep/Loft, Fillet/Chamfer, Shell, Pattern, Boolesche Operationen +- Baugruppe: Mates/Constraints; Top-down-Kontext (WIP) +- Zeichnung: Ansichten, Schnitte, Bemaßungen, GD&T (geplant) + +### CAE (current/planned) + +- **Structural (FEA)**: lineare Statik, Modal; Materialbibliothek; Randbedingungen; Netzsteuerungen (schrittweise Erweiterung geplant) +- **CFD**: inkompressible Strömungen (stationär/transient); Turbulenzmodelle; Randbedingungen (geplant) +- **Multiphysics**: Thermo-Struktur, FSI (langfristig) + +### Optimization (planned) + +- Topologieoptimierung (SIMP/Level-Set) +- Form-/Größenoptimierung; Constraints (Spannung, Verschiebung, Frequenz, Druckverlust usw.) +- Design-Space-Exploration; Surrogatmodelle + +### AI Assistance (planned) + +- Constraint-/Feature-Intent-Inferenz aus Benutzeraktionen +- Befehlsvervollständigung, Parametervorschläge +- Empfehlungen für den Designraum, automatisches DOE +- Vorschläge für Solver-Setup und Meshing abhängig vom Kontext + +> Detaillierten Fortschritt auf Elementebene finden Sie in **[Roadmap](#roadmap)** und **JIRA**. + +--- + +## Roadmap + +Planung und Backlog werden in **JIRA** verfolgt: +https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 + +Übergeordnete Meilensteine (Änderungen vorbehalten): + +1. **P0 — Modeling Foundations**: stabiler Feature-Graph, robuster Sketcher, Kern-Modellieroperationen, Transaktionssystem, Persistenz. +2. **P1 — Meshing & FEA MVP**: Tet/Hex-Mesh-Pipeline; lineare Statik/Modal; grundlegendes Post-Processing. +3. **P2 — CFD MVP**: Mesh- und Solver-Integration für inkompressible Strömungen; Druck-/Geschwindigkeits-/Temperaturfelder; Post-Processing. +4. **P3 — Optimization**: SIMP-Topologieoptimierung; geschlossene Parameter-Updates; Constraint-Handling. +5. **P4 — AI Copilot v1**: Constraint-Inferenz, Command-Vorschläge, Solver-Presets; Lernen aus Projekthistorie. + +Detaillierte Designdokumente liegen in **Confluence** (Zugriff erforderlich). Eine öffentliche Teilmenge liegt im **GitHub-Wiki**. + +--- + +## Build & Run + +Dieses Repo enthält **One-Click-Build-Skripte**, die einen Build-Baum unter `../SolidDesigner_Build/` erzeugen. + +### Prerequisites (current) + +- **CMake ≥ 3.31** + - Windows: Das Repo bündelt CMake unter `ToolChain/cmake` (genutzt von `AutoGenerateVsProject.bat`) + - Linux: Installieren Sie eine aktuelle Systemversion von CMake (oder verwenden Sie Ihre eigene Toolchain) +- **C++17 toolchain**: MSVC v143 / GCC 11+ / Clang 15+ +- **Qt 5.15.x** mit den Modulen: Core, Gui, Widgets, Network, Quick, Qml +- **OpenCascade (OCCT) SDK** für das OCCT-Viewer-Backend (siehe SDK-Layout unten) + +### Windows (Visual Studio 2022, x64) + +1. Mit Submodulen klonen: + +```bash +git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git +cd SolidDesigner +``` + +2. Ausführen: + +- `AutoGenerateVsProject.bat` (erzeugt `../SolidDesigner_Build/SolidDesigner.sln` und öffnet Visual Studio) + +3. Die Konfiguration `Release|x64` in Visual Studio bauen und anschließend `SolidDesigner` starten. + +### Linux (Makefiles) + +Ausführen: + +```bash +./SolidDesignerForLinux.sh +``` + +Dieses Skript konfiguriert und baut mit `Unix Makefiles` und schreibt die Ausgabe nach `../SolidDesigner_Build/`. + +> Hinweis: Das Skript übergibt derzeit `-DCMAKE_GENERATOR_PLATFORM=x64`. Das ist eine Visual-Studio-Option und kann unter Linux ignoriert werden. Falls Probleme auftreten, führen Sie CMake manuell aus (nächster Abschnitt). + +### Manual CMake (recommended when customizing toolchains) + +```bash +cmake -S . -B ../SolidDesigner_Build -G "Ninja" -DCMAKE_BUILD_TYPE=Release +cmake --build ../SolidDesigner_Build --parallel +``` + +### Third‑party SDK layout (OCCT) + +Das OCCT-Viewer-Backend erwartet, dass das OpenCascade-SDK hier exportiert ist: + +``` +Externals/3rdParty/sdk///occt +``` + +Standardwerte für `` (überschreibbar): + +- Windows: `msvc2022-x64-md` +- Linux: `linux-x64` + +Sie können dies aus CMake heraus überschreiben: + +- `-DSD_3P_PLATFORM=...` +- `-DSD_3P_CFG=Debug|Release` +- oder direkt `-DOpenCASCADE_DIR=...` auf den Ordner zeigen lassen, der `OpenCASCADEConfig.cmake` enthält. + +### Qt + +Die UI-Targets verwenden derzeit **Qt 5** (z. B. `Qt5::Core`, `Qt5::Widgets`, `Qt5::Quick/Qml` in CMake). +Unter Windows setzen einige Module einen Standard-`CMAKE_PREFIX_PATH` für `Qt5.15.x`; passen Sie ihn bei Bedarf an Ihre lokale Qt-Installation an. + +--- + +## Dependencies + +Das Projekt ist modular: einige Bibliotheken sind **im Baum vendored**, andere werden als **externe SDKs** erwartet. + +### Open-source Stack & Licenses + +| Bibliothek | Verwendungszweck | Ort | Lizenz (Upstream) | +|---|---|---|---| +| **OpenCascade (OCCT)** | B-Rep-Kernel + OCCT-Viewer-Backend | `Alice/Core/Runtime/AliceRenderBackendOCCViewer` | LGPL‑2.1 mit OCCT exception (Upstream) | +| **Qt 5 (Widgets/Quick/Qml)** | Desktop-UI (Ribbon, Panels, Dialoge) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/commercial (Qt) | +| **spdlog** | Logging-Backend | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | +| **fmt** | String-Formatierung | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | +| **Open Sans** | UI-Schriftassets für das Ribbon | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | +| | | | | +| | | | | + +> **Lizenzhinweis**: SolidDesigner steht unter **GPLv3**, aber einige eingebettete/erforderliche Abhängigkeiten stehen unter LGPL/MIT/Apache. Beim Verteilen von Binärdateien müssen Sie die jeweiligen Upstream-Lizenzen einhalten (Pflichten zu dynamischem Linken, Hinweise, Quellverfügbarkeit usw.). + +### Optional / planned adapters (not required for a minimal build) + +- **OGRE / OSG / VTK / Skylark**-Render-Backends existieren als Plattformmodule (`Alice/Core/Runtime/AliceRenderBackend*`), können aber zusätzliche SDKs erfordern und befinden sich noch in Entwicklung. +- **Meshing / Solver** (FEA/CFD/Optimierung) werden aktiv entworfen; Adapter werden schrittweise eingeführt. + +--- + +## Getting Started + +Typischer Ziel-Workflow (Endzustand): + +1. **Projekt anlegen** und Standard-Einheiten/Toleranzen festlegen. +2. Auf einer Ebene **skizzieren**; Constraints/Bemaßungen anwenden. +3. Features erzeugen: **Extrude**, **Revolve**, **Fillet**, **Shell**, **Pattern** … +4. Teile **zusammenbauen**; Mates/Constraints hinzufügen. +5. Das Modell **vernetzen** (globale + lokale Steuerungen). +6. **Materialien** und **Randbedingungen** definieren. +7. **FEA/CFD** ausführen; Spannungen/Dehnungen, Modi und Strömungsfelder auswerten. +8. **Parameter aus Ergebnissen treiben** (z. B. Dicke reduzieren, bis Spannung ≤ Zielwert). +9. Als **Projekt** speichern und nach **STEP/IGES** oder Mesh-Formaten exportieren. + +--- + +## Plugin & Scripting + +- **Plugin ABI**: saubere C++-Schnittstellen für Geometrieoperationen, Meshing, Solver, Importe/Exporte und UI-Add-ins. +- **Isolation**: stabiles Ownership-Modell und Cross-DLL-Sicherheit (die Foundation stellt Owning/Weak/Guard-Pointer-Utilities bereit). +- **Scripting (planned)**: Python-API zur Automatisierung der Modellierung, Einrichtung von Studien, Nachbearbeitung von Ergebnissen und Orchestrierung von Designschleifen. +- **AI hooks (planned)**: Registrierung benutzerdefinierter Design-Berater und ML-Modelle für Intent-Vorhersage und Optimierung. + +--- + +## Data & File Formats + +### Native project format (in progress) + +Das native Format soll folgende Eigenschaften haben: + +- **Structured**: Metadaten + typisierte Payloads (Geometrie, Mesh, Ergebnisse, Thumbnails usw.) +- **Versioned**: Schema-Versionierung mit expliziter Upgrade-Pipeline +- **Incremental-friendly**: für partielles Reloading und künftige Cloud-/Workspace-Workflows ausgelegt +- **Stable-identity aware**: Objekt-IDs überleben Save/Load, Copy/Paste und Upgrades + +> Das öffentliche Wiki wird die kanonische Spezifikation hosten, sobald das Format stabil ist. + +### Interoperability (planned / incremental) + +- **CAD Interop**: STEP/IGES-Import/Export (weitere Formate über Adapter) +- **Mesh/Results**: Standard-Mesh-/Ergebnisformate für externe Solver/Post (VTK, MED usw., geplant) +- **Units**: konsistentes Einheitensystem mit expliziten Metadaten; dimensionierte Parameter in Ausdrücken + +--- + +## Diagnostics, Logging & QA + +- Vereinheitlichte **DiagnosticsEngine** mit Schweregraden, Quellpositionen und austauschbaren Sinks (Konsole, Datei, UI-Panel). +- Optionales **spdlog**-Backend für schnelles, thread-aware Logging. +- **Assertions** und **defensive Prüfungen** über DLL-Grenzen hinweg. +- **Tests** via CTest; Fixtures für Geometrie, Meshing und Solver-Korrektheit; reproduzierbare Fälle werden an JIRA angehängt. + +--- + +## Contributing + +Beiträge sind willkommen. + +- Prüfen Sie JIRA-Epics/Tasks und das GitHub-Wiki für den Kontext. +- Diskutieren Sie größere Vorschläge, bevor Sie eine PR öffnen. +- Befolgen Sie den Code-Stil des Projekts (clang-format-Datei geplant) und fügen Sie Unit-Tests hinzu. +- Halten Sie Commits klein und gut beschrieben; verlinken Sie nach Möglichkeit JIRA-Tickets. + +Empfohlene erste Beiträge: + +- Build-Probleme auf einer bestimmten Plattform/einem bestimmten Compiler beheben +- Fokussierte Tests hinzufügen (Geometrie, Persistenz, Constraint-Lösung) +- Dokumentation ergänzen: Design-Notizen, Diagramme oder kurze „How it works“-Abschnitte + +> Repository-weite Contributor-Dokumente (geplant): `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`. + +--- + +## License + +Dieses Repository ist unter **GNU GPL v3.0** lizenziert. Den vollständigen Text finden Sie in `LICENSE`. + +> Hinweis: Drittanbieterbibliotheken können eigene Lizenzen haben; achten Sie auf Compliance beim Weiterverteilen von Binärdateien. + +--- + +## Acknowledgments + +Dieses Projekt steht auf den Schultern von Giganten: OpenCascade, Eigen, fmt, spdlog, Qt und der breiteren Open-Source-Community. +Besonderer Dank gilt den Mitwirkenden und Forschenden in CAD/CAE/CFD/Optimierung. + +--- + +## FAQ + +**Gibt es eine Scripting-API?** +Eine Python-API ist geplant. Frühe interne Vorarbeiten existieren bereits; die öffentliche API folgt. + +**Welcher Solver-Stack wird verwendet?** +Frühe Inhouse-Solver werden derzeit prototypisch entwickelt. Adapter zu externen Solver-Stacks (z. B. Mesher/Post) sind geplant. + +**Benötigen KI-Funktionen Internetzugang?** +Nein. Geplant ist die Unterstützung lokaler Offline-Inferenz mit optionalen Cloud-Integrationen. + +**Wo kann ich den Fortschritt verfolgen?** +JIRA (Roadmap/Backlog) und das öffentliche GitHub-Wiki. Detaillierte Design-Dokumente liegen in Confluence (Zugriff erforderlich). diff --git a/README.es.md b/README.es.md new file mode 100644 index 00000000..2b42343d --- /dev/null +++ b/README.es.md @@ -0,0 +1,402 @@ +

+ SolidDesigner +

+ +

+ License + C++ + Kernel + UI + Platform +

+ +

+ Plataforma de código abierto de nivel de ingeniería para CAD paramétrico y diseño impulsado por simulación
+ Modelado basado en features • Modelo de datos preparado para CAE • Arquitectura orientada a la optimización +

+ +

+ Vista previa de la demo de SolidDesigner +

+ +

+ Vista previa de la demo del producto +

+ +## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) + +> Objetivo: un sistema de nivel profesional que admita modelado sólido/superficial, ensamblajes, dibujo técnico, mecánica estructural, CFD, multifísica y optimización, donde las simulaciones puedan impulsar el propio diseño. + +--- + +## Quick Links + +- **Tablero JIRA**: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 +- **Wiki público (GitHub)**: https://github.com/hananiahhsu/SolidDesignerWiki +- **Wiki de diseño (Confluence, requiere acceso)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 + +--- + +## Table of Contents + +- [Visión y alcance](#vision--scope) +- [Resumen del producto](#product-overview) +- [Qué incluye](#whats-in-the-box) +- [Estructura del proyecto y arquitectura](#project-layout--architecture) +- [Conceptos clave](#core-concepts) +- [Capacidades](#capabilities) +- [Hoja de ruta](#roadmap) +- [Compilar y ejecutar](#build--run) +- [Dependencias](#dependencies) + - [Stack open source y licencias](#open-source-stack--licenses) +- [Primeros pasos](#getting-started) +- [Plugins y scripting](#plugin--scripting) +- [Datos y formatos de archivo](#data--file-formats) +- [Diagnóstico, logging y QA](#diagnostics-logging--qa) +- [Contribuir](#contributing) +- [Licencia](#license) +- [Agradecimientos](#acknowledgments) +- [FAQ](#faq) + +--- + +## Vision & Scope + +SolidDesigner aspira a ser una plataforma CAD/CAE **full‑stack y de grado de ingeniería**: + +- **Parametric CAD**: modelado robusto de piezas/ensamblajes, sketches/restricciones, features basadas en historial y dibujo técnico. +- **CAE**: solucionadores integrados y/o adaptadores para **mecánica estructural (FEA)**, **dinámica de fluidos (CFD)** y **multifísica**. +- **Optimization**: optimización **topológica / de forma / de tamaño**, refuerzo/reducción de peso y bucles de diseño impulsados por simulación. +- **AI Assistance**: un “copiloto” de ingeniería para inferencia de restricciones, detección de intención de features, exploración del espacio de diseño y sugerencias de configuración de solver. +- **Extensibility**: arquitectura modular con una API estable de plugins y scripting. + +> **Status**: desarrollo activo (pre‑alpha). Las API y los formatos de archivo pueden cambiar. + +--- + +## Product Overview + +SolidDesigner (marca: **Breptera**) es una aplicación CAD **de escritorio y orientada a workbenches**, construida sobre la plataforma reutilizable **Alice**. + +

+ SolidDesigner Home Workbench +

+ +**Objetivos para el usuario** + +- **Workflow**: workbenches, comandos de ribbon, paneles acoplables y viewports MDI. +- **Parametric foundation**: árbol de historial de features, sketches/restricciones y pipeline de rebuild & regeneration (WIP). +- **Engineering-first**: modelo de datos CAD diseñado para transportar **materiales, cargas/BC, controles de mallado y resultados de análisis** (previsto). +- **Kernel-backed geometry**: B‑Rep y visualización por defecto mediante **OpenCascade (OCCT)**; el render multibackend está soportado a nivel de plataforma. + +> La captura anterior refleja la dirección actual de la interfaz (Home Workbench + panel de descubrimiento/aprendizaje). El diseño exacto evoluciona rápidamente durante la fase pre‑alpha. + +--- + +## What’s in the Box + +- Una base de código moderna en C++17/20 con un **submódulo de foundation (“Alice”)**. +- Una **aplicación de escritorio** (“SolidDesigner”) construida sobre esa foundation. +- Una separación clara entre las capas **Core / Data / Interaction / UI**. +- Implementaciones tempranas del **grafo de features**, las **restricciones paramétricas**, el **diagnóstico/logging** y el **hosting de plugins**. +- Un plan a largo plazo para **solvers CAE** (FEA/CFD) y **optimización**. + +--- + +## Project Layout & Architecture + +**Physical Structure** + +``` +Physical Structure + | + |----- Alice (submodule) + | | + | |---- Bootstrap + | |---- Core + | |---- Data + | |---- Interaction + | |---- UI + | + |----- SolidDesigner (application) + | + |-- APP + |-- DATA + |-- Interaction + |-- UI + |-- Plugins +``` + +### Layered Architecture (high‑level) + +- **Alice/Core** — primitivas de plataforma y utilidades base (memoria, threading, diagnóstico, matemáticas, unidades, abstracciones geométricas). +- **Alice/Data** — modelo paramétrico, grafo de features/operaciones, sistema de restricciones y cotas, servicios de documento/sesión. +- **Alice/Interaction** — selección/picking, manipuladores, pipeline de comandos, transacciones undo/redo y grafo de interacción. +- **Alice/UI** — shell basado en Qt (previsto), paneles acoplables, explorador de propiedades y ribbon/menús/atajos. +- **SolidDesigner/APP** — la capa de producto: ciclo de vida de la aplicación, persistencia, proyecto/workspace, plugins y scripting. +- **SolidDesigner/DATA/Interaction/UI** — extensiones específicas del producto sobre las capas de Alice. + +> El submódulo **Alice** está pensado para ser reutilizable y con filosofía de engine; **SolidDesigner** lo compone para formar un producto completo. + +--- + +## Core Concepts + +- **Feature Graph**: todas las operaciones de modelado (Sketch, Extrude, Revolve, Fillet, Pattern, Boolean, etc.) son nodos de un grafo acíclico dirigido con **historial y dependencias**. Los rebuilds se propagan de forma determinista. +- **Constraint System**: restricciones geométricas y dimensionales con backends de solver (hoy restricciones de sketch; restricciones 3D previstas). +- **Parametric Design**: parámetros con nombre (cotas, materiales, BC) pueden gobernar tanto la geometría como el análisis; soporta expresiones y unidades. +- **Simulation‑Driven Design**: los análisis evalúan diseños candidatos; los resultados retroalimentan los parámetros (por ejemplo, reducir peso automáticamente hasta cumplir objetivos de tensión). +- **Multi‑representation Geometry**: abstracciones de sólido/superficie/B‑Rep con tolerancias, generación de malla para análisis y consistencia CAD↔CAE. +- **Transactions**: cada comando se ejecuta dentro de una transacción; undo/redo completo; mensajes de error útiles a través del motor de diagnóstico. + +--- + +## Capabilities + +### CAD (current/planned) + +- Sketching con restricciones y cotas +- Modelado basado en historial: extrude/revolve/sweep/loft, fillet/chamfer, shell, pattern, operaciones booleanas +- Ensamblaje: mates/restricciones; contexto top‑down (WIP) +- Dibujo técnico: vistas, secciones, cotas, GD&T (previsto) + +### CAE (current/planned) + +- **Structural (FEA)**: estático lineal, modal; biblioteca de materiales; condiciones de contorno; controles de mallado (expansión iterativa prevista) +- **CFD**: flujos incompresibles (estacionario/transitorio); modelos de turbulencia; condiciones de contorno (previsto) +- **Multiphysics**: termo‑estructural, FSI (largo plazo) + +### Optimization (planned) + +- Optimización topológica (SIMP/level‑set) +- Optimización de forma/tamaño; restricciones (tensión, desplazamiento, frecuencia, pérdida de presión, etc.) +- Exploración del espacio de diseño; modelos sustitutos + +### AI Assistance (planned) + +- Inferencia de intención de restricciones/features a partir de acciones del usuario +- Autocompletado de comandos; sugerencias de parámetros +- Recomendación del espacio de diseño; DOE automático +- Sugerencias de configuración de solver y mallado según el contexto + +> Consulte **[Roadmap](#roadmap)** y **JIRA** para el progreso detallado por ítem. + +--- + +## Roadmap + +La planificación y el backlog se siguen en **JIRA**: +https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 + +Hitos de alto nivel (sujetos a cambios): + +1. **P0 — Modeling Foundations**: grafo de features estable, sketcher robusto, operaciones básicas de modelado, sistema de transacciones y persistencia. +2. **P1 — Meshing & FEA MVP**: pipeline de malla tet/hex; estático lineal/modal; postproceso básico. +3. **P2 — CFD MVP**: integración de malla y solver para flujos incompresibles; campos de presión/velocidad/temperatura; postproceso. +4. **P3 — Optimization**: optimización topológica SIMP; actualizaciones paramétricas en lazo cerrado; manejo de restricciones. +5. **P4 — AI Copilot v1**: inferencia de restricciones, sugerencias de comandos, presets de solver; aprendizaje a partir del historial del proyecto. + +Los documentos de diseño detallados viven en **Confluence** (requiere acceso). Un subconjunto público vive en el **Wiki de GitHub**. + +--- + +## Build & Run + +Este repositorio incluye **scripts de compilación con un clic** que generan un árbol de build bajo `../SolidDesigner_Build/`. + +### Prerequisites (current) + +- **CMake ≥ 3.31** + - Windows: el repositorio incluye CMake en `ToolChain/cmake` (usado por `AutoGenerateVsProject.bat`) + - Linux: instale una versión reciente de CMake en el sistema (o use su propia toolchain) +- **C++17 toolchain**: MSVC v143 / GCC 11+ / Clang 15+ +- **Qt 5.15.x** con módulos: Core, Gui, Widgets, Network, Quick, Qml +- **OpenCascade (OCCT) SDK** para el backend del visor OCCT (vea la disposición del SDK más abajo) + +### Windows (Visual Studio 2022, x64) + +1. Clonar con submódulos: + +```bash +git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git +cd SolidDesigner +``` + +2. Ejecutar: + +- `AutoGenerateVsProject.bat` (genera `../SolidDesigner_Build/SolidDesigner.sln` y abre Visual Studio) + +3. Compilar la configuración `Release|x64` en Visual Studio y luego ejecutar `SolidDesigner`. + +### Linux (Makefiles) + +Ejecutar: + +```bash +./SolidDesignerForLinux.sh +``` + +Este script configura y compila usando `Unix Makefiles` y escribe la salida en `../SolidDesigner_Build/`. + +> Nota: actualmente el script pasa `-DCMAKE_GENERATOR_PLATFORM=x64`, que es una opción de Visual Studio y puede ser ignorada por las toolchains de Linux. Si encuentra problemas, ejecute CMake manualmente (sección siguiente). + +### Manual CMake (recommended when customizing toolchains) + +```bash +cmake -S . -B ../SolidDesigner_Build -G "Ninja" -DCMAKE_BUILD_TYPE=Release +cmake --build ../SolidDesigner_Build --parallel +``` + +### Third‑party SDK layout (OCCT) + +El backend del visor OCCT espera que el SDK de OpenCascade esté exportado a: + +``` +Externals/3rdParty/sdk///occt +``` + +Valores predeterminados de `` (se pueden sobrescribir): + +- Windows: `msvc2022-x64-md` +- Linux: `linux-x64` + +Puede sobrescribirlos desde CMake: + +- `-DSD_3P_PLATFORM=...` +- `-DSD_3P_CFG=Debug|Release` +- o apuntar directamente `-DOpenCASCADE_DIR=...` a la carpeta que contiene `OpenCASCADEConfig.cmake`. + +### Qt + +Los targets de UI usan actualmente **Qt 5** (por ejemplo `Qt5::Core`, `Qt5::Widgets`, `Qt5::Quick/Qml` en CMake). +En Windows, algunos módulos establecen un `CMAKE_PREFIX_PATH` predeterminado para `Qt5.15.x`; ajústelo a su instalación local de Qt si es necesario. + +--- + +## Dependencies + +El proyecto es modular: algunas bibliotecas están **vendorizadas dentro del árbol**, mientras que otras se esperan como **SDK externos**. + +### Open-source Stack & Licenses + +| Biblioteca | Uso | Ubicación | Licencia (upstream) | +|---|---|---|---| +| **OpenCascade (OCCT)** | Kernel B‑Rep + backend del visor OCCT | `Alice/Core/Runtime/AliceRenderBackendOCCViewer` | LGPL‑2.1 with OCCT exception (upstream) | +| **Qt 5 (Widgets/Quick/Qml)** | UI de escritorio (ribbon, paneles, diálogos) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/commercial (Qt) | +| **spdlog** | Backend de logging | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | +| **fmt** | Formateo de cadenas | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | +| **Open Sans** | Activos tipográficos para el ribbon | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | +| | | | | +| | | | | + +> **Nota de licencia**: SolidDesigner es **GPLv3**, pero algunas dependencias integradas/requeridas son LGPL/MIT/Apache. Al distribuir binarios, debe cumplir con cada licencia upstream (obligaciones de enlace dinámico, avisos, disponibilidad del código fuente, etc.). + +### Optional / planned adapters (not required for a minimal build) + +- Existen backends de render **OGRE / OSG / VTK / Skylark** como módulos de plataforma (`Alice/Core/Runtime/AliceRenderBackend*`), pero pueden requerir SDK adicionales y siguen evolucionando. +- Los **malladores / solvers** (FEA/CFD/optimización) están en diseño activo; los adaptadores se introducirán de forma incremental. + +--- + +## Getting Started + +Flujo de trabajo típico previsto (estado objetivo): + +1. **Crear un proyecto** y establecer unidades/tolerancias predeterminadas. +2. **Dibujar un sketch** sobre un plano; usar restricciones/cotas. +3. Crear features: **Extrude**, **Revolve**, **Fillet**, **Shell**, **Pattern**… +4. **Ensamblar** las piezas; añadir mates/restricciones. +5. **Mallado** del modelo (controles globales + locales). +6. Definir **materiales** y **condiciones de contorno**. +7. Ejecutar **FEA/CFD**; inspeccionar tensiones/deformaciones, modos y campos de flujo. +8. **Conducir parámetros** a partir de los resultados (por ejemplo, reducir espesor hasta que la tensión ≤ objetivo). +9. Guardar como **proyecto** y exportar a **STEP/IGES** o formatos de malla. + +--- + +## Plugin & Scripting + +- **Plugin ABI**: interfaces limpias en C++ para operaciones geométricas, mallado, solvers, importadores/exportadores y add-ins de UI. +- **Isolation**: modelo de ownership estable y seguridad entre DLLs (la foundation proporciona utilidades de punteros Owning/Weak/Guard). +- **Scripting (planned)**: API de Python para automatizar modelado, configurar estudios, postprocesar resultados y orquestar bucles de diseño. +- **AI hooks (planned)**: registrar asesores de diseño personalizados y modelos ML para predicción de intención y optimización. + +--- + +## Data & File Formats + +### Native project format (in progress) + +El formato nativo está pensado para ser: + +- **Structured**: metadatos + cargas tipadas (geometría, malla, resultados, miniaturas, etc.) +- **Versioned**: versionado de esquema con un pipeline explícito de actualización +- **Incremental-friendly**: diseñado para recarga parcial y futuros flujos de trabajo cloud/workspace +- **Stable-identity aware**: los IDs de objeto sobreviven a guardar/cargar, copiar/pegar y actualizaciones + +> El wiki público alojará la especificación canónica una vez que el formato se estabilice. + +### Interoperability (planned / incremental) + +- **CAD Interop**: importación/exportación STEP/IGES (otros formatos mediante adaptadores) +- **Mesh/Results**: formatos estándar de malla/resultados para solvers/post externos (VTK, MED, etc., previsto) +- **Units**: sistema de unidades coherente con metadatos explícitos; parámetros dimensionados en expresiones + +--- + +## Diagnostics, Logging & QA + +- **DiagnosticsEngine** unificado con niveles de severidad, ubicaciones de origen y sinks conectables (consola, archivo, panel UI). +- Backend **spdlog** opcional para logging rápido y consciente de hilos. +- **Assertions** y **comprobaciones defensivas** a través de fronteras de DLL. +- **Testing** mediante CTest; fixtures para geometría, mallado y corrección del solver; casos reproducibles adjuntos a JIRA. + +--- + +## Contributing + +Las contribuciones son bienvenidas. + +- Revise las épicas/tareas de JIRA y el Wiki de GitHub para obtener contexto. +- Discuta propuestas más grandes antes de abrir una PR. +- Siga el estilo de código del proyecto (archivo clang-format previsto) e incluya pruebas unitarias. +- Mantenga los commits pequeños y bien descritos; vincúlelos con tickets de JIRA cuando corresponda. + +Primeras contribuciones sugeridas: + +- Corregir problemas de build en una plataforma/compilador concreto +- Añadir pruebas enfocadas (geometría, persistencia, resolución de restricciones) +- Añadir documentación: notas de diseño, diagramas o secciones mínimas de “how it works” + +> Documentación de contribución a nivel de repositorio (prevista): `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`. + +--- + +## License + +Este repositorio está licenciado bajo **GNU GPL v3.0**. Consulte `LICENSE` para el texto completo. + +> Nota: las bibliotecas de terceros pueden tener sus propias licencias; asegúrese de cumplirlas al redistribuir binarios. + +--- + +## Acknowledgments + +Este proyecto se apoya en gigantes: OpenCascade, Eigen, fmt, spdlog, Qt y la comunidad open source en general. +Gracias especialmente a los contribuidores e investigadores de CAD/CAE/CFD/optimización. + +--- + +## FAQ + +**¿Existe una API de scripting?** +Hay una API de Python planificada. Ya existe una estructura interna inicial; la API pública llegará próximamente. + +**¿Qué stack de solvers se utiliza?** +Se están prototipando solvers internos. También se planean adaptadores para solvers externos (por ejemplo, malladores/post). + +**¿Las funciones de IA requerirán acceso a internet?** +No. La intención es soportar inferencia offline con modelos locales, con integraciones cloud opcionales. + +**¿Dónde puedo seguir el progreso?** +JIRA (roadmap/backlog) y el Wiki público de GitHub. Los documentos de diseño detallados están en Confluence (requiere acceso). diff --git a/README.fr.md b/README.fr.md new file mode 100644 index 00000000..74c99ee3 --- /dev/null +++ b/README.fr.md @@ -0,0 +1,402 @@ +

+ SolidDesigner +

+ +

+ License + C++ + Kernel + UI + Platform +

+ +

+ Plateforme open source de niveau industriel pour la CAO paramétrique et la conception pilotée par la simulation
+ Modélisation basée sur les features • Modèle de données prêt pour la CAE • Architecture orientée optimisation +

+ +

+ Aperçu de démonstration de SolidDesigner +

+ +

+ Aperçu de la démonstration du produit +

+ +## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) + +> Objectif : construire un système de niveau professionnel prenant en charge la modélisation solide/surfacique, l’assemblage, la mise en plan, la mécanique des structures, la CFD, le multiphysique et l’optimisation — où les simulations peuvent piloter la conception elle-même. + +--- + +## Quick Links + +- **Tableau JIRA** : https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 +- **Wiki public (GitHub)** : https://github.com/hananiahhsu/SolidDesignerWiki +- **Wiki de conception (Confluence, accès requis)** : https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 + +--- + +## Table of Contents + +- [Vision et périmètre](#vision--scope) +- [Présentation du produit](#product-overview) +- [Contenu du dépôt](#whats-in-the-box) +- [Structure du projet et architecture](#project-layout--architecture) +- [Concepts clés](#core-concepts) +- [Capacités](#capabilities) +- [Feuille de route](#roadmap) +- [Compilation et exécution](#build--run) +- [Dépendances](#dependencies) + - [Pile open source et licences](#open-source-stack--licenses) +- [Prise en main](#getting-started) +- [Plugins et scripting](#plugin--scripting) +- [Données et formats de fichiers](#data--file-formats) +- [Diagnostic, journalisation et QA](#diagnostics-logging--qa) +- [Contribution](#contributing) +- [Licence](#license) +- [Remerciements](#acknowledgments) +- [FAQ](#faq) + +--- + +## Vision & Scope + +SolidDesigner vise à devenir une plateforme CAD/CAE **full‑stack et de qualité industrielle** : + +- **Parametric CAD** : modélisation robuste de pièces et d’assemblages, esquisses/contraintes, features basées sur l’historique et mise en plan. +- **CAE** : solveurs intégrés et/ou adaptateurs pour la **mécanique des structures (FEA)**, la **mécanique des fluides (CFD)** et le **multiphysique**. +- **Optimization** : optimisation **topologique / de forme / dimensionnelle**, renfort/allègement et boucles de conception pilotées par la simulation. +- **AI Assistance** : un « copilote » d’ingénierie pour l’inférence de contraintes, la détection d’intention des features, l’exploration de l’espace de conception et les suggestions de configuration de solveur. +- **Extensibility** : architecture modulaire avec une API stable pour les plugins et le scripting. + +> **Status** : développement actif (pré‑alpha). Les API et formats de fichiers peuvent évoluer. + +--- + +## Product Overview + +SolidDesigner (marque : **Breptera**) est une application CAD **desktop orientée workbench**, construite sur la plateforme réutilisable **Alice**. + +

+ SolidDesigner Home Workbench +

+ +**Objectifs côté utilisateur** + +- **Workflow** : workbenches, commandes de ruban, panneaux dockables et vues MDI. +- **Parametric foundation** : arbre d’historique des features, esquisses/contraintes, pipeline de rebuild & regeneration (WIP). +- **Engineering-first** : modèle de données CAD conçu pour porter les **matériaux, charges/BC, contrôles de maillage et résultats d’analyse** (prévu). +- **Kernel-backed geometry** : B‑Rep et visualisation par défaut via **OpenCascade (OCCT)** ; le rendu multi‑backend est pris en charge au niveau plateforme. + +> La capture ci-dessus reflète la direction actuelle de l’interface (Home Workbench + panneau découverte/apprentissage). La disposition exacte évolue rapidement pendant la phase pré‑alpha. + +--- + +## What’s in the Box + +- Une base de code moderne en C++17/20 avec un **sous-module fondation (« Alice »)**. +- Une **application desktop** (« SolidDesigner ») construite sur cette fondation. +- Une séparation nette entre les couches **Core / Data / Interaction / UI**. +- Des premières implémentations du **graphe de features**, des **contraintes paramétriques**, du **diagnostic/journalisation** et de l’**hébergement de plugins**. +- Une vision à long terme pour les **solveurs CAE** (FEA/CFD) et l’**optimisation**. + +--- + +## Project Layout & Architecture + +**Physical Structure** + +``` +Physical Structure + | + |----- Alice (submodule) + | | + | |---- Bootstrap + | |---- Core + | |---- Data + | |---- Interaction + | |---- UI + | + |----- SolidDesigner (application) + | + |-- APP + |-- DATA + |-- Interaction + |-- UI + |-- Plugins +``` + +### Layered Architecture (high‑level) + +- **Alice/Core** — primitives de plateforme et utilitaires de base (mémoire, threading, diagnostic, mathématiques, unités, abstractions géométriques). +- **Alice/Data** — modèle paramétrique, graphe des features/opérations, système de contraintes et dimensions, services document/session. +- **Alice/Interaction** — sélection/picking, manipulateurs, pipeline de commandes, transactions undo/redo, graphe d’interaction. +- **Alice/UI** — shell basé sur Qt (prévu), panneaux dockables, navigateur de propriétés, ruban/menus/raccourcis. +- **SolidDesigner/APP** — couche produit : cycle de vie de l’application, persistance, projet/workspace, plugins, scripting. +- **SolidDesigner/DATA/Interaction/UI** — extensions spécifiques au produit par-dessus les couches Alice. + +> Le sous-module **Alice** est volontairement réutilisable et proche d’un moteur ; **SolidDesigner** l’assemble pour former un produit complet. + +--- + +## Core Concepts + +- **Feature Graph** : toutes les opérations de modélisation (Sketch, Extrude, Revolve, Fillet, Pattern, Boolean, etc.) sont des nœuds d’un graphe orienté acyclique avec **historique et dépendances**. Les rebuilds se propagent de manière déterministe. +- **Constraint System** : contraintes géométriques et dimensionnelles avec backends de solveur interchangeables (contraintes d’esquisse aujourd’hui ; contraintes 3D prévues). +- **Parametric Design** : des paramètres nommés (cotes, matériaux, conditions aux limites) peuvent piloter à la fois la géométrie et l’analyse ; prise en charge des expressions et des unités. +- **Simulation‑Driven Design** : les analyses évaluent des conceptions candidates ; les résultats sont réinjectés dans les paramètres (par ex. alléger automatiquement jusqu’à atteindre une contrainte de contrainte admissible). +- **Multi‑representation Geometry** : abstractions solide/surface/B‑Rep avec tolérances, génération de maillage pour l’analyse, cohérence CAD↔CAE. +- **Transactions** : chaque commande s’exécute dans une transaction ; undo/redo complet ; messages d’erreur pertinents via le moteur de diagnostic. + +--- + +## Capabilities + +### CAD (current/planned) + +- Esquisse avec contraintes et dimensions +- Modélisation basée sur l’historique : extrusion/révolution/balayage/loft, congé/chanfrein, coque, motif, opérations booléennes +- Assemblage : mates/contraintes ; contexte top‑down (WIP) +- Mise en plan : vues, sections, dimensions, GD&T (prévu) + +### CAE (current/planned) + +- **Structural (FEA)** : statique linéaire, modal, bibliothèque de matériaux, conditions aux limites, contrôles de maillage (extension progressive prévue) +- **CFD** : écoulements incompressibles (stationnaires/transitoires), modèles de turbulence, conditions aux limites (prévu) +- **Multiphysics** : thermo‑mécanique, FSI (long terme) + +### Optimization (planned) + +- Optimisation topologique (SIMP/level‑set) +- Optimisation de forme/taille ; contraintes (contrainte, déplacement, fréquence, perte de charge, etc.) +- Exploration de l’espace de conception, modèles de substitution + +### AI Assistance (planned) + +- Inférence d’intention de contrainte/feature à partir des actions utilisateur +- Complétion de commandes, suggestions de paramètres +- Recommandations d’espace de conception, DOE automatique +- Suggestions de configuration de solveur et de maillage selon le contexte + +> Voir **[Roadmap](#roadmap)** et **JIRA** pour le suivi détaillé des éléments. + +--- + +## Roadmap + +La planification et le backlog sont suivis dans **JIRA** : +https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 + +Jalons de haut niveau (susceptibles d’évoluer) : + +1. **P0 — Modeling Foundations** : graphe de features stable, sketcher robuste, opérations de modélisation cœur, système de transactions, persistance. +2. **P1 — Meshing & FEA MVP** : pipeline de maillage tétra/hexa ; statique linéaire/modal ; post‑traitement de base. +3. **P2 — CFD MVP** : intégration maillage + solveur pour les écoulements incompressibles ; champs pression/vitesse/température ; post‑traitement. +4. **P3 — Optimization** : optimisation topologique SIMP ; mise à jour paramétrique en boucle fermée ; gestion des contraintes. +5. **P4 — AI Copilot v1** : inférence de contraintes, suggestions de commandes, préréglages solveur ; apprentissage à partir de l’historique des projets. + +Les documents de conception détaillés se trouvent dans **Confluence** (accès requis). Un sous-ensemble public est disponible dans le **Wiki GitHub**. + +--- + +## Build & Run + +Ce dépôt fournit des **scripts de build en un clic** qui génèrent un arbre de build sous `../SolidDesigner_Build/`. + +### Prerequisites (current) + +- **CMake ≥ 3.31** + - Windows : le dépôt embarque CMake sous `ToolChain/cmake` (utilisé par `AutoGenerateVsProject.bat`) + - Linux : installez une version récente de CMake sur le système (ou utilisez votre propre toolchain) +- **C++17 toolchain** : MSVC v143 / GCC 11+ / Clang 15+ +- **Qt 5.15.x** avec les modules : Core, Gui, Widgets, Network, Quick, Qml +- **OpenCascade (OCCT) SDK** pour le backend de visualisation OCCT (voir la disposition SDK ci-dessous) + +### Windows (Visual Studio 2022, x64) + +1. Cloner avec les sous-modules : + +```bash +git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git +cd SolidDesigner +``` + +2. Exécuter : + +- `AutoGenerateVsProject.bat` (génère `../SolidDesigner_Build/SolidDesigner.sln` et ouvre Visual Studio) + +3. Compiler la configuration `Release|x64` dans Visual Studio, puis lancer `SolidDesigner`. + +### Linux (Makefiles) + +Exécuter : + +```bash +./SolidDesignerForLinux.sh +``` + +Ce script configure et compile avec `Unix Makefiles`, puis écrit la sortie dans `../SolidDesigner_Build/`. + +> Remarque : le script passe actuellement `-DCMAKE_GENERATOR_PLATFORM=x64`, qui est une option Visual Studio et peut être ignorée par les toolchains Linux. En cas de problème, exécutez CMake manuellement (section suivante). + +### Manual CMake (recommended when customizing toolchains) + +```bash +cmake -S . -B ../SolidDesigner_Build -G "Ninja" -DCMAKE_BUILD_TYPE=Release +cmake --build ../SolidDesigner_Build --parallel +``` + +### Third‑party SDK layout (OCCT) + +Le backend de visualisation OCCT attend que le SDK OpenCascade soit exporté vers : + +``` +Externals/3rdParty/sdk///occt +``` + +Valeurs par défaut de `` (surchargables) : + +- Windows : `msvc2022-x64-md` +- Linux : `linux-x64` + +Vous pouvez surcharger depuis CMake : + +- `-DSD_3P_PLATFORM=...` +- `-DSD_3P_CFG=Debug|Release` +- ou pointer directement `-DOpenCASCADE_DIR=...` vers le dossier contenant `OpenCASCADEConfig.cmake`. + +### Qt + +Les cibles UI utilisent actuellement **Qt 5** (par ex. `Qt5::Core`, `Qt5::Widgets`, `Qt5::Quick/Qml` dans CMake). +Sous Windows, certains modules définissent un `CMAKE_PREFIX_PATH` par défaut pour `Qt5.15.x` ; adaptez-le à votre installation locale de Qt si nécessaire. + +--- + +## Dependencies + +Le projet est modulaire : certaines bibliothèques sont **vendorisées dans l’arborescence**, tandis que d’autres sont attendues comme **SDK externes**. + +### Open-source Stack & Licenses + +| Bibliothèque | Usage | Emplacement | Licence (amont) | +|---|---|---|---| +| **OpenCascade (OCCT)** | Noyau B‑Rep + backend de visualisation OCCT | `Alice/Core/Runtime/AliceRenderBackendOCCViewer` | LGPL‑2.1 with OCCT exception (amont) | +| **Qt 5 (Widgets/Quick/Qml)** | UI desktop (ruban, panneaux, boîtes de dialogue) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/commercial (Qt) | +| **spdlog** | Backend de journalisation | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | +| **fmt** | Formatage de chaînes | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | +| **Open Sans** | Polices UI pour le ruban | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | +| | | | | +| | | | | + +> **Note de licence** : SolidDesigner est sous **GPLv3**, mais certaines dépendances intégrées/requises sont sous LGPL/MIT/Apache. Lors de la distribution de binaires, vous devez respecter chaque licence amont (obligations de liaison dynamique, notices, disponibilité des sources, etc.). + +### Optional / planned adapters (not required for a minimal build) + +- Des backends de rendu **OGRE / OSG / VTK / Skylark** existent comme modules plateforme (`Alice/Core/Runtime/AliceRenderBackend*`), mais peuvent nécessiter des SDK supplémentaires et restent en évolution. +- Les **mailleurs / solveurs** (FEA/CFD/optimisation) sont en cours de conception active ; des adaptateurs seront introduits progressivement. + +--- + +## Getting Started + +Flux de travail typique visé (état cible) : + +1. **Créer un projet** et définir les unités/tolérances par défaut. +2. **Esquisser** sur un plan ; utiliser contraintes/dimensions. +3. Créer des features : **Extrude**, **Revolve**, **Fillet**, **Shell**, **Pattern**… +4. **Assembler** les pièces ; ajouter mates/contraintes. +5. **Mailler** le modèle (contrôles globaux + locaux). +6. Définir les **matériaux** et les **conditions aux limites**. +7. Exécuter la **FEA/CFD** ; inspecter contraintes/déformations, modes, champs d’écoulement. +8. **Piloter les paramètres** à partir des résultats (par ex. réduire l’épaisseur jusqu’à ce que la contrainte ≤ la cible). +9. Enregistrer comme **projet** et exporter en **STEP/IGES** ou formats de maillage. + +--- + +## Plugin & Scripting + +- **Plugin ABI** : interfaces C++ propres pour les opérations géométriques, le maillage, les solveurs, les importeurs/exporteurs et les add-ins UI. +- **Isolation** : modèle de possession stable et sécurité inter-DLL (la fondation fournit des utilitaires de pointeurs Owning/Weak/Guard). +- **Scripting (planned)** : API Python pour automatiser la modélisation, configurer des études, post-traiter les résultats et orchestrer les boucles de conception. +- **AI hooks (planned)** : enregistrement de conseillers de conception personnalisés et de modèles ML pour la prédiction d’intention et l’optimisation. + +--- + +## Data & File Formats + +### Native project format (in progress) + +Le format natif est conçu pour être : + +- **Structured** : métadonnées + charges utiles typées (géométrie, maillage, résultats, vignettes, etc.) +- **Versioned** : versionnage de schéma avec pipeline explicite de migration +- **Incremental-friendly** : conçu pour le rechargement partiel et de futurs workflows cloud/workspace +- **Stable-identity aware** : les IDs d’objets survivent au save/load, au copier/coller et aux migrations + +> Le wiki public hébergera la spécification canonique une fois le format stabilisé. + +### Interoperability (planned / incremental) + +- **CAD Interop** : import/export STEP/IGES (autres formats via adaptateurs) +- **Mesh/Results** : formats standard de maillage/résultats pour solveurs externes et post-traitement (VTK, MED, etc., prévu) +- **Units** : système d’unités cohérent avec métadonnées explicites ; paramètres dimensionnés dans les expressions + +--- + +## Diagnostics, Logging & QA + +- **DiagnosticsEngine** unifié avec niveaux de sévérité, emplacements source et sinks enfichables (console, fichier, panneau UI). +- Backend **spdlog** optionnel pour une journalisation rapide et thread-aware. +- **Assertions** et **vérifications défensives** aux frontières entre DLL. +- **Tests** via CTest ; jeux de tests pour la géométrie, le maillage et la validité des solveurs ; cas reproductibles joints à JIRA. + +--- + +## Contributing + +Les contributions sont les bienvenues. + +- Consultez les epics/tâches JIRA et le Wiki GitHub pour le contexte. +- Discutez des propositions importantes avant d’ouvrir une PR. +- Respectez le style de code du projet (fichier clang-format prévu) et ajoutez des tests unitaires. +- Gardez des commits petits et bien décrits ; liez-les aux tickets JIRA quand c’est pertinent. + +Premières contributions suggérées : + +- Corriger des problèmes de build sur une plateforme/un compilateur spécifique +- Ajouter des tests ciblés (géométrie, persistance, résolution de contraintes) +- Ajouter de la documentation : notes de conception, diagrammes, ou sections minimales « how it works » + +> Documents contributeur au niveau dépôt (prévus) : `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`. + +--- + +## License + +Ce dépôt est distribué sous **GNU GPL v3.0**. Voir `LICENSE` pour le texte complet. + +> Remarque : les bibliothèques tierces peuvent avoir leurs propres licences ; assurez-vous de la conformité lors de la redistribution de binaires. + +--- + +## Acknowledgments + +Ce projet repose sur les épaules de géants : OpenCascade, Eigen, fmt, spdlog, Qt et la communauté open source au sens large. +Un grand merci aux contributeurs et chercheurs du domaine CAD/CAE/CFD/optimisation. + +--- + +## FAQ + +**Existe-t-il une API de scripting ?** +Une API Python est prévue. Une première ossature interne existe ; l’API publique arrive prochainement. + +**Quelle pile de solveurs est utilisée ?** +Des solveurs internes sont en cours de prototypage. Des adaptateurs vers des solveurs externes (mailleurs/post, par ex.) sont prévus. + +**Les fonctionnalités IA nécessiteront-elles un accès internet ?** +Non. L’objectif est de prendre en charge une inférence hors ligne avec des modèles locaux, avec des intégrations cloud optionnelles. + +**Où puis-je suivre l’avancement ?** +JIRA (roadmap/backlog) et le Wiki GitHub public. Les documents de conception détaillés se trouvent dans Confluence (accès requis). diff --git a/README.ja.md b/README.ja.md index dbf7105b..001824f3 100644 --- a/README.ja.md +++ b/README.ja.md @@ -2,7 +2,6 @@ SolidDesigner

-

License C++ @@ -11,11 +10,22 @@ Platform

-# SolidDesigner +

+ パラメトリック CAD とシミュレーション駆動設計のための、オープンソースのエンジニアリンググレード・プラットフォーム
+ フィーチャベース・モデリング • CAE 対応データモデル • 最適化ファーストのアーキテクチャ +

+ +

+ SolidDesigner デモプレビュー +

+ +

+ 製品デモプレビュー +

-**パラメトリック CAD、高忠実度 CAE、トポロジー最適化のためのオープンソース・プラットフォーム — シミュレーション駆動設計と AI アシストを統合。** +## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) -> 目標:Creo Parametric に匹敵するプロフェッショナル級システムとして、ソリッド/サーフェスモデリング、アセンブリ、製図、構造力学、CFD、マルチフィジックス、最適化をサポートし、シミュレーションが設計そのものを駆動できるようにする。 +> 目標:ソリッド/サーフェスモデリング、アセンブリ、製図、構造力学、CFD、マルチフィジックス、最適化をサポートし、シミュレーションが設計そのものを駆動できる、プロフェッショナルグレードのシステムを実現することです。 --- @@ -23,7 +33,7 @@ - **JIRA ボード**: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 - **公開 Wiki(GitHub)**: https://github.com/hananiahhsu/SolidDesignerWiki -- **設計 Wiki(Confluence/要アクセス権)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 +- **設計 Wiki(Confluence、要アクセス権)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 --- @@ -38,6 +48,7 @@ - [ロードマップ](#roadmap) - [ビルドと実行](#build--run) - [依存関係](#dependencies) + - [オープンソース構成とライセンス](#open-source-stack--licenses) - [はじめに](#getting-started) - [プラグインとスクリプティング](#plugin--scripting) - [データとファイル形式](#data--file-formats) @@ -53,13 +64,13 @@ SolidDesigner は、**フルスタックかつエンジニアリング品質**の CAD/CAE プラットフォームを目指します。 -- **パラメトリック CAD**:堅牢なパーツ/アセンブリモデリング、スケッチ/拘束、履歴ベースのフィーチャ、製図。 +- **Parametric CAD**:堅牢なパーツ/アセンブリモデリング、スケッチ/拘束、履歴ベースのフィーチャ、製図。 - **CAE**:**構造力学(FEA)**、**流体力学(CFD)**、**マルチフィジックス**の内製ソルバおよび/またはアダプタ。 -- **最適化**:**トポロジー/形状/寸法**最適化、補強・軽量化、シミュレーション駆動の設計ループ。 -- **AI アシスト**:拘束の推定、フィーチャ意図の推定、設計空間探索、ソルバ設定提案のためのエンジニアリング「コパイロット」。 -- **拡張性**:安定したプラグイン/スクリプティング API を備えたモジュラー・アーキテクチャ。 +- **Optimization**:**トポロジー/形状/寸法**最適化、補強・軽量化、シミュレーション駆動の設計ループ。 +- **AI Assistance**:拘束推定、フィーチャ意図推定、設計空間探索、ソルバ設定提案のためのエンジニアリング「コパイロット」。 +- **Extensibility**:安定したプラグイン/スクリプティング API を備えたモジュラーアーキテクチャ。 -> **Status**:開発中(pre-alpha)。API とファイル形式は変更される可能性があります。 +> **Status**:開発中(pre‑alpha)。API とファイル形式は変更される可能性があります。 --- @@ -73,22 +84,22 @@ SolidDesigner(ブランド:**Breptera**)は、再利用可能な **Alice** **ユーザー向けの目標** -- **Creo/NX 風ワークフロー**:ワークベンチ、リボンコマンド、ドッキングパネル、MDI ビューポート。 -- **パラメトリック基盤**:フィーチャ履歴ツリー、スケッチ/拘束、リビルド&再生成パイプライン(WIP)。 -- **エンジニアリング優先**:材料、荷重/境界条件、メッシュ制御、解析結果を運べる **CAD データモデル**(計画)。 -- **カーネルに裏付けられたジオメトリ**:既定の B‑Rep と可視化は **OpenCascade (OCCT)**。プラットフォーム層ではマルチバックエンド描画をサポートします。 +- **Workflow**:ワークベンチ、リボンコマンド、ドッキングパネル、MDI ビューポート。 +- **Parametric foundation**:フィーチャ履歴ツリー、スケッチ/拘束、リビルド&再生成パイプライン(WIP)。 +- **Engineering-first**:材料、荷重/境界条件、メッシュ制御、解析結果を保持できる **CAD データモデル**(計画中)。 +- **Kernel-backed geometry**:既定の B‑Rep と可視化は **OpenCascade (OCCT)**。プラットフォーム層ではマルチバックエンド描画をサポートします。 -> 上のスクリーンショットは現在の UI 方向性(Home Workbench + 学習/探索パネル)を示します。プレアルファ段階のためレイアウトは短いサイクルで変化します。 +> 上のスクリーンショットは現在の UI 方向性(Home Workbench + 発見/学習パネル)を示しています。プレアルファ段階のため、正確なレイアウトは短い周期で変化します。 --- ## What’s in the Box -- **基盤サブモジュール(“Alice”)**を含む、モダンな C++17/20 コードベース。 -- 基盤の上に構築された **デスクトップアプリケーション**(“SolidDesigner”)。 +- **基盤サブモジュール(「Alice」)** を含む、モダンな C++17/20 コードベース。 +- 基盤の上に構築された **デスクトップアプリケーション**(「SolidDesigner」)。 - **Core / Data / Interaction / UI** レイヤの明確な分離。 -- **フィーチャグラフ**、**パラメトリック拘束**、**診断/ログ**、**プラグインホスティング**の初期実装。 -- **CAE ソルバ(FEA/CFD)**と**最適化**に向けた長期計画。 +- **フィーチャグラフ**、**パラメトリック拘束**、**診断/ロギング**、**プラグインホスティング**の初期実装。 +- **CAE ソルバ(FEA/CFD)** と **最適化** に向けた長期計画。 --- @@ -101,6 +112,7 @@ Physical Structure | |----- Alice (submodule) | | + | |---- Bootstrap | |---- Core | |---- Data | |---- Interaction @@ -112,29 +124,30 @@ Physical Structure |-- DATA |-- Interaction |-- UI + |-- Plugins ``` ### Layered Architecture (high‑level) -- **Alice/Core** — プラットフォーム基盤・ユーティリティ(メモリ、スレッド、診断、数学、単位系、幾何抽象化など)。 +- **Alice/Core** — プラットフォーム基盤、基本ユーティリティ(メモリ、スレッド、診断、数学、単位系、幾何抽象など)。 - **Alice/Data** — パラメトリックモデル、フィーチャ/オペレーショングラフ、拘束・寸法システム、ドキュメント/セッションサービス。 - **Alice/Interaction** — 選択/ピッキング、マニピュレータ、コマンドパイプライン、Undo/Redo トランザクション、インタラクショングラフ。 -- **Alice/UI** — Qt ベース(予定)のシェル、ドッキング可能ペイン、プロパティブラウザ、リボン/メニュー/ショートカット。 -- **SolidDesigner/APP** — プロダクト層:アプリライフサイクル、永続化、プロジェクト/ワークスペース、プラグイン、スクリプト。 -- **SolidDesigner/DATA/Interaction/UI** — Alice レイヤに対するプロダクト固有拡張。 +- **Alice/UI** — Qt ベース(予定)のシェル、ドッキング可能なペイン、プロパティブラウザ、リボン/メニュー/ショートカット。 +- **SolidDesigner/APP** — 製品レイヤ:アプリケーションライフサイクル、永続化、プロジェクト/ワークスペース、プラグイン、スクリプティング。 +- **SolidDesigner/DATA/Interaction/UI** — Alice レイヤ上の製品固有拡張。 -> **Alice** サブモジュールは再利用可能なエンジン層として設計されており、**SolidDesigner** がそれを統合してプロダクトとして成立させます。 +> **Alice** サブモジュールは再利用可能なエンジン層として意図されており、**SolidDesigner** がそれを組み合わせて完全な製品として構成します。 --- ## Core Concepts -- **フィーチャグラフ**:Sketch、Extrude、Revolve、Fillet、Pattern、Boolean などの全モデリング操作を、有向非巡回グラフ(DAG)上のノードとして表現し、**履歴と依存関係**を明示します。再構築(Rebuild)は決定的に伝播します。 -- **拘束システム**:幾何拘束および寸法拘束を扱い、ソルババックエンドを差し替え可能にします(現状はスケッチ拘束中心、3D 拘束は計画中)。 -- **パラメトリック設計**:寸法、材料、境界条件などの命名パラメータで、幾何と解析の双方を駆動します。式と単位系をサポートします。 -- **シミュレーション駆動設計**:解析で候補設計を評価し、結果をパラメータにフィードバックします(例:応力目標を満たすまで軽量化を自動化)。 -- **多表現幾何**:公差を考慮したソリッド/サーフェス/B-Rep 抽象化、解析向けメッシュ生成、CAD↔CAE の整合性。 -- **トランザクション**:各コマンドはトランザクション内で実行され、完全な Undo/Redo と、診断エンジンによる意味のあるエラーメッセージを提供します。 +- **Feature Graph**:Sketch、Extrude、Revolve、Fillet、Pattern、Boolean など、すべてのモデリング操作は **履歴と依存関係** を持つ有向非巡回グラフのノードとして表現されます。再構築は決定的に伝播します。 +- **Constraint System**:幾何拘束と寸法拘束を、差し替え可能なソルババックエンドとともに扱います(現状はスケッチ拘束、3D 拘束は計画中)。 +- **Parametric Design**:名前付きパラメータ(寸法、材料、境界条件など)が幾何と解析の双方を駆動し、式と単位系をサポートします。 +- **Simulation‑Driven Design**:解析によって候補設計を評価し、結果をパラメータへフィードバックします(例:応力目標を満たすまで板厚を自動的に減らす)。 +- **Multi‑representation Geometry**:公差を考慮したソリッド/サーフェス/B‑Rep 抽象化、解析向けメッシュ生成、CAD↔CAE の整合性。 +- **Transactions**:すべてのコマンドはトランザクション内で実行され、完全な Undo/Redo と診断エンジンによる意味のあるエラーメッセージを提供します。 --- @@ -143,20 +156,20 @@ Physical Structure ### CAD (current/planned) - 拘束と寸法を備えたスケッチ -- 履歴ベースのモデリング:押し出し/回転/スイープ/ロフト、フィレット/面取り、シェル、パターン、ブーリアン -- アセンブリ:メイト/拘束、トップダウン・コンテキスト(WIP) +- 履歴ベースモデリング:押し出し/回転/スイープ/ロフト、フィレット/面取り、シェル、パターン、ブーリアン演算 +- アセンブリ:メイト/拘束、トップダウンコンテキスト(WIP) - 製図:ビュー、断面、寸法、GD&T(計画中) ### CAE (current/planned) -- **構造(FEA)**:線形静解析、モード解析、材料ライブラリ、境界条件、メッシュ制御(段階的に拡充予定) +- **Structural (FEA)**:線形静解析、モーダル解析、材料ライブラリ、境界条件、メッシュ制御(段階的拡張を計画) - **CFD**:非圧縮流(定常/非定常)、乱流モデル、境界条件(計画中) -- **マルチフィジックス**:熱—構造連成、FSI(長期) +- **Multiphysics**:熱構造連成、FSI(長期計画) ### Optimization (planned) - トポロジー最適化(SIMP/レベルセット) -- 形状/寸法最適化、制約(応力、変位、固有振動数、圧力損失など) +- 形状/寸法最適化、各種制約(応力、変位、固有振動数、圧力損失など) - 設計空間探索、サロゲートモデル ### AI Assistance (planned) @@ -166,66 +179,66 @@ Physical Structure - 設計空間の推奨、DOE の自動化 - 文脈に基づくソルバ設定・メッシング提案 -> アイテム単位の進捗は **[Roadmap](#roadmap)** と **JIRA** を参照してください。 +> 項目単位の進捗は **[Roadmap](#roadmap)** と **JIRA** を参照してください。 --- ## Roadmap -計画とバックログは **JIRA** で管理しています: +計画とバックログは **JIRA** で追跡しています: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 高レベルのマイルストーン(変更される可能性があります): 1. **P0 — Modeling Foundations**:安定したフィーチャグラフ、堅牢なスケッチャ、基本モデリング操作、トランザクションシステム、永続化。 -2. **P1 — Meshing & FEA MVP**:四面体/六面体メッシュパイプライン、線形静解析/モード解析、基本ポスト処理。 -3. **P2 — CFD MVP**:非圧縮流向けメッシュ&ソルバ統合、圧力/速度/温度場、ポスト処理。 -4. **P3 — Optimization**:SIMP トポロジー最適化、クローズドループのパラメータ更新、制約処理。 +2. **P1 — Meshing & FEA MVP**:四面体/六面体メッシュパイプライン、線形静解析/モーダル解析、基本ポスト処理。 +3. **P2 — CFD MVP**:非圧縮流向けのメッシュとソルバ統合、圧力/速度/温度場、ポスト処理。 +4. **P3 — Optimization**:SIMP トポロジー最適化、閉ループのパラメータ更新、制約処理。 5. **P4 — AI Copilot v1**:拘束推定、コマンド提案、ソルバプリセット、プロジェクト履歴からの学習。 -詳細設計ドキュメントは **Confluence**(要アクセス権)にあります。公開可能な一部は **GitHub Wiki** に置きます。 +詳細設計ドキュメントは **Confluence**(要アクセス権)にあり、公開可能な一部は **GitHub Wiki** にあります。 --- ## Build & Run -このリポジトリには、`../SolidDesigner_Build/` にビルドツリーを生成する **ワンクリックのビルドスクリプト**が同梱されています。 +このリポジトリには、`../SolidDesigner_Build/` にビルドツリーを生成する **ワンクリックビルドスクリプト** が含まれています。 ### Prerequisites (current) - **CMake ≥ 3.31** - - Windows:リポジトリに `ToolChain/cmake` として同梱(`AutoGenerateVsProject.bat` が利用) - - Linux:新しめの CMake をシステムにインストール(または独自ツールチェーンを使用) -- **C++17 ツールチェーン**:MSVC v143 / GCC 11+ / Clang 15+ -- **Qt 5.15.x**(Core, Gui, Widgets, Network, Quick, Qml) -- **OpenCascade (OCCT) SDK**:OCCT Viewer バックエンド用(下記 SDK レイアウト参照) + - Windows:リポジトリには `ToolChain/cmake` 配下に CMake が同梱されており、`AutoGenerateVsProject.bat` がそれを利用します。 + - Linux:新しめの CMake をシステムへインストールするか、独自ツールチェーンを使ってください。 +- **C++17 toolchain**:MSVC v143 / GCC 11+ / Clang 15+ +- **Qt 5.15.x**(Core, Gui, Widgets, Network, Quick, Qml モジュール) +- **OpenCascade (OCCT) SDK**:OCCT Viewer バックエンド用(以下の SDK レイアウトを参照) ### Windows (Visual Studio 2022, x64) -1. サブモジュール込みでクローン: +1. サブモジュール付きでクローンします: ```bash git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git cd SolidDesigner ``` -2. 実行: +2. 次を実行します: -- `AutoGenerateVsProject.bat`(`../SolidDesigner_Build/SolidDesigner.sln` を生成して Visual Studio を起動) +- `AutoGenerateVsProject.bat`(`../SolidDesigner_Build/SolidDesigner.sln` を生成して Visual Studio を開きます) -3. Visual Studio で `Release|x64` 構成をビルドし、`SolidDesigner` を実行します。 +3. Visual Studio で `Release|x64` 構成をビルドし、その後 `SolidDesigner` を実行します。 ### Linux (Makefiles) -実行: +次を実行します: ```bash ./SolidDesignerForLinux.sh ``` -このスクリプトは `Unix Makefiles` で構成・ビルドし、`../SolidDesigner_Build/` に出力します。 +このスクリプトは `Unix Makefiles` を使って構成とビルドを行い、出力を `../SolidDesigner_Build/` に生成します。 -> 注意:現状スクリプトは `-DCMAKE_GENERATOR_PLATFORM=x64` を渡していますが、これは Visual Studio 向けのオプションであり Linux では無視される場合があります。問題が出る場合は次の「Manual CMake」で構成してください。 +> 注意:現在このスクリプトは `-DCMAKE_GENERATOR_PLATFORM=x64` を渡しています。これは Visual Studio 向けのオプションであり、Linux ツールチェーンでは無視される場合があります。問題がある場合は、次の「Manual CMake」を使って手動で構成してください。 ### Manual CMake (recommended when customizing toolchains) @@ -236,7 +249,7 @@ cmake --build ../SolidDesigner_Build --parallel ### Third‑party SDK layout (OCCT) -OCCT Viewer バックエンドは、OpenCascade SDK が次の場所にエクスポートされていることを前提とします: +OCCT Viewer バックエンドは、OpenCascade SDK が次の場所へエクスポートされていることを前提としています: ``` Externals/3rdParty/sdk///occt @@ -247,74 +260,66 @@ Externals/3rdParty/sdk///occt - Windows:`msvc2022-x64-md` - Linux:`linux-x64` -CMake から上書きできます: +CMake から次のように上書きできます: - `-DSD_3P_PLATFORM=...` - `-DSD_3P_CFG=Debug|Release` -- または、`OpenCASCADEConfig.cmake` を含むフォルダへ `-DOpenCASCADE_DIR=...` を直接指定します。 +- または `OpenCASCADEConfig.cmake` を含むフォルダを `-DOpenCASCADE_DIR=...` で直接指定します。 ### Qt -UI ターゲットは現在 **Qt 5** を使用しています(CMake 内で `Qt5::Core`、`Qt5::Widgets`、`Qt5::Quick/Qml` 等)。 -Windows では一部モジュールが `Qt5.15.x` 向け `CMAKE_PREFIX_PATH` を既定設定している場合があります。必要に応じてローカルの Qt インストールに合わせて調整してください。 - -# --recurse-submodules を忘れた場合 - -すでにクローン済みのリポジトリで、次を実行してください: - -```bash -git submodule update --init --recursive -``` +UI ターゲットは現在 **Qt 5** を使用しています(CMake では `Qt5::Core`、`Qt5::Widgets`、`Qt5::Quick/Qml` など)。 +Windows では、一部モジュールが `Qt5.15.x` 向けの既定 `CMAKE_PREFIX_PATH` を設定しています。必要に応じて、手元の Qt インストール先に合わせて調整してください。 --- ## Dependencies -本プロジェクトはモジュラー構成です。いくつかのライブラリは **リポジトリ内に同梱(vendored)**され、いくつかは **外部 SDK** として導入します。 +このプロジェクトはモジュラー構成で、一部のライブラリは **リポジトリ内に同梱** され、他は **外部 SDK** として導入される想定です。 ### Open-source Stack & Licenses -| ライブラリ | 用途 | 位置 | ライセンス(上流) | +| ライブラリ | 用途 | 配置場所 | ライセンス(上流) | |---|---|---|---| | **OpenCascade (OCCT)** | B‑Rep カーネル + OCCT Viewer バックエンド | `Alice/Core/Runtime/AliceRenderBackendOCCViewer` | LGPL‑2.1 with OCCT exception(上流) | -| **Qt 5 (Widgets/Quick/Qml)** | デスクトップ UI(リボン、パネル、ダイアログ) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/Commercial(Qt) | -| **spdlog** | ロギングバックエンド | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | -| **fmt** | 文字列フォーマット | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | -| **Open Sans** | リボン用フォントアセット | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | -| | | | | -| | | | | +| **Qt 5 (Widgets/Quick/Qml)** | デスクトップ UI(リボン、パネル、ダイアログ) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/commercial(Qt) | +| **spdlog** | ロギングバックエンド | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | +| **fmt** | 文字列フォーマット | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | +| **Open Sans** | リボン用フォントアセット | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | +| | | | | +| | | | | -> **ライセンス注意**:SolidDesigner は **GPLv3** ですが、組み込み/必須の依存には LGPL/MIT/Apache が含まれます。バイナリ配布時は各上流ライセンスの条件(動的リンク義務、告知、ソース提供など)に従ってください。 +> **ライセンス注記**:SolidDesigner は **GPLv3** ですが、同梱/必須依存には LGPL/MIT/Apache が含まれます。バイナリを再配布する場合は、各上流ライセンスの条件(動的リンク義務、告知、ソース提供など)を順守してください。 ### Optional / planned adapters (not required for a minimal build) -- **OGRE / OSG / VTK / Skylark** の描画バックエンドはプラットフォームモジュールとして存在します(`Alice/Core/Runtime/AliceRenderBackend*`)。ただし追加 SDK が必要な場合があり、まだ進化中です。 -- **メッシング/ソルバ**(FEA/CFD/最適化)は設計・実装が進行中で、アダプタは段階的に導入されます。 +- **OGRE / OSG / VTK / Skylark** の描画バックエンドは、プラットフォームモジュール(`Alice/Core/Runtime/AliceRenderBackend*`)として存在しますが、追加 SDK が必要な場合があり、現在も進化中です。 +- **メッシング/ソルバ**(FEA/CFD/最適化)は活発に設計中であり、アダプタは段階的に導入されます。 --- ## Getting Started -想定する典型ワークフロー(完成形): +典型的なワークフローの目標形は次のとおりです: -1. **プロジェクトを作成**し、単位系/公差のデフォルトを設定する。 -2. 平面上に **スケッチ**し、拘束と寸法を付与する。 -3. **Extrude / Revolve / Fillet / Shell / Pattern** などのフィーチャを作成する。 -4. パーツを **アセンブリ**し、メイト/拘束を追加する。 -5. モデルを **メッシュ化**する(全体+局所制御)。 -6. **材料**と**境界条件**を定義する。 -7. **FEA/CFD** を実行し、応力/ひずみ、モード、流れ場などを評価する。 -8. 結果から **パラメータを駆動**する(例:応力 ≤ 目標になるまで厚みを減らす)。 -9. **プロジェクトとして保存**し、**STEP/IGES** やメッシュ形式へエクスポートする。 +1. **プロジェクトを作成**し、既定の単位系と公差を設定します。 +2. 平面上に **スケッチ** し、拘束と寸法を適用します。 +3. **Extrude**、**Revolve**、**Fillet**、**Shell**、**Pattern** などのフィーチャを作成します。 +4. パーツを **アセンブリ** し、メイト/拘束を追加します。 +5. モデルを **メッシュ化** します(グローバル + ローカル制御)。 +6. **材料** と **境界条件** を定義します。 +7. **FEA/CFD** を実行し、応力/ひずみ、モード、流れ場を確認します。 +8. 結果から **パラメータを駆動** します(例:応力 ≤ 目標値になるまで厚みを減らす)。 +9. **プロジェクト** として保存し、**STEP/IGES** またはメッシュ形式へエクスポートします。 --- ## Plugin & Scripting -- **Plugin ABI**:ジオメトリ操作、メッシング、ソルバ、インポータ/エクスポータ、UI アドイン向けのクリーンな C++ インターフェース。 -- **分離**:安定した所有権モデルとクロス DLL 安全性(基盤は Owning/Weak/Guard ポインタユーティリティを提供)。 -- **スクリプティング(計画)**:モデリング自動化、解析設定、ポスト処理、設計ループのオーケストレーションのための Python API。 -- **AI フック(計画)**:意図推定や最適化のために、カスタム設計アドバイザ/ML モデルを登録可能にする。 +- **Plugin ABI**:幾何操作、メッシング、ソルバ、インポータ/エクスポータ、UI アドイン向けのクリーンな C++ インターフェース。 +- **Isolation**:安定した所有権モデルと DLL 境界をまたぐ安全性(基盤は Owning/Weak/Guard ポインタユーティリティを提供)。 +- **Scripting (planned)**:モデリング自動化、スタディ設定、ポスト処理、設計ループのオーケストレーションのための Python API。 +- **AI hooks (planned)**:意図予測や最適化のためのカスタム設計アドバイザや ML モデルを登録可能にするフック。 --- @@ -322,29 +327,29 @@ git submodule update --init --recursive ### Native project format (in progress) -ネイティブ形式は次を満たすことを意図しています。 +ネイティブ形式は次の性質を備えることを意図しています: -- **構造化**:メタデータ+型付きペイロード(幾何、メッシュ、結果、サムネイルなど) -- **バージョン管理**:明示的なアップグレードパイプラインを伴うスキーマバージョニング -- **インクリメンタル志向**:部分ロードや将来のクラウド/ワークスペースに適した設計 -- **安定 ID 対応**:保存/読み込み、コピー/ペースト、アップグレードでオブジェクト ID を維持 +- **Structured**:メタデータ + 型付きペイロード(幾何、メッシュ、結果、サムネイルなど) +- **Versioned**:明示的なアップグレードパイプラインを備えたスキーマバージョニング +- **Incremental-friendly**:部分リロードや将来のクラウド/ワークスペースワークフローを見据えた設計 +- **Stable-identity aware**:保存/読込、コピー&ペースト、アップグレードをまたいでもオブジェクト ID を維持 -> 仕様が安定した時点で、公開 Wiki に正式仕様を掲載します。 +> 形式が安定した段階で、公開 Wiki に正規仕様を掲載する予定です。 ### Interoperability (planned / incremental) -- **CAD 連携**:STEP/IGES のインポート/エクスポート(他形式はアダプタ経由) -- **Mesh/Results**:外部ソルバ/ポスト処理向け標準形式(VTK、MED など、計画) -- **Units**:単位系メタデータを明示した一貫した単位系。式内の次元付きパラメータ。 +- **CAD Interop**:STEP/IGES のインポート/エクスポート(他形式はアダプタ経由) +- **Mesh/Results**:外部ソルバやポスト処理向けの標準メッシュ/結果形式(VTK、MED など、計画中) +- **Units**:明示的なメタデータを伴う一貫した単位系、式内の次元付きパラメータ --- ## Diagnostics, Logging & QA -- 重大度レベル、ソース位置、複数シンク(コンソール/ファイル/UI パネル)を備えた統一 **DiagnosticsEngine**。 -- 高速・スレッド対応ログのための任意 **spdlog** バックエンド。 -- DLL 境界を意識した **アサーション**と**防御的チェック**。 -- CTest による **テスト**:幾何、永続化、拘束解法、ソルバ正当性のフィクスチャ。再現ケースは JIRA に紐付け。 +- 重大度レベル、ソース位置、差し替え可能なシンク(コンソール、ファイル、UI パネル)を備えた統一 **DiagnosticsEngine**。 +- 高速でスレッド対応なロギングのための任意の **spdlog** バックエンド。 +- DLL 境界をまたぐ **assertion** と **防御的チェック**。 +- CTest による **テスト**:幾何、メッシング、ソルバ正当性のフィクスチャ。再現ケースは JIRA に添付可能。 --- @@ -352,46 +357,46 @@ git submodule update --init --recursive コントリビューションを歓迎します。 -- JIRA のエピック/タスクと GitHub Wiki を確認して背景を把握してください。 -- 大きな提案は、PR の前に議論してください。 -- プロジェクトのコードスタイル(clang-format は予定)に従い、ユニットテストを追加してください。 -- コミットは小さく明確にし、可能であれば JIRA チケットに紐付けてください。 +- 背景理解のために、JIRA のエピック/タスクと GitHub Wiki を確認してください。 +- 大きな提案は PR を開く前に議論してください。 +- プロジェクトのコードスタイル(clang-format は予定)に従い、ユニットテストを含めてください。 +- コミットは小さく、内容が分かるように記述し、可能であれば JIRA チケットにリンクしてください。 最初のコントリビューション候補: -- 特定プラットフォーム/コンパイラでのビルド問題修正 -- 集中的なテスト追加(幾何、永続化、拘束解法) -- ドキュメント整備(設計ノート、図、最小限の “How it works”) +- 特定プラットフォーム/コンパイラでのビルド問題を修正する +- 集中したテストを追加する(幾何、永続化、拘束解法) +- ドキュメントを追加する:設計ノート、図、最小限の「How it works」セクションなど -> リポジトリ単位のガイド(予定):`CONTRIBUTING.md`、`CODE_OF_CONDUCT.md` +> リポジトリレベルの貢献ドキュメント(計画中):`CONTRIBUTING.md`、`CODE_OF_CONDUCT.md`。 --- ## License -本リポジトリは **GNU GPL v3.0** の下でライセンスされています。全文は `LICENSE` を参照してください。 +このリポジトリは **GNU GPL v3.0** の下でライセンスされています。全文は `LICENSE` を参照してください。 -> 注意:サードパーティライブラリは独自ライセンスを持つ場合があります。バイナリ再配布の際は各ライセンスに準拠してください。 +> 注:サードパーティライブラリは独自ライセンスを持つ場合があります。バイナリ再配布時は各ライセンスへの準拠を確認してください。 --- ## Acknowledgments -本プロジェクトは OpenCascade、Eigen、fmt、spdlog、Qt、そして広範なオープンソース・コミュニティの成果の上に成り立っています。 -CAD/CAE/CFD/最適化の分野に貢献している開発者・研究者の皆様に感謝します。 +本プロジェクトは、OpenCascade、Eigen、fmt、spdlog、Qt、そして広範なオープンソースコミュニティの成果の上に成り立っています。 +CAD/CAE/CFD/最適化分野のコントリビュータと研究者の皆様に感謝します。 --- ## FAQ **スクリプト API はありますか?** -Python API は計画中です。内部の足場はありますが、公開 API は今後整備します。 +Python API は計画中です。初期的な内部足場はありますが、公開 API は今後提供予定です。 **どのソルバスタックを使っていますか?** -内製ソルバのプロトタイプを進めています。外部ソルバ(メッシャ/ポスト含む)へのアダプタも計画しています。 +初期の内製ソルバを試作中です。外部ソルバ(メッシャ/ポストなど)向けアダプタも計画しています。 -**AI 機能はインターネット接続が必須ですか?** -いいえ。ローカルモデルによるオフライン推論を基本とし、必要に応じてクラウド連携も可能にする方針です。 +**AI 機能にはインターネット接続が必要ですか?** +いいえ。ローカルモデルによるオフライン推論を基本とし、必要に応じてクラウド連携もサポートする方針です。 **進捗はどこで追えますか?** -JIRA(ロードマップ/バックログ)と公開 GitHub Wiki です。詳細設計は Confluence(要アクセス権)にあります。 +JIRA(ロードマップ/バックログ)と公開 GitHub Wiki で追えます。詳細設計ドキュメントは Confluence(要アクセス権)にあります。 diff --git a/README.md b/README.md index b8485480..fc09f22d 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,13 @@ Feature-based modeling • CAE-ready data model • Optimization-first architecture

+

+ SolidDesigner demo preview +

+ +

+ Product demo preview +

## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) diff --git a/README.ru.md b/README.ru.md new file mode 100644 index 00000000..f8c49122 --- /dev/null +++ b/README.ru.md @@ -0,0 +1,402 @@ +

+ SolidDesigner +

+ +

+ License + C++ + Kernel + UI + Platform +

+ +

+ Открытая платформа инженерного класса для параметрического CAD и проектирования, управляемого моделированием
+ Моделирование на основе features • Модель данных, готовая к CAE • Архитектура, ориентированная на оптимизацию +

+ +

+ Предпросмотр демо SolidDesigner +

+ +

+ Предпросмотр демонстрации продукта +

+ +## [English](README.md) | [日本語](README.ja.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Русский](README.ru.md) + +> Цель: профессиональная система, поддерживающая твердотельное/поверхностное моделирование, сборки, черчение, механику конструкций, CFD, мультифизику и оптимизацию — где симуляции могут управлять самим проектированием. + +--- + +## Quick Links + +- **Доска JIRA**: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 +- **Публичная wiki (GitHub)**: https://github.com/hananiahhsu/SolidDesignerWiki +- **Wiki по проектированию (Confluence, требуется доступ)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 + +--- + +## Table of Contents + +- [Видение и область охвата](#vision--scope) +- [Обзор продукта](#product-overview) +- [Что входит в состав](#whats-in-the-box) +- [Структура проекта и архитектура](#project-layout--architecture) +- [Ключевые концепции](#core-concepts) +- [Возможности](#capabilities) +- [Дорожная карта](#roadmap) +- [Сборка и запуск](#build--run) +- [Зависимости](#dependencies) + - [Open-source стек и лицензии](#open-source-stack--licenses) +- [Быстрый старт](#getting-started) +- [Плагины и скриптинг](#plugin--scripting) +- [Данные и форматы файлов](#data--file-formats) +- [Диагностика, логирование и QA](#diagnostics-logging--qa) +- [Участие в проекте](#contributing) +- [Лицензия](#license) +- [Благодарности](#acknowledgments) +- [FAQ](#faq) + +--- + +## Vision & Scope + +SolidDesigner стремится стать **full‑stack платформой CAD/CAE инженерного уровня**: + +- **Parametric CAD**: надежное моделирование деталей и сборок, эскизы/ограничения, features на основе истории и выпуск чертежей. +- **CAE**: встроенные решатели и/или адаптеры для **механики конструкций (FEA)**, **гидродинамики (CFD)** и **мультифизики**. +- **Optimization**: **топологическая / формообразующая / размерная** оптимизация, усиление/снижение массы и циклы проектирования, управляемые расчетом. +- **AI Assistance**: инженерный «копилот» для вывода ограничений, определения намерения features, исследования пространства решений и подсказок по настройке решателей. +- **Extensibility**: модульная архитектура со стабильным API для плагинов и скриптинга. + +> **Status**: активная разработка (pre‑alpha). API и форматы файлов могут меняться. + +--- + +## Product Overview + +SolidDesigner (бренд: **Breptera**) — это **настольное CAD-приложение, ориентированное на workbench-подход**, построенное на повторно используемой платформе **Alice**. + +

+ SolidDesigner Home Workbench +

+ +**Цели с точки зрения пользователя** + +- **Workflow**: workbench-режимы, ribbon-команды, dockable-панели и MDI-viewports. +- **Parametric foundation**: дерево истории features, sketches/constraints, pipeline rebuild & regeneration (WIP). +- **Engineering-first**: CAD-модель данных, рассчитанная на хранение **материалов, нагрузок/BC, настроек сетки и результатов расчета** (планируется). +- **Kernel-backed geometry**: B‑Rep и визуализация по умолчанию через **OpenCascade (OCCT)**; на уровне платформы поддерживается несколько backend’ов рендеринга. + +> Скриншот выше отражает текущее направление интерфейса (Home Workbench + панель discovery/learning). Точное расположение элементов быстро меняется в pre‑alpha. + +--- + +## What’s in the Box + +- Современная кодовая база на C++17/20 с **foundation-подмодулем («Alice»)**. +- **Настольное приложение** («SolidDesigner»), построенное поверх foundation-уровня. +- Четкое разделение между слоями **Core / Data / Interaction / UI**. +- Ранние реализации **графа features**, **параметрических ограничений**, **диагностики/логирования** и **хостинга плагинов**. +- Долгосрочный план по **CAE-решателям** (FEA/CFD) и **оптимизации**. + +--- + +## Project Layout & Architecture + +**Physical Structure** + +``` +Physical Structure + | + |----- Alice (submodule) + | | + | |---- Bootstrap + | |---- Core + | |---- Data + | |---- Interaction + | |---- UI + | + |----- SolidDesigner (application) + | + |-- APP + |-- DATA + |-- Interaction + |-- UI + |-- Plugins +``` + +### Layered Architecture (high‑level) + +- **Alice/Core** — платформенные примитивы и базовые утилиты (память, потоки, диагностика, математика, единицы, геометрические абстракции). +- **Alice/Data** — параметрическая модель, граф features/операций, система ограничений и размеров, сервисы документа/сессии. +- **Alice/Interaction** — выбор/picking, манипуляторы, командный pipeline, транзакции undo/redo, граф взаимодействия. +- **Alice/UI** — оболочка на Qt (планируется), dockable-панели, браузер свойств, ribbon/меню/горячие клавиши. +- **SolidDesigner/APP** — уровень продукта: жизненный цикл приложения, персистентность, проект/workspace, плагины, скриптинг. +- **SolidDesigner/DATA/Interaction/UI** — продуктовые расширения поверх слоев Alice. + +> Подмодуль **Alice** намеренно сделан переиспользуемым и engine-подобным; **SolidDesigner** композитно собирает из него полноценный продукт. + +--- + +## Core Concepts + +- **Feature Graph**: все операции моделирования (Sketch, Extrude, Revolve, Fillet, Pattern, Boolean и т. д.) представлены узлами ориентированного ациклического графа с **историей и зависимостями**. Перестроение распространяется детерминированно. +- **Constraint System**: геометрические и размерные ограничения с backend’ами решателя (сейчас — ограничения эскиза; 3D-ограничения планируются). +- **Parametric Design**: именованные параметры (размеры, материалы, граничные условия) могут управлять и геометрией, и расчетом; поддерживаются выражения и единицы измерения. +- **Simulation‑Driven Design**: анализы оценивают варианты конструкции; результаты возвращаются в параметры (например, автоматически уменьшать массу до выполнения требования по напряжениям). +- **Multi‑representation Geometry**: абстракции solid/surface/B‑Rep с учетом допусков, генерация сетки для анализа, согласованность CAD↔CAE. +- **Transactions**: каждая команда выполняется внутри транзакции; полный undo/redo; понятные сообщения об ошибках через движок диагностики. + +--- + +## Capabilities + +### CAD (current/planned) + +- Эскизирование с ограничениями и размерами +- Историческое моделирование: extrude/revolve/sweep/loft, fillet/chamfer, shell, pattern, булевы операции +- Сборки: mates/constraints; top‑down context (WIP) +- Чертежи: виды, сечения, размеры, GD&T (планируется) + +### CAE (current/planned) + +- **Structural (FEA)**: линейная статика, модальный анализ; библиотека материалов; граничные условия; управление сеткой (планируется поэтапное расширение) +- **CFD**: несжимаемые потоки (стационарные/нестационарные); модели турбулентности; граничные условия (планируется) +- **Multiphysics**: термо‑структурная связка, FSI (долгосрочно) + +### Optimization (planned) + +- Топологическая оптимизация (SIMP/level‑set) +- Оптимизация формы/размера; ограничения (напряжение, перемещение, частота, потеря давления и т. д.) +- Исследование пространства решений; surrogate-модели + +### AI Assistance (planned) + +- Вывод намерения constraints/features из действий пользователя +- Автодополнение команд; подсказки по параметрам +- Рекомендации по пространству проектирования; автоматический DOE +- Подсказки по настройке решателя и построению сетки в зависимости от контекста + +> Подробный прогресс по элементам смотрите в **[Roadmap](#roadmap)** и **JIRA**. + +--- + +## Roadmap + +Планирование и backlog отслеживаются в **JIRA**: +https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 + +Крупные этапы (могут измениться): + +1. **P0 — Modeling Foundations**: стабильный граф features, надежный sketcher, базовые операции моделирования, система транзакций, персистентность. +2. **P1 — Meshing & FEA MVP**: pipeline тетра/гекса-сетки; линейная статика/модальный анализ; базовый постпроцессинг. +3. **P2 — CFD MVP**: интеграция сетки и решателя для несжимаемых потоков; поля давления/скорости/температуры; постпроцессинг. +4. **P3 — Optimization**: топологическая оптимизация SIMP; замкнутый цикл обновления параметров; обработка ограничений. +5. **P4 — AI Copilot v1**: вывод ограничений, подсказки по командам, solver presets; обучение на истории проектов. + +Подробные проектные документы находятся в **Confluence** (требуется доступ). Публичная часть размещается в **GitHub Wiki**. + +--- + +## Build & Run + +В репозитории есть **скрипты сборки в один клик**, которые создают дерево сборки в `../SolidDesigner_Build/`. + +### Prerequisites (current) + +- **CMake ≥ 3.31** + - Windows: репозиторий включает CMake в `ToolChain/cmake` (используется `AutoGenerateVsProject.bat`) + - Linux: установите свежую системную версию CMake (или используйте собственную toolchain) +- **C++17 toolchain**: MSVC v143 / GCC 11+ / Clang 15+ +- **Qt 5.15.x** с модулями: Core, Gui, Widgets, Network, Quick, Qml +- **OpenCascade (OCCT) SDK** для backend’а OCCT Viewer (см. layout SDK ниже) + +### Windows (Visual Studio 2022, x64) + +1. Клонируйте с подмодулями: + +```bash +git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git +cd SolidDesigner +``` + +2. Запустите: + +- `AutoGenerateVsProject.bat` (создает `../SolidDesigner_Build/SolidDesigner.sln` и открывает Visual Studio) + +3. Соберите конфигурацию `Release|x64` в Visual Studio, затем запустите `SolidDesigner`. + +### Linux (Makefiles) + +Запустите: + +```bash +./SolidDesignerForLinux.sh +``` + +Этот скрипт выполняет конфигурацию и сборку с использованием `Unix Makefiles` и пишет результаты в `../SolidDesigner_Build/`. + +> Примечание: сейчас скрипт передает `-DCMAKE_GENERATOR_PLATFORM=x64`, что является опцией Visual Studio и может игнорироваться Linux-toolchain’ами. Если возникнут проблемы, запустите CMake вручную (следующий раздел). + +### Manual CMake (recommended when customizing toolchains) + +```bash +cmake -S . -B ../SolidDesigner_Build -G "Ninja" -DCMAKE_BUILD_TYPE=Release +cmake --build ../SolidDesigner_Build --parallel +``` + +### Third‑party SDK layout (OCCT) + +Backend OCCT Viewer ожидает, что SDK OpenCascade экспортирован в: + +``` +Externals/3rdParty/sdk///occt +``` + +Значения `` по умолчанию (могут быть переопределены): + +- Windows: `msvc2022-x64-md` +- Linux: `linux-x64` + +Переопределить из CMake можно так: + +- `-DSD_3P_PLATFORM=...` +- `-DSD_3P_CFG=Debug|Release` +- либо напрямую указать `-DOpenCASCADE_DIR=...` на папку, содержащую `OpenCASCADEConfig.cmake`. + +### Qt + +UI-таргеты сейчас используют **Qt 5** (например, `Qt5::Core`, `Qt5::Widgets`, `Qt5::Quick/Qml` в CMake). +В Windows некоторые модули задают стандартный `CMAKE_PREFIX_PATH` для `Qt5.15.x`; при необходимости скорректируйте его под вашу локальную установку Qt. + +--- + +## Dependencies + +Проект модульный: часть библиотек **вендорится внутри дерева**, а часть ожидается как **внешние SDK**. + +### Open-source Stack & Licenses + +| Библиотека | Назначение | Где используется | Лицензия (upstream) | +|---|---|---|---| +| **OpenCascade (OCCT)** | B‑Rep kernel + backend OCCT Viewer | `Alice/Core/Runtime/AliceRenderBackendOCCViewer` | LGPL‑2.1 with OCCT exception (upstream) | +| **Qt 5 (Widgets/Quick/Qml)** | Desktop UI (ribbon, панели, диалоги) | `Designer/UI/*`, `Alice/UI/QFrameWork/*` | GPL/LGPL/commercial (Qt) | +| **spdlog** | backend логирования | `Alice/Core/Foundation/AliceBasicTool/*SpdLog*` | MIT | +| **fmt** | форматирование строк | `Alice/Core/Foundation/AliceBasicTool/*Fmt*` | MIT | +| **Open Sans** | шрифтовые ресурсы UI для ribbon | `Alice/UI/QFrameWork/AliceRibbon/OpenSans` | Apache‑2.0 | +| | | | | +| | | | | + +> **Примечание по лицензии**: SolidDesigner распространяется под **GPLv3**, но некоторые встроенные/обязательные зависимости имеют лицензии LGPL/MIT/Apache. При распространении бинарных сборок необходимо соблюдать требования соответствующих upstream-лицензий (обязательства по динамической линковке, уведомления, доступность исходников и т. д.). + +### Optional / planned adapters (not required for a minimal build) + +- Backend’ы рендеринга **OGRE / OSG / VTK / Skylark** существуют как платформенные модули (`Alice/Core/Runtime/AliceRenderBackend*`), но могут требовать дополнительные SDK и пока продолжают развиваться. +- **Meshing / solvers** (FEA/CFD/оптимизация) находятся в активной фазе проектирования; адаптеры будут вводиться постепенно. + +--- + +## Getting Started + +Типовой целевой workflow: + +1. **Создайте проект** и задайте единицы/допуски по умолчанию. +2. Выполните **эскизирование** на плоскости; используйте ограничения/размеры. +3. Создайте features: **Extrude**, **Revolve**, **Fillet**, **Shell**, **Pattern**… +4. **Соберите** детали; добавьте mates/constraints. +5. **Постройте сетку** модели (глобальные + локальные настройки). +6. Определите **материалы** и **граничные условия**. +7. Запустите **FEA/CFD**; проанализируйте напряжения/деформации, моды и поля течения. +8. **Управляйте параметрами** по результатам (например, уменьшайте толщину, пока напряжение ≤ целевого значения). +9. Сохраните как **проект** и экспортируйте в **STEP/IGES** или форматы сетки. + +--- + +## Plugin & Scripting + +- **Plugin ABI**: чистые C++ интерфейсы для геометрических операций, построения сеток, решателей, импортёров/экспортёров и UI add-in’ов. +- **Isolation**: стабильная модель владения и безопасность между DLL (foundation предоставляет утилиты указателей Owning/Weak/Guard). +- **Scripting (planned)**: Python API для автоматизации моделирования, настройки исследований, постобработки результатов и оркестрации циклов проектирования. +- **AI hooks (planned)**: регистрация пользовательских design-advisor’ов и ML-моделей для предсказания намерений и оптимизации. + +--- + +## Data & File Formats + +### Native project format (in progress) + +Нативный формат задуман как: + +- **Structured**: метаданные + типизированные payload’ы (геометрия, сетка, результаты, thumbnails и т. д.) +- **Versioned**: версионирование схемы с явным pipeline обновления +- **Incremental-friendly**: рассчитан на частичную перезагрузку и будущие cloud/workspace-сценарии +- **Stable-identity aware**: ID объектов сохраняются через save/load, copy/paste и обновления + +> После стабилизации формата публичная wiki будет содержать каноническую спецификацию. + +### Interoperability (planned / incremental) + +- **CAD Interop**: импорт/экспорт STEP/IGES (другие форматы через адаптеры) +- **Mesh/Results**: стандартные форматы сеток/результатов для внешних решателей и постобработки (VTK, MED и т. д., планируется) +- **Units**: согласованная система единиц с явными метаданными; размерные параметры в выражениях + +--- + +## Diagnostics, Logging & QA + +- Единый **DiagnosticsEngine** с уровнями важности, позициями в исходниках и подключаемыми sinks (консоль, файл, UI-панель). +- Опциональный backend **spdlog** для быстрого thread-aware логирования. +- **Assertions** и **защитные проверки** через границы DLL. +- **Testing** через CTest; fixtures для геометрии, сеток и корректности решателей; воспроизводимые случаи привязываются к JIRA. + +--- + +## Contributing + +Контрибьюции приветствуются. + +- Изучите JIRA epics/tasks и GitHub Wiki для понимания контекста. +- Обсуждайте крупные предложения до открытия PR. +- Следуйте стилю кода проекта (файл clang-format планируется) и добавляйте unit-тесты. +- Держите коммиты небольшими и хорошо описанными; по возможности связывайте их с тикетами JIRA. + +Подходящие первые вклады: + +- Исправить проблемы сборки на конкретной платформе/компиляторе +- Добавить фокусные тесты (геометрия, персистентность, решение ограничений) +- Добавить документацию: design notes, диаграммы или минимальные разделы «how it works» + +> Документы для контрибьюторов на уровне репозитория (планируются): `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`. + +--- + +## License + +Этот репозиторий лицензирован по **GNU GPL v3.0**. Полный текст см. в `LICENSE`. + +> Примечание: сторонние библиотеки могут иметь собственные лицензии; при распространении бинарных сборок необходимо соблюдать их требования. + +--- + +## Acknowledgments + +Этот проект стоит на плечах гигантов: OpenCascade, Eigen, fmt, spdlog, Qt и более широкого open-source сообщества. +Особая благодарность контрибьюторам и исследователям в области CAD/CAE/CFD/оптимизации. + +--- + +## FAQ + +**Есть ли API для скриптинга?** +Python API планируется. Уже существует ранняя внутренняя заготовка; публичный API появится позже. + +**Какой стек решателей используется?** +Внутренние решатели находятся на стадии прототипирования. Также планируются адаптеры к внешним решателям (например, mesh/post). + +**Потребуют ли ИИ-функции доступ в интернет?** +Нет. Цель — поддержка офлайн-инференса на локальных моделях с опциональными cloud-интеграциями. + +**Где отслеживать прогресс?** +В JIRA (roadmap/backlog) и публичной GitHub Wiki. Подробные проектные документы находятся в Confluence (требуется доступ).