Skip to content

Commit 6ee07bd

Browse files
committed
plan.md
1 parent 1972d22 commit 6ee07bd

1 file changed

Lines changed: 341 additions & 0 deletions

File tree

plan.MD

Lines changed: 341 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,341 @@
1+
# CSG Builder - Improvement Plan
2+
3+
Analysis of potential improvements and missing features for the CSG Builder project.
4+
5+
## 🔴 HIGH PRIORITY (Production Blockers)
6+
7+
### 1. SHELL Operation - Critical for 3D Printing
8+
Currently missing the ability to hollow out solids with wall thickness. This is essential for:
9+
- Reducing print time and material costs
10+
- Creating functional containers, enclosures, boxes
11+
- Manufacturing realistic parts
12+
13+
### 2. Mesh Validation
14+
No way to verify if geometry is:
15+
- Manifold (watertight)
16+
- Printable
17+
- Free of self-intersections
18+
- Has proper normals
19+
20+
Suggest adding: `isValid()`, `getSelfIntersections()`, `repair()`
21+
22+
### 3. Error Handling Architecture
23+
Inconsistent error handling across primitives. Need:
24+
- Custom error classes (`CSGError`, `ValidationError`, `GeometryError`)
25+
- Better validation in `scale()`, `rotate()` (currently allows NaN, Infinity, zero)
26+
- UI error boundaries
27+
28+
### 4. Additional Export Formats
29+
Only supports binary STL. Industry needs:
30+
- **3MF** (modern standard with color support)
31+
- **OBJ** (with materials)
32+
- **GLTF/GLB** (web standard)
33+
- **ASCII STL** (for debugging)
34+
35+
### 5. Cache Memory Management
36+
Current `cacheFunction.ts` has no eviction strategy - **memory leak risk**. Needs:
37+
- LRU cache with size limits
38+
- `clearCache()` method
39+
- Cache statistics
40+
41+
## 🟡 MEDIUM PRIORITY (Quality of Life)
42+
43+
### 6. Missing Primitives
44+
- **Torus** (rings, washers, O-rings)
45+
- **Rounded Box** (filleted edges - very common)
46+
- **Capsule** (cylinder with hemispherical ends)
47+
- **Text Extrusion** (3D text via Three.js TextGeometry)
48+
49+
### 7. Missing CSG Operations
50+
- **MIRROR** - Reflect across planes
51+
- **CHAMFER/FILLET** - Edge rounding (critical for manufacturing)
52+
- **Circular Array** - Polar patterns (currently only XYZ grids)
53+
- **OFFSET** - Grow/shrink with clearances
54+
55+
### 8. Import Capabilities (Currently None)
56+
- Import STL/OBJ as components
57+
- Import SVG paths for profile extrusion
58+
- Boolean operations with imported meshes
59+
60+
### 9. Enhanced UI Features
61+
- Parameter sliders for live adjustment
62+
- Measurement tools (distance, angle)
63+
- Section views (cut-away visualization)
64+
- Multiple viewports (top/front/side/perspective)
65+
- Layer-by-layer preview for printing
66+
67+
### 10. Performance Optimization
68+
- Web workers for CSG operations (prevent UI blocking)
69+
- Progress callbacks for long operations
70+
- Geometry simplification/decimation options
71+
- Cancellation support
72+
73+
## 🟢 LOW PRIORITY (Nice to Have)
74+
75+
### 11. Advanced Manufacturing Features
76+
- Thread generation (ISO metric, ACME)
77+
- Gear generation (spur, helical, bevel)
78+
- Knurling patterns
79+
- Draft angles for injection molding
80+
81+
### 12. Parametric Constraints
82+
- Constraint system (edges parallel, distances fixed)
83+
- Dimension-driven design
84+
- Design history with undo/redo
85+
86+
### 13. Generative Design
87+
- Pattern generators (Voronoi, lattice, cellular)
88+
- Noise-based displacement
89+
- Fractal geometries
90+
91+
### 14. Developer Experience
92+
- Visual regression testing
93+
- Performance benchmarks
94+
- Auto-generated API documentation
95+
- VS Code extension for preview
96+
97+
## 📋 Architecture Improvements
98+
99+
### 15. Code Organization
100+
`Solid.ts` is 1140 lines - should split into:
101+
- `primitives.ts` - Shape factories
102+
- `transforms.ts` - Transformations
103+
- `csg-operations.ts` - Boolean ops
104+
- `grids.ts` - Arrays
105+
- `utilities.ts` - Bounds, validation
106+
107+
### 16. Missing Abstractions
108+
- Plugin system for custom primitives
109+
- `IPrimitive`, `ICSGOperation`, `IExporter` interfaces
110+
- Event system for operation lifecycle
111+
112+
---
113+
114+
## 💡 Quick Wins
115+
116+
If you want to start with the **easiest high-impact improvements**:
117+
118+
1. **Add Torus primitive** (~50 lines, huge usability gain)
119+
2. **Add MIRROR operation** (~30 lines, very common need)
120+
3. **Add cache size limit** (~20 lines, prevents memory leaks)
121+
4. **Add `isValid()` geometry check** (~40 lines, critical for 3D printing)
122+
5. **Add rounded box primitive** (~60 lines, most requested shape)
123+
124+
## Detailed Analysis Summary
125+
126+
### Core Functionality Gaps
127+
128+
**Missing Primitives:**
129+
- Torus (common for rings, washers, O-rings)
130+
- Capsule/Pill (cylinder with hemispherical ends)
131+
- Rounded Box (cube with filleted edges)
132+
- Wedge (triangular prism - currently requires custom profile)
133+
- Pyramid (square-based)
134+
- Ellipsoid (stretched sphere)
135+
- Text/Font Extrusion (3D text generation)
136+
137+
**Missing CSG Operations:**
138+
- SHELL - Hollow out with wall thickness
139+
- OFFSET - Grow/shrink uniformly
140+
- CHAMFER/FILLET - Edge rounding
141+
- MIRROR - Reflect across planes
142+
- Circular/polar arrays (currently only XYZ grids)
143+
144+
**Missing Transformation Features:**
145+
- Matrix transformations (direct 4x4 matrix)
146+
- Pivot point control (rotate/scale around custom points)
147+
- Snap to grid
148+
- Mirroring/reflection helpers
149+
150+
### API Improvements
151+
152+
**Validation Issues:**
153+
- `scale()` allows negative, zero, NaN, Infinity
154+
- No validation in many transformation methods
155+
- Missing input sanitization
156+
157+
**Missing Convenience Methods:**
158+
159+
Alignment & Positioning:
160+
- `alignTo(otherSolid, direction)` - Align relative to another solid
161+
- `distributeEvenly(solids[], axis, spacing)` - Space solids evenly
162+
- `centerBetween(solid1, solid2)` - Position between two solids
163+
- `snapToGrid(gridSize)` - Quantize position
164+
165+
Measurement & Inspection:
166+
- `getVolume()` - Calculate solid volume
167+
- `getSurfaceArea()` - Calculate surface area
168+
- `getEdges()` - Extract edge information
169+
- `isValid()` - Check if manifold/printable
170+
- `hasIntersections(other)` - Collision detection
171+
172+
Material/Appearance:
173+
- `setMaterial(properties)` - Extended material properties
174+
- `setOpacity(value)` - Transparency control
175+
- `setTexture(image)` - Texture mapping
176+
177+
### Developer Experience
178+
179+
**Missing Testing:**
180+
- Integration tests for complex CSG operations
181+
- Visual regression testing
182+
- Performance benchmarks
183+
- Test coverage reporting
184+
185+
**Documentation Gaps:**
186+
- Auto-generated API reference
187+
- Video tutorials
188+
- Cookbook of common patterns (gears, threads, hinges)
189+
- Performance tuning guide
190+
- Troubleshooting guide
191+
- Migration guides and changelog
192+
193+
**Developer Tooling:**
194+
- VS Code extension for preview
195+
- Debugger for CSG operations
196+
- Profiler for slow operations
197+
- Linter rules for best practices
198+
- Code snippets/templates
199+
- Hot reload preserving camera position
200+
201+
### Performance
202+
203+
**Cache Issues (cacheFunction.ts):**
204+
- JSON.stringify is expensive
205+
- No cache eviction (memory leak risk)
206+
- No size limits
207+
- No metrics (hit rate, size)
208+
209+
**Recommendations:**
210+
- LRU cache eviction policy
211+
- Cache statistics
212+
- Faster hashing (xxhash, murmurhash)
213+
- `clearCache()` and `getCacheStats()`
214+
- Memory monitoring
215+
216+
**CSG Performance:**
217+
- No progressive rendering
218+
- No web worker support
219+
- No geometry simplification
220+
- No LOD (Level of Detail) system
221+
222+
### Production Readiness
223+
224+
**Error Handling:**
225+
- Inconsistent validation
226+
- No error recovery
227+
- No custom error types
228+
- No warning system
229+
- Generic error messages
230+
231+
**Export Formats:**
232+
Currently: Binary STL only
233+
234+
Missing:
235+
- ASCII STL (debugging)
236+
- OBJ (with colors/materials)
237+
- GLTF/GLB (industry standard)
238+
- 3MF (modern 3D printing with color)
239+
- STEP/IGES (CAD interoperability)
240+
- SVG slices (2D cross-sections)
241+
242+
**Import Capabilities:**
243+
Missing entirely:
244+
- Import STL/OBJ files as components
245+
- Import 2D SVG paths for extrusion
246+
- Import heightmaps for terrain
247+
- Boolean operations with imported meshes
248+
249+
### Advanced Features
250+
251+
**Parametric Design:**
252+
Partially supported via parameters, but missing:
253+
- Constraints system
254+
- Dimension-driven design
255+
- Equation-based geometry
256+
- Design variables with ranges/sliders
257+
- Design history/undo-redo
258+
259+
**Generative Design:**
260+
- Pattern generators (Voronoi, cellular, lattice)
261+
- Fractal geometries
262+
- L-systems for organic structures
263+
- Noise-based displacement
264+
- Procedural textures
265+
266+
**Advanced Manufacturing:**
267+
- Thread generation (ISO metric, ACME, etc.)
268+
- Gear generation (spur, helical, bevel)
269+
- Spring generation with proper pitch
270+
- Knurling patterns (diamond, straight)
271+
- Draft angles for injection molding
272+
- Support structure generation for 3D printing
273+
274+
**UI Enhancements:**
275+
Current UI is minimal - opportunities:
276+
- Parameter sliders for live adjustment
277+
- Layer-by-layer preview (slicing)
278+
- Measurement tools
279+
- Section views (cut-away)
280+
- Exploded views
281+
- Assembly constraints
282+
- Animation timeline
283+
- Multiple viewport layouts
284+
- Orthographic vs perspective toggle
285+
- Grid overlay with snapping
286+
287+
**Collaboration Features:**
288+
- Share designs via URL (serialize component)
289+
- Export TypeScript from UI-built models
290+
- Version control integration
291+
- Multi-user editing (real-time)
292+
- Component library marketplace
293+
- Cloud rendering for complex models
294+
295+
### Technical Debt
296+
297+
**Code Quality:**
298+
- Solid.ts is 1140 lines (too large)
299+
- Mixing concerns (geometry, transforms, CSG, utilities)
300+
- No interfaces/abstractions for extensibility
301+
302+
**Missing Abstractions:**
303+
- No plugin system
304+
- No middleware pattern
305+
- No event system
306+
- No dependency injection
307+
308+
**Type Safety:**
309+
- Component store uses `any` in places
310+
- No strict null checks in some areas
311+
- Missing generic constraints
312+
313+
---
314+
315+
## Implementation Priority
316+
317+
### Phase 1: Critical Production Needs
318+
1. SHELL operation
319+
2. Mesh validation (`isValid()`)
320+
3. Error handling architecture
321+
4. 3MF/OBJ export
322+
5. Cache eviction strategy
323+
324+
### Phase 2: Quality of Life
325+
1. Torus, rounded box, capsule primitives
326+
2. MIRROR, CHAMFER operations
327+
3. Import capabilities
328+
4. UI parameter controls
329+
5. Web worker support
330+
331+
### Phase 3: Advanced Features
332+
1. Generative patterns
333+
2. Thread/gear generators
334+
3. Animation timeline
335+
4. Collaboration features
336+
5. VS Code extension
337+
338+
---
339+
340+
*Analysis completed: 2025-11-22*
341+
*Based on codebase analysis of CSG Builder v1.x*

0 commit comments

Comments
 (0)