Open-Source-Plattform in Engineering-Qualität für parametrisches CAD und simulationsgetriebenes Design
Feature-basierte Modellierung • CAE-fähiges Datenmodell • Optimierungsorientierte Architektur
Produkt-Demo-Vorschau
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.
- 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
- Vision & Umfang
- Produktüberblick
- Was enthalten ist
- Projektstruktur & Architektur
- Kernkonzepte
- Fähigkeiten
- Roadmap
- Build & Run
- Abhängigkeiten
- Erste Schritte
- Plugins & Scripting
- Daten & Dateiformate
- Diagnostik, Logging & QA
- Beitragen
- Lizenz
- Danksagungen
- FAQ
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.
SolidDesigner (Marke: Breptera) ist eine Desktop-CAD-Anwendung mit Workbench-Ausrichtung, aufgebaut auf der wiederverwendbaren Alice-Plattform.
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.
- 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.
Physical Structure
Physical Structure
|
|----- Alice (submodule)
| |
| |---- Bootstrap
| |---- Core
| |---- Data
| |---- Interaction
| |---- UI
|
|----- SolidDesigner (application)
|
|-- APP
|-- DATA
|-- Interaction
|-- UI
|-- Plugins
- 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.
- 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.
- 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)
- 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)
- Topologieoptimierung (SIMP/Level-Set)
- Form-/Größenoptimierung; Constraints (Spannung, Verschiebung, Frequenz, Druckverlust usw.)
- Design-Space-Exploration; Surrogatmodelle
- 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 und JIRA.
Planung und Backlog werden in JIRA verfolgt:
https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3
Übergeordnete Meilensteine (Änderungen vorbehalten):
- P0 — Modeling Foundations: stabiler Feature-Graph, robuster Sketcher, Kern-Modellieroperationen, Transaktionssystem, Persistenz.
- P1 — Meshing & FEA MVP: Tet/Hex-Mesh-Pipeline; lineare Statik/Modal; grundlegendes Post-Processing.
- P2 — CFD MVP: Mesh- und Solver-Integration für inkompressible Strömungen; Druck-/Geschwindigkeits-/Temperaturfelder; Post-Processing.
- P3 — Optimization: SIMP-Topologieoptimierung; geschlossene Parameter-Updates; Constraint-Handling.
- 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.
Dieses Repo enthält One-Click-Build-Skripte, die einen Build-Baum unter ../SolidDesigner_Build/ erzeugen.
- CMake ≥ 3.31
- Windows: Das Repo bündelt CMake unter
ToolChain/cmake(genutzt vonAutoGenerateVsProject.bat) - Linux: Installieren Sie eine aktuelle Systemversion von CMake (oder verwenden Sie Ihre eigene Toolchain)
- Windows: Das Repo bündelt CMake unter
- 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)
- Mit Submodulen klonen:
git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git
cd SolidDesigner- Ausführen:
AutoGenerateVsProject.bat(erzeugt../SolidDesigner_Build/SolidDesigner.slnund öffnet Visual Studio)
- Die Konfiguration
Release|x64in Visual Studio bauen und anschließendSolidDesignerstarten.
Ausführen:
./SolidDesignerForLinux.shDieses 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).
cmake -S . -B ../SolidDesigner_Build -G "Ninja" -DCMAKE_BUILD_TYPE=Release
cmake --build ../SolidDesigner_Build --parallelDas OCCT-Viewer-Backend erwartet, dass das OpenCascade-SDK hier exportiert ist:
Externals/3rdParty/sdk/<platform>/<Debug|Release>/occt
Standardwerte für <platform> (ü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, derOpenCASCADEConfig.cmakeenthält.
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.
Das Projekt ist modular: einige Bibliotheken sind im Baum vendored, andere werden als externe SDKs erwartet.
| 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.).
- 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.
Typischer Ziel-Workflow (Endzustand):
- Projekt anlegen und Standard-Einheiten/Toleranzen festlegen.
- Auf einer Ebene skizzieren; Constraints/Bemaßungen anwenden.
- Features erzeugen: Extrude, Revolve, Fillet, Shell, Pattern …
- Teile zusammenbauen; Mates/Constraints hinzufügen.
- Das Modell vernetzen (globale + lokale Steuerungen).
- Materialien und Randbedingungen definieren.
- FEA/CFD ausführen; Spannungen/Dehnungen, Modi und Strömungsfelder auswerten.
- Parameter aus Ergebnissen treiben (z. B. Dicke reduzieren, bis Spannung ≤ Zielwert).
- Als Projekt speichern und nach STEP/IGES oder Mesh-Formaten exportieren.
- 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.
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.
- 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
- 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.
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.
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.
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.
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).

