|
1 | | -### Tree of Archi |
| 1 | +# SolidDesigner |
| 2 | + |
| 3 | +**An open‑source platform for parametric CAD, high‑fidelity CAE, and topology optimization — with simulation‑driven design and AI assistance.** |
| 4 | + |
| 5 | +> Goal: a professional‑grade system comparable to Creo Parametric that supports solid/surface modeling, assembly, drafting, structural mechanics, CFD, multiphysics, and optimization — where simulations can drive the design itself. |
| 6 | +
|
| 7 | +--- |
| 8 | + |
| 9 | +## Quick Links |
| 10 | + |
| 11 | +- **JIRA Board**: https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 |
| 12 | +- **Public Wiki (GitHub)**: https://github.com/hananiahhsu/SolidDesignerWiki |
| 13 | +- **Design Wiki (Confluence, access required)**: https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963 |
| 14 | + |
| 15 | +--- |
| 16 | + |
| 17 | +## Table of Contents |
| 18 | + |
| 19 | +- [Vision & Scope](#vision--scope) |
| 20 | +- [What’s in the Box](#whats-in-the-box) |
| 21 | +- [Project Layout & Architecture](#project-layout--architecture) |
| 22 | +- [Core Concepts](#core-concepts) |
| 23 | +- [Capabilities](#capabilities) |
| 24 | +- [Roadmap](#roadmap) |
| 25 | +- [Build & Run](#build--run) |
| 26 | +- [Dependencies](#dependencies) |
| 27 | +- [Getting Started](#getting-started) |
| 28 | +- [Plugin & Scripting](#plugin--scripting) |
| 29 | +- [Data & File Formats](#data--file-formats) |
| 30 | +- [Diagnostics, Logging & QA](#diagnostics-logging--qa) |
| 31 | +- [Contributing](#contributing) |
| 32 | +- [License](#license) |
| 33 | +- [Acknowledgments](#acknowledgments) |
| 34 | +- [FAQ](#faq) |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## Vision & Scope |
| 39 | + |
| 40 | +SolidDesigner aims to be a **full‑stack, engineering‑grade** CAD/CAE platform: |
| 41 | + |
| 42 | +- **Parametric CAD**: robust part/assembly modeling, sketches/constraints, history‑based features, and drafting. |
| 43 | +- **CAE**: built‑in solvers and/or adapters for **structural mechanics (FEA)**, **fluid dynamics (CFD)**, **multiphysics**. |
| 44 | +- **Optimization**: **topology/shape/size** optimization; reinforcement/weight reduction; simulation‑driven design loops. |
| 45 | +- **AI Assistance**: an engineering “copilot” for constraint inference, feature intent detection, design space exploration, and solver configuration suggestions. |
| 46 | +- **Extensibility**: modular architecture with a stable plugin and scripting API. |
| 47 | + |
| 48 | +> **Status**: Active development (pre‑alpha). APIs and file formats may change. |
| 49 | +
|
| 50 | +--- |
| 51 | + |
| 52 | +## What’s in the Box |
| 53 | + |
| 54 | +- A modern C++17/20 codebase with a **foundation submodule (“Alice”)**. |
| 55 | +- A **desktop application** (“SolidDesigner”) built on the foundation. |
| 56 | +- A clean separation between **Core/Data/Interaction/UI** layers. |
| 57 | +- Early implementations of the **feature graph**, **parametric constraints**, **diagnostics/logging**, and **plugin hosting**. |
| 58 | +- A long‑term plan for **CAE solvers** (FEA/CFD) and **optimization**. |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## Project Layout & Architecture |
| 63 | + |
| 64 | +**Physical Structure** |
2 | 65 |
|
3 | 66 | ``` |
4 | 67 | Physical Structure |
5 | | - | |
6 | | - |-----Alice<submoudle> |
7 | | - | | |
8 | | - | |----Core |
9 | | - | |----Data |
10 | | - | |----Interaction |
11 | | - | |----UI |
12 | | - | |
13 | | - |-----SolidDesigner |
14 | | - | |
15 | | - |--UI |
16 | | - |--Interaction |
17 | | - |--DATA |
18 | | - |--APP |
| 68 | + | |
| 69 | + |----- Alice (submodule) |
| 70 | + | | |
| 71 | + | |---- Core |
| 72 | + | |---- Data |
| 73 | + | |---- Interaction |
| 74 | + | |---- UI |
| 75 | + | |
| 76 | + |----- SolidDesigner (application) |
| 77 | + | |
| 78 | + |-- APP |
| 79 | + |-- DATA |
| 80 | + |-- Interaction |
| 81 | + |-- UI |
19 | 82 | ``` |
20 | 83 |
|
| 84 | +### Layered Architecture (high‑level) |
| 85 | + |
| 86 | +- **Alice/Core** — platform primitives, base utilities (memory, threading, diagnostics, math, units, geometry abstractions). |
| 87 | +- **Alice/Data** — parametric model, feature/operation graph, constraint & dimension system, document/session services. |
| 88 | +- **Alice/Interaction** — selection/picking, manipulators, command pipeline, undo/redo transactions, interaction graph. |
| 89 | +- **Alice/UI** — Qt‑based (planned) shell, dockable panes, property browser, ribbon/menus/shortcuts. |
| 90 | +- **SolidDesigner/APP** — the product layer: application lifecycle, persistence, project/workspace, plugins, scripting. |
| 91 | +- **SolidDesigner/DATA/Interaction/UI** — product‑specific extensions over Alice layers. |
| 92 | + |
| 93 | +> The **Alice** submodule is intentionally reusable and engine‑like; **SolidDesigner** composes it into a complete product. |
| 94 | +
|
| 95 | +--- |
| 96 | + |
| 97 | +## Core Concepts |
| 98 | + |
| 99 | +- **Feature Graph**: All modeling operations (Sketch, Extrude, Revolve, Fillet, Pattern, Boolean, etc.) are nodes in a directed acyclic graph with **history & dependencies**. Rebuilds propagate deterministically. |
| 100 | +- **Constraint System**: Geometric and dimensional constraints with solver back‑ends (sketch constraints today; 3D constraints planned). |
| 101 | +- **Parametric Design**: Named parameters (dims, materials, BCs) can drive both geometry and analysis; supports expressions and units. |
| 102 | +- **Simulation‑Driven Design**: Analyses evaluate candidate designs; results feed back to parameters (e.g., automate weight reduction to meet stress targets). |
| 103 | +- **Multi‑representation Geometry**: Solid/surface/B‑Rep abstractions with tolerances; mesh generation for analysis; CAD↔CAE consistency. |
| 104 | +- **Transactions**: Every command runs inside a transaction; full undo/redo; meaningful error messages via diagnostics engine. |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +## Capabilities |
| 109 | + |
| 110 | +### CAD (current/planned) |
21 | 111 |
|
| 112 | +- Sketching with constraints and dimensions |
| 113 | +- History‑based modeling: extrude/revolve/sweep/loft, fillet/chamfer, shell, pattern, boolean ops |
| 114 | +- Assembly: mates/constraints; top‑down context (WIP) |
| 115 | +- Drafting: views, sections, dimensions, GD&T (planned) |
22 | 116 |
|
23 | | -### The Address of JIRA |
| 117 | +### CAE (current/planned) |
24 | 118 |
|
| 119 | +- **Structural (FEA)**: linear static, modal; material library; boundary conditions; mesh controls (planned iterative expansion) |
| 120 | +- **CFD**: incompressible flows (steady/transient); turbulence models; boundary conditions (planned) |
| 121 | +- **Multiphysics**: thermal‑structural, FSI (long‑term) |
| 122 | + |
| 123 | +### Optimization (planned) |
| 124 | + |
| 125 | +- Topology optimization (SIMP/level‑set) |
| 126 | +- Shape/size optimization; constraints (stress, displacement, frequency, pressure drop, etc.) |
| 127 | +- Design space exploration; surrogate modeling |
| 128 | + |
| 129 | +### AI Assistance (planned) |
| 130 | + |
| 131 | +- Constraint/feature intent inference from user actions |
| 132 | +- Command autocompletion; parameter suggestions |
| 133 | +- Design space recommendation; automatic DOE |
| 134 | +- Solver setup & meshing suggestions based on context |
| 135 | + |
| 136 | +> See **[Roadmap](#roadmap)** and **JIRA** for item‑level progress. |
| 137 | +
|
| 138 | +--- |
| 139 | + |
| 140 | +## Roadmap |
| 141 | + |
| 142 | +Planning and backlog are tracked in **JIRA**: |
25 | 143 | https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3 |
26 | 144 |
|
| 145 | +High‑level milestones (subject to change): |
| 146 | + |
| 147 | +1. **P0 — Modeling Foundations**: stable feature graph, robust sketcher, core modeling ops, transaction system, persistence. |
| 148 | +2. **P1 — Meshing & FEA MVP**: tet/hex mesh pipeline; linear static/modal; basic post‑processing. |
| 149 | +3. **P2 — CFD MVP**: mesh & solver integration for incompressible flows; pressure/velocity/temperature fields; post‑processing. |
| 150 | +4. **P3 — Optimization**: SIMP topology optimization; closed‑loop parameter updates; constraint handling. |
| 151 | +5. **P4 — AI Copilot v1**: constraint inference, command suggestions, solver presets; learning from project history. |
| 152 | + |
| 153 | +Detailed design docs live in **Confluence** (access required). A public subset lives in the **GitHub Wiki**. |
| 154 | + |
| 155 | +--- |
| 156 | + |
| 157 | +## Build & Run |
| 158 | + |
| 159 | +### Prerequisites (indicative) |
| 160 | + |
| 161 | +- **CMake ≥ 3.22** |
| 162 | +- **C++17/20** toolchain (MSVC v143, Clang 15+, or GCC 11+) |
| 163 | +- **Qt 5 (for UI; planned/optional if building headless tools) |
| 164 | +- **Eigen** (math), **fmt**, **spdlog** |
| 165 | +- **OpenCascade (OCC)** for B‑Rep (primary geometry backend; alternatives pluggable in future) |
| 166 | +- **(Optional)** VTK/OCCT visualization, CGAL/Gmsh/TetGen for meshing, OpenMP/TBB for parallelism, CUDA for GPU paths |
| 167 | + |
| 168 | +> Exact versions and options may evolve; consult JIRA/Wiki for up‑to‑date build notes. |
| 169 | +
|
| 170 | +### Get the source |
| 171 | + |
| 172 | +```bash |
| 173 | +git clone --recurse-submodules https://github.com/hananiahhsu/SolidDesigner.git |
| 174 | +cd SolidDesigner |
| 175 | +# If you forgot --recurse-submodules |
| 176 | +git submodule update --init --recursive |
| 177 | +``` |
| 178 | + |
| 179 | +### Windows (MSVC, x64) |
| 180 | + |
| 181 | +```bash |
| 182 | +cmake -S . -B build -G "Visual Studio 17 2022" -A x64 ^ |
| 183 | + -DCMAKE_INSTALL_PREFIX=%CD%/install ^ |
| 184 | + -DSD_WITH_QT=ON ^ |
| 185 | + -DSD_WITH_OCC=ON |
| 186 | + |
| 187 | +cmake --build build --config Release --parallel |
| 188 | +cmake --install build --config Release |
| 189 | +``` |
| 190 | + |
| 191 | +### Linux (GCC/Clang + Ninja) |
| 192 | + |
| 193 | +```bash |
| 194 | +cmake -S . -B build -G Ninja \ |
| 195 | + -DCMAKE_BUILD_TYPE=Release \ |
| 196 | + -DCMAKE_INSTALL_PREFIX=$PWD/install \ |
| 197 | + -DSD_WITH_QT=ON \ |
| 198 | + -DSD_WITH_OCC=ON |
| 199 | + |
| 200 | +cmake --build build --parallel |
| 201 | +cmake --install build |
| 202 | +``` |
| 203 | + |
| 204 | +Run the app (paths may differ): |
| 205 | + |
| 206 | +```bash |
| 207 | +# Windows |
| 208 | +install/bin/SolidDesigner.exe |
| 209 | + |
| 210 | +# Linux |
| 211 | +./install/bin/SolidDesigner |
| 212 | +``` |
| 213 | + |
| 214 | +--- |
| 215 | + |
| 216 | +## Dependencies |
| 217 | + |
| 218 | +This project is **modular**: most third‑party libraries are optional or pluggable. |
| 219 | + |
| 220 | +- **Geometry**: OpenCascade (default); abstractions allow future kernels |
| 221 | +- **Math**: Eigen |
| 222 | +- **I/O**: fmt |
| 223 | +- **Logging**: spdlog (backend), unified diagnostics facade in “Alice” |
| 224 | +- **UI**: Qt 6 (widgets/QtQuick — TBD) |
| 225 | +- **Meshing**: OCCT mesher, Gmsh, TetGen (adapters planned) |
| 226 | +- **Solvers**: in‑house FEA/CFD; adapters to external solvers (future) |
| 227 | +- **Visualization**: OCCT/VTK (planned) |
| 228 | + |
| 229 | +Use `-DSD_WITH_<LIB>=ON/OFF` CMake options (see `CMakeLists.txt`) to toggle modules. |
| 230 | + |
| 231 | +--- |
| 232 | + |
| 233 | +## Getting Started |
| 234 | + |
| 235 | +1. **Create a project** and set default units/tolerances. |
| 236 | +2. **Sketch** on a plane; use constraints/dimensions. |
| 237 | +3. Create features: **Extrude**, **Revolve**, **Fillet**, **Shell**, **Pattern**… |
| 238 | +4. **Assemble** parts; add mates/constraints. |
| 239 | +5. **Mesh** the model (global + local controls). |
| 240 | +6. Define **materials** and **boundary conditions**. |
| 241 | +7. Run **FEA/CFD**; inspect stress/strain, modes, flow fields. |
| 242 | +8. **Drive parameters** from results (e.g., reduce thickness until stress ≤ target). |
| 243 | +9. Save as a **project** and export **STEP/IGES** or mesh files. |
| 244 | + |
| 245 | +--- |
| 246 | + |
| 247 | +## Plugin & Scripting |
| 248 | + |
| 249 | +- **Plugin ABI**: clean C++ interfaces for geometry ops, meshing, solvers, importers/exporters, and UI add‑ins. |
| 250 | +- **Isolation**: stable ownership model and cross‑DLL safety (foundation provides Owning/Weak/Guard pointer utilities). |
| 251 | +- **Scripting (planned)**: Python API to automate modeling, set up studies, post‑process results, and orchestrate design loops. |
| 252 | +- **AI hooks (planned)**: register custom design advisors and ML models for intent prediction and optimization. |
| 253 | + |
| 254 | +--- |
| 255 | + |
| 256 | +## Data & File Formats |
| 257 | + |
| 258 | +- **Native Project**: a structured, versioned project format (TBD; JSON + binary payloads or similar). |
| 259 | +- **CAD Interop**: STEP/IGES import/export (others as available through adapters). |
| 260 | +- **Mesh/Results**: standard mesh/results formats for external solvers/post (VTK, MED, etc., planned). |
| 261 | +- **Units**: consistent unit system with explicit metadata; dimensioned parameters in expressions. |
| 262 | + |
| 263 | +--- |
27 | 264 |
|
| 265 | +## Diagnostics, Logging & QA |
28 | 266 |
|
29 | | -### Wiki |
| 267 | +- Unified **DiagnosticsEngine** with severity levels, source locations, and pluggable sinks (console, file, UI panel). |
| 268 | +- Optional **spdlog** backend for fast, thread‑aware logging. |
| 269 | +- **Assertions** and **defensive checks** across DLL boundaries. |
| 270 | +- **Testing** via CTest; fixtures for geometry, meshing, solver correctness; reproducible cases attached to JIRA. |
30 | 271 |
|
31 | | -1. [hananiahhsu/SolidDesignerWiki: Public wiki for the product of SolidDesigner](https://github.com/hananiahhsu/SolidDesignerWiki) |
| 272 | +--- |
32 | 273 |
|
33 | | - This wiki only shows limited design of the products. |
| 274 | +## Contributing |
34 | 275 |
|
35 | | - 2. [概览 - hananiah hsu - Confluence](https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963) |
| 276 | +Contributions are welcome! |
36 | 277 |
|
37 | | - Most design docs sleep here which needs access authority. |
| 278 | +- Review open issues on **JIRA** and the **GitHub Wiki** for context. |
| 279 | +- Discuss larger proposals in issues or on the wiki before opening a PR. |
| 280 | +- Follow the project’s **code style** (clang‑format file incoming) and include **unit tests**. |
| 281 | +- Keep commits small and well‑described; link to JIRA tickets where applicable. |
38 | 282 |
|
39 | | -### General Introduction of SolidDesigner |
| 283 | +> Please see `CONTRIBUTING.md` (to be added) and `CODE_OF_CONDUCT.md` (to be added). |
40 | 284 |
|
41 | | -#### 1. |
| 285 | +--- |
42 | 286 |
|
| 287 | +## License |
43 | 288 |
|
| 289 | +Open‑source license (GNU General Public License v3.0). |
| 290 | +The final license will be published in `LICENSE`. Until then, assume **source is for evaluation and development only**. |
44 | 291 |
|
45 | | -#### 2. |
| 292 | +--- |
46 | 293 |
|
| 294 | +## Acknowledgments |
47 | 295 |
|
| 296 | +This project stands on the shoulders of giants: OpenCascade, Eigen, fmt, spdlog, Qt, and the broader open‑source community. |
| 297 | +Special thanks to contributors and researchers in CAD/CAE/CFD/optimization. |
48 | 298 |
|
49 | | -#### 3. |
| 299 | +--- |
50 | 300 |
|
| 301 | +## FAQ |
51 | 302 |
|
| 303 | +**How close is this to production tools like Creo?** |
| 304 | +The aspiration is parity for core workflows with a modern, open architecture. Today the project is pre‑alpha; many features are WIP. |
52 | 305 |
|
53 | | -#### 4. |
| 306 | +**Is there a scripting API?** |
| 307 | +A Python API is planned. Early internal scaffolding exists; public API is forthcoming. |
54 | 308 |
|
| 309 | +**Which solver stack is used?** |
| 310 | +Early in‑house solvers are being prototyped. Adapters to external solvers (e.g., meshers/post) are planned. |
55 | 311 |
|
| 312 | +**Will AI features require internet access?** |
| 313 | +No. The intent is to support **offline** inference with local models, with optional cloud integrations. |
56 | 314 |
|
57 | | -#### 5. |
| 315 | +**Where can I track progress?** |
| 316 | +JIRA (roadmap/backlog) and the public GitHub wiki. Detailed design docs are in Confluence (access required). |
0 commit comments