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