Skip to content

Commit 28f54d7

Browse files
committed
【AL-78】Update the read me
1 parent fb4b6eb commit 28f54d7

1 file changed

Lines changed: 286 additions & 27 deletions

File tree

README.md

Lines changed: 286 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,316 @@
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**
265

366
```
467
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
1982
```
2083

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)
21111

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)
22116

23-
### The Address of JIRA
117+
### CAE (current/planned)
24118

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**:
25143
https://hananiah.atlassian.net/jira/software/c/projects/AL/boards/3
26144

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+
---
27264

265+
## Diagnostics, Logging & QA
28266

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.
30271

31-
1. [hananiahhsu/SolidDesignerWiki: Public wiki for the product of SolidDesigner](https://github.com/hananiahhsu/SolidDesignerWiki)
272+
---
32273

33-
​ This wiki only shows limited design of the products.
274+
## Contributing
34275

35-
2. [概览 - hananiah hsu - Confluence](https://hananiah.atlassian.net/wiki/spaces/~5e2301040f45160ca25e42e3/overview?homepageId=65963)
276+
Contributions are welcome!
36277

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.
38282

39-
### General Introduction of SolidDesigner
283+
> Please see `CONTRIBUTING.md` (to be added) and `CODE_OF_CONDUCT.md` (to be added).
40284
41-
#### 1.
285+
---
42286

287+
## License
43288

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**.
44291

45-
#### 2.
292+
---
46293

294+
## Acknowledgments
47295

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.
48298

49-
#### 3.
299+
---
50300

301+
## FAQ
51302

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.
52305

53-
#### 4.
306+
**Is there a scripting API?**
307+
A Python API is planned. Early internal scaffolding exists; public API is forthcoming.
54308

309+
**Which solver stack is used?**
310+
Early in‑house solvers are being prototyped. Adapters to external solvers (e.g., meshers/post) are planned.
55311

312+
**Will AI features require internet access?**
313+
No. The intent is to support **offline** inference with local models, with optional cloud integrations.
56314

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

Comments
 (0)