cyclecad 0.1.9 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_API_IMPLEMENTATION_SUMMARY.md +399 -0
- package/AGENT_API_MANIFEST.md +343 -0
- package/AGENT_API_QUICKSTART.md +316 -0
- package/AGENT_API_WIRING.md +495 -0
- package/CLAUDE.md +120 -8
- package/DELIVERABLES.txt +471 -0
- package/app/agent-demo.html +1990 -1294
- package/app/agent-test.html +486 -0
- package/app/index.html +236 -5
- package/app/js/agent-api.js +953 -98
- package/app/js/viewer-mode.js +899 -0
- package/architecture.html +372 -0
- package/docs/EXPLODEVIEW-FEATURE-MAPPING.md +602 -0
- package/docs/README-VIEWER-MODE-MERGE.md +364 -0
- package/docs/VIEWER-MODE-IMPLEMENTATION-GUIDE.md +412 -0
- package/docs/explodeview-merge-plan.md +476 -0
- package/docs/opencascade-integration.md +1102 -0
- package/linkedin-post.md +24 -0
- package/package.json +1 -1
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
# ExplodeView → cycleCAD Feature Mapping
|
|
2
|
+
|
|
3
|
+
## Executive Summary
|
|
4
|
+
|
|
5
|
+
ExplodeView contains 57 features in a 19,000-line monolith. This document maps each feature to:
|
|
6
|
+
1. Whether it's worth porting (priority)
|
|
7
|
+
2. Which cycleCAD module it belongs in
|
|
8
|
+
3. Estimated lines of code and effort
|
|
9
|
+
4. Dependencies and blockers
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Feature Priority Matrix
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
╔═══════════════════════════════════════════════════════╗
|
|
17
|
+
║ EFFORT (estimate) ║
|
|
18
|
+
║ Low Medium High Very High ║
|
|
19
|
+
║ (<100) (100-300) (300-600) (600+) ║
|
|
20
|
+
╔═══╬═══════════════════════════════════════════════════════╣
|
|
21
|
+
║ P │ Quick Medium Big Major ║
|
|
22
|
+
║ 0 │ Wins Value Value Systems ║
|
|
23
|
+
║ ├─────────────────────────────────────────────────────┤
|
|
24
|
+
║ │ Tree Explode Section AI Identify ║
|
|
25
|
+
║ │ Animation Cut Assembly Res ║
|
|
26
|
+
║ P │ Shortcuts Selection BOM Inventor Parse ║
|
|
27
|
+
║ 1 │ Context Measure Collab View ║
|
|
28
|
+
║ │ Menu 3D Print ║
|
|
29
|
+
╠═══╣─────────────────────────────────────────────────────┤
|
|
30
|
+
║ P │ Part Annot Part Info Smart Filters ║
|
|
31
|
+
║ 2 │ Compare Pins Card Maintenance ║
|
|
32
|
+
║ │ Markup 3D Export Timeline ║
|
|
33
|
+
║ │ Wireframe Grid Screenshot Voice Commands ║
|
|
34
|
+
║ P │ Hero Transpare Weight Technical Drawings ║
|
|
35
|
+
║ 3 │ Shots ncy Estimator Tech Reports ║
|
|
36
|
+
║ │ QR Code Fit All Int Check DFM Analysis ║
|
|
37
|
+
╚═══╩═════════════════════════════════════════════════════╝
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Phase 0: Foundation (In Progress)
|
|
43
|
+
|
|
44
|
+
### ✅ viewer-mode.js (BASE SYSTEM)
|
|
45
|
+
- **ExplodeView:** N/A (new architecture)
|
|
46
|
+
- **cycleCAD:** `/app/js/viewer-mode.js`
|
|
47
|
+
- **Lines of Code:** 600
|
|
48
|
+
- **Effort:** Already done (PoC)
|
|
49
|
+
- **Description:** Mode switching, state management, shared scene
|
|
50
|
+
- **Dependencies:** viewport.js
|
|
51
|
+
- **Blockers:** None
|
|
52
|
+
- **Status:** COMPLETE
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Phase 1: Critical Features (Weeks 1-2)
|
|
57
|
+
|
|
58
|
+
### 1. ✅ Assembly Tree UI
|
|
59
|
+
- **ExplodeView:** `initAssemblyTree()` (lines 11270-13159, 1,890 lines)
|
|
60
|
+
- **cycleCAD:** `viewer-assembly-tree.js`
|
|
61
|
+
- **LoC to Port:** 800
|
|
62
|
+
- **Effort:** 8 hours
|
|
63
|
+
- **Description:** Tree view of parts, collapsible assemblies, click to select, color-code by assembly
|
|
64
|
+
- **Dependencies:** viewer-mode.js, viewport.js
|
|
65
|
+
- **Blockers:** None
|
|
66
|
+
- **Priority:** P0 (user needs structure)
|
|
67
|
+
- **Status:** PLANNED
|
|
68
|
+
|
|
69
|
+
### 2. ✅ Explode/Collapse Animation
|
|
70
|
+
- **ExplodeView:** `initClickExplode()` (lines 8173-8477, 304 lines) + animation logic
|
|
71
|
+
- **cycleCAD:** `viewer-explode.js`
|
|
72
|
+
- **LoC to Port:** 600
|
|
73
|
+
- **Effort:** 8 hours
|
|
74
|
+
- **Description:** Interactive slider to explode/collapse parts, smooth animation, direction from center
|
|
75
|
+
- **Dependencies:** viewer-mode.js
|
|
76
|
+
- **Blockers:** None
|
|
77
|
+
- **Priority:** P0 (core differentiator for cycleWASH)
|
|
78
|
+
- **Status:** PLANNED
|
|
79
|
+
|
|
80
|
+
### 3. ✅ Section Cut / Clipping Plane
|
|
81
|
+
- **ExplodeView:** `initSectionCut()` (lines 10268-10445, 177 lines) + Three.js clipping
|
|
82
|
+
- **cycleCAD:** `viewer-section-cut.js`
|
|
83
|
+
- **LoC to Port:** 400
|
|
84
|
+
- **Effort:** 6 hours
|
|
85
|
+
- **Description:** X/Y/Z clipping planes, flip direction, position slider, per-material
|
|
86
|
+
- **Dependencies:** viewer-mode.js, renderer.localClippingEnabled
|
|
87
|
+
- **Blockers:** None
|
|
88
|
+
- **Priority:** P1 (inspection use case)
|
|
89
|
+
- **Status:** PLANNED
|
|
90
|
+
|
|
91
|
+
### 4. ✅ Part Selection & Context Menu
|
|
92
|
+
- **ExplodeView:** `initPartContextMenu()` (lines 8477-9184, 707 lines)
|
|
93
|
+
- **cycleCAD:** `viewer-context-menu.js`
|
|
94
|
+
- **LoC to Port:** 300
|
|
95
|
+
- **Effort:** 4 hours
|
|
96
|
+
- **Description:** Right-click menu (select, hide, isolate, move, export), hover highlight
|
|
97
|
+
- **Dependencies:** viewer-mode.js, raycasting
|
|
98
|
+
- **Blockers:** None
|
|
99
|
+
- **Priority:** P1 (user interaction)
|
|
100
|
+
- **Status:** PLANNED (partial in viewer-mode.js)
|
|
101
|
+
|
|
102
|
+
### 5. ✅ BOM Export
|
|
103
|
+
- **ExplodeView:** `initBOMExport()` + `initBOM()` (lines 9444-9672, 228 lines)
|
|
104
|
+
- **cycleCAD:** `viewer-bom.js`
|
|
105
|
+
- **LoC to Port:** 400
|
|
106
|
+
- **Effort:** 5 hours
|
|
107
|
+
- **Description:** Generate BOM with part names, dimensions, volume, material; export to CSV
|
|
108
|
+
- **Dependencies:** viewer-mode.js
|
|
109
|
+
- **Blockers:** None
|
|
110
|
+
- **Priority:** P1 (manufacturing workflow)
|
|
111
|
+
- **Status:** PLANNED (partial in viewer-mode.js)
|
|
112
|
+
|
|
113
|
+
### 6. ✅ Part Info Card & 3D Export
|
|
114
|
+
- **ExplodeView:** `initPartInfoCard()` + `showPartInfoCard()` IIFE (lines 9928-10268, 340 lines) + `meshToSTL()` etc
|
|
115
|
+
- **cycleCAD:** `viewer-part-info.js`
|
|
116
|
+
- **LoC to Port:** 500
|
|
117
|
+
- **Effort:** 6 hours
|
|
118
|
+
- **Description:** Float card with part dims, bbox, volume, material, weight; export to STL/OBJ/glTF/PLY
|
|
119
|
+
- **Dependencies:** viewer-mode.js, Three.js STL/OBJ exporters
|
|
120
|
+
- **Blockers:** Need STL exporter library
|
|
121
|
+
- **Priority:** P1 (detail view)
|
|
122
|
+
- **Status:** PLANNED
|
|
123
|
+
|
|
124
|
+
### 7. ✅ AI Part Identifier
|
|
125
|
+
- **ExplodeView:** `initAIVisionIdentifier()` (lines 17460+, 800+ lines) + Gemini Vision API
|
|
126
|
+
- **cycleCAD:** `viewer-ai-identify.js`
|
|
127
|
+
- **LoC to Port:** 700
|
|
128
|
+
- **Effort:** 7 hours
|
|
129
|
+
- **Description:** Render isolated part, send to Gemini Vision, auto-search McMaster-Carr, show alternatives
|
|
130
|
+
- **Dependencies:** viewer-mode.js, Gemini API, localStorage for keys
|
|
131
|
+
- **Blockers:** None (already in cycleCAD)
|
|
132
|
+
- **Priority:** P1 (competitive advantage)
|
|
133
|
+
- **Status:** PLANNED
|
|
134
|
+
|
|
135
|
+
### 8. ✅ Keyboard Shortcuts
|
|
136
|
+
- **ExplodeView:** `initKeyboardShortcuts()` (lines 14226+, 160 lines)
|
|
137
|
+
- **cycleCAD:** `viewer-shortcuts.js` (or integrate into existing shortcuts.js)
|
|
138
|
+
- **LoC to Port:** 100
|
|
139
|
+
- **Effort:** 2 hours
|
|
140
|
+
- **Description:** T=toggle explode, E=export, R=reset, S=section cut, etc
|
|
141
|
+
- **Dependencies:** viewer-mode.js
|
|
142
|
+
- **Blockers:** None
|
|
143
|
+
- **Priority:** P2 (convenience)
|
|
144
|
+
- **Status:** PLANNED
|
|
145
|
+
|
|
146
|
+
**Phase 1 Subtotal:** 8 modules, 4,050 LoC, 40 hours, 2 weeks
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## Phase 2: Enhancement Features (Week 3)
|
|
151
|
+
|
|
152
|
+
### 9. Assembly Tree Animations
|
|
153
|
+
- **ExplodeView:** `initAnimationSequence()` (lines 2834-4672, 1,838 lines)
|
|
154
|
+
- **cycleCAD:** Extend `viewer-explode.js`
|
|
155
|
+
- **LoC to Port:** 400
|
|
156
|
+
- **Effort:** 6 hours
|
|
157
|
+
- **Description:** Record/playback explode sequences, timeline UI, auto-save
|
|
158
|
+
- **Dependencies:** viewer-explode.js
|
|
159
|
+
- **Blockers:** None
|
|
160
|
+
- **Priority:** P2 (marketing/docs)
|
|
161
|
+
- **Status:** PLANNED
|
|
162
|
+
|
|
163
|
+
### 10. Measurements
|
|
164
|
+
- **ExplodeView:** Measurement tool (lines 3207+, 150 lines)
|
|
165
|
+
- **cycleCAD:** Reuse existing `constraint-solver.js` measurement logic
|
|
166
|
+
- **LoC to Port:** 200
|
|
167
|
+
- **Effort:** 3 hours
|
|
168
|
+
- **Description:** 2-point distance, 3-point angle, dimension display, snap to parts
|
|
169
|
+
- **Dependencies:** raycasting, viewer-mode.js
|
|
170
|
+
- **Blockers:** None
|
|
171
|
+
- **Priority:** P2 (service technician workflow)
|
|
172
|
+
- **Status:** PLANNED
|
|
173
|
+
|
|
174
|
+
### 11. Transparency/Opacity Control
|
|
175
|
+
- **ExplodeView:** `initTransparencyControl()` (lines 13980+, 95 lines)
|
|
176
|
+
- **cycleCAD:** `viewer-transparency.js`
|
|
177
|
+
- **LoC to Port:** 150
|
|
178
|
+
- **Effort:** 2 hours
|
|
179
|
+
- **Description:** Slider for per-part or all-parts opacity, reset button
|
|
180
|
+
- **Dependencies:** viewer-mode.js
|
|
181
|
+
- **Blockers:** None
|
|
182
|
+
- **Priority:** P2 (visualization)
|
|
183
|
+
- **Status:** PLANNED
|
|
184
|
+
|
|
185
|
+
### 12. Grid & Floor Plane
|
|
186
|
+
- **ExplodeView:** `initGridFloor()` (lines 13860+, 70 lines)
|
|
187
|
+
- **cycleCAD:** Enhance existing `viewport.js` or `viewer-grid.js`
|
|
188
|
+
- **LoC to Port:** 100
|
|
189
|
+
- **Effort:** 2 hours
|
|
190
|
+
- **Description:** Auto-sized grid, shadow plane, toggle visibility
|
|
191
|
+
- **Dependencies:** viewport.js
|
|
192
|
+
- **Blockers:** None
|
|
193
|
+
- **Priority:** P2 (aesthetics)
|
|
194
|
+
- **Status:** PLANNED
|
|
195
|
+
|
|
196
|
+
### 13. Screenshot Export
|
|
197
|
+
- **ExplodeView:** `initScreenshotExport()` (lines 13830+, 50 lines)
|
|
198
|
+
- **cycleCAD:** `viewer-screenshot.js`
|
|
199
|
+
- **LoC to Port:** 120
|
|
200
|
+
- **Effort:** 2 hours
|
|
201
|
+
- **Description:** PNG/JPG/WebP export, transparent background, 2x resolution
|
|
202
|
+
- **Dependencies:** renderer.domElement
|
|
203
|
+
- **Blockers:** None
|
|
204
|
+
- **Priority:** P2 (sharing)
|
|
205
|
+
- **Status:** PLANNED
|
|
206
|
+
|
|
207
|
+
### 14. Part Comparison
|
|
208
|
+
- **ExplodeView:** `initPartComparison()` (lines 14823-14863, 40 lines)
|
|
209
|
+
- **cycleCAD:** `viewer-comparison.js`
|
|
210
|
+
- **LoC to Port:** 250
|
|
211
|
+
- **Effort:** 3 hours
|
|
212
|
+
- **Description:** Select 2 parts, compare dimensions, volume, size, weight
|
|
213
|
+
- **Dependencies:** viewer-mode.js
|
|
214
|
+
- **Blockers:** None
|
|
215
|
+
- **Priority:** P3 (analysis)
|
|
216
|
+
- **Status:** PLANNED
|
|
217
|
+
|
|
218
|
+
### 15. Weight Estimator
|
|
219
|
+
- **ExplodeView:** `initWeightEstimator()` (lines 14180+, 90 lines)
|
|
220
|
+
- **cycleCAD:** `viewer-weight.js`
|
|
221
|
+
- **LoC to Port:** 180
|
|
222
|
+
- **Effort:** 2 hours
|
|
223
|
+
- **Description:** Material selector (15 types), bbox-based volume estimation, density lookup
|
|
224
|
+
- **Dependencies:** viewer-mode.js
|
|
225
|
+
- **Blockers:** None
|
|
226
|
+
- **Priority:** P2 (manufacturing)
|
|
227
|
+
- **Status:** PLANNED
|
|
228
|
+
|
|
229
|
+
**Phase 2 Subtotal:** 7 modules, 1,890 LoC, 20 hours, 1 week
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Phase 3: Advanced Features (Weeks 4+)
|
|
234
|
+
|
|
235
|
+
### 16. 3D Print Slicer
|
|
236
|
+
- **ExplodeView:** `initSlicer()` (lines 10445-11267, 822 lines)
|
|
237
|
+
- **cycleCAD:** `viewer-slicer.js`
|
|
238
|
+
- **LoC to Port:** 600
|
|
239
|
+
- **Effort:** 6 hours
|
|
240
|
+
- **Description:** G-code generation, layer height, nozzle diameter, supports preview
|
|
241
|
+
- **Dependencies:** viewer-mode.js, g-code generator lib
|
|
242
|
+
- **Blockers:** May need external library
|
|
243
|
+
- **Priority:** P3 (niche use case)
|
|
244
|
+
- **Status:** PLANNED
|
|
245
|
+
|
|
246
|
+
### 17. Annotations / Pins
|
|
247
|
+
- **ExplodeView:** `initAnnotations()` (lines 3730+, 500+ lines) + `initMarkup()` (lines 15835+, 234 lines)
|
|
248
|
+
- **cycleCAD:** `viewer-annotations.js`
|
|
249
|
+
- **LoC to Port:** 400
|
|
250
|
+
- **Effort:** 5 hours
|
|
251
|
+
- **Description:** Click-to-place pins, click-to-edit, draggable, saved with model
|
|
252
|
+
- **Dependencies:** viewer-mode.js, localStorage
|
|
253
|
+
- **Blockers:** None
|
|
254
|
+
- **Priority:** P2 (collaboration)
|
|
255
|
+
- **Status:** PLANNED
|
|
256
|
+
|
|
257
|
+
### 18. Technical Drawings
|
|
258
|
+
- **ExplodeView:** `initTechDrawings()` (lines 16069+, 103 lines)
|
|
259
|
+
- **cycleCAD:** Reuse DXF export from existing dxf-export.js
|
|
260
|
+
- **LoC to Port:** 200
|
|
261
|
+
- **Effort:** 3 hours
|
|
262
|
+
- **Description:** Auto-generate 2D drawings from 3D model, front/top/side views
|
|
263
|
+
- **Dependencies:** dxf-export.js, viewport.js
|
|
264
|
+
- **Blockers:** None
|
|
265
|
+
- **Priority:** P3 (documentation)
|
|
266
|
+
- **Status:** PLANNED
|
|
267
|
+
|
|
268
|
+
### 19. QR Code per Part
|
|
269
|
+
- **ExplodeView:** `initQRCode()` (lines 9673-9788, 115 lines)
|
|
270
|
+
- **cycleCAD:** `viewer-qr.js`
|
|
271
|
+
- **LoC to Port:** 120
|
|
272
|
+
- **Effort:** 2 hours
|
|
273
|
+
- **Description:** Generate QR per part, links to #part={idx}, shareable
|
|
274
|
+
- **Dependencies:** qrcode-generator library (already used in cycleCAD)
|
|
275
|
+
- **Blockers:** None
|
|
276
|
+
- **Priority:** P3 (field service)
|
|
277
|
+
- **Status:** PLANNED
|
|
278
|
+
|
|
279
|
+
### 20. Hero Shots
|
|
280
|
+
- **ExplodeView:** `initHeroShots()` (lines 9791-9925, 134 lines)
|
|
281
|
+
- **cycleCAD:** `viewer-hero-shots.js`
|
|
282
|
+
- **LoC to Port:** 150
|
|
283
|
+
- **Effort:** 2 hours
|
|
284
|
+
- **Description:** Pre-set camera angles, save favorite views, 360° rotate
|
|
285
|
+
- **Dependencies:** viewport.js
|
|
286
|
+
- **Blockers:** None
|
|
287
|
+
- **Priority:** P2 (marketing)
|
|
288
|
+
- **Status:** PLANNED
|
|
289
|
+
|
|
290
|
+
### 21. Voice Commands
|
|
291
|
+
- **ExplodeView:** `initVoiceCommands()` (lines 15104+, 373 lines)
|
|
292
|
+
- **cycleCAD:** `viewer-voice.js`
|
|
293
|
+
- **LoC to Port:** 350
|
|
294
|
+
- **Effort:** 4 hours
|
|
295
|
+
- **Description:** Web Speech API, text-to-explode, "show part X", "section cut"
|
|
296
|
+
- **Dependencies:** viewer-mode.js, Web Speech API
|
|
297
|
+
- **Blockers:** HTTPS required for mic
|
|
298
|
+
- **Priority:** P4 (nice-to-have)
|
|
299
|
+
- **Status:** PLANNED
|
|
300
|
+
|
|
301
|
+
### 22. Smart Filters
|
|
302
|
+
- **ExplodeView:** `initSmartFilters()` (lines 15477+, 183 lines)
|
|
303
|
+
- **cycleCAD:** `viewer-smart-filters.js`
|
|
304
|
+
- **LoC to Port:** 200
|
|
305
|
+
- **Effort:** 3 hours
|
|
306
|
+
- **Description:** Show/hide by size, weight, material, color-code by property
|
|
307
|
+
- **Dependencies:** viewer-mode.js
|
|
308
|
+
- **Blockers:** None
|
|
309
|
+
- **Priority:** P3 (analytics)
|
|
310
|
+
- **Status:** PLANNED
|
|
311
|
+
|
|
312
|
+
### 23. BOM Costing
|
|
313
|
+
- **ExplodeView:** `initBOMCosting()` (lines 15660+, 93 lines)
|
|
314
|
+
- **cycleCAD:** Extend `viewer-bom.js`
|
|
315
|
+
- **LoC to Port:** 150
|
|
316
|
+
- **Effort:** 2 hours
|
|
317
|
+
- **Description:** Look up part cost from McMaster-Carr, total BOM cost
|
|
318
|
+
- **Dependencies:** viewer-ai-identify.js, McMaster API
|
|
319
|
+
- **Blockers:** API access
|
|
320
|
+
- **Priority:** P3 (manufacturing)
|
|
321
|
+
- **Status:** PLANNED
|
|
322
|
+
|
|
323
|
+
### 24. Assembly Instructions
|
|
324
|
+
- **ExplodeView:** `initAssemblyInstructions()` + `initAsmInstructions()` (lines 15753+, 18400+, 300+ lines)
|
|
325
|
+
- **cycleCAD:** `viewer-asm-instructions.js` (also mirrors rebuild-guide.js)
|
|
326
|
+
- **LoC to Port:** 350
|
|
327
|
+
- **Effort:** 4 hours
|
|
328
|
+
- **Description:** Auto-generate step-by-step disassembly guide, export to HTML/PDF
|
|
329
|
+
- **Dependencies:** viewer-mode.js, template engine
|
|
330
|
+
- **Blockers:** None
|
|
331
|
+
- **Priority:** P3 (service docs)
|
|
332
|
+
- **Status:** PLANNED
|
|
333
|
+
|
|
334
|
+
### 25. Maintenance Heatmap
|
|
335
|
+
- **ExplodeView:** `initMaintHeatmap()` (lines 18250+, 150 lines)
|
|
336
|
+
- **cycleCAD:** `viewer-maint-heatmap.js`
|
|
337
|
+
- **LoC to Port:** 200
|
|
338
|
+
- **Effort:** 3 hours
|
|
339
|
+
- **Description:** Color parts red/yellow/green by maintenance urgency, export schedule
|
|
340
|
+
- **Dependencies:** viewer-mode.js
|
|
341
|
+
- **Blockers:** None
|
|
342
|
+
- **Priority:** P3 (service)
|
|
343
|
+
- **Status:** PLANNED
|
|
344
|
+
|
|
345
|
+
### 26. Wear Timeline
|
|
346
|
+
- **ExplodeView:** `initWearTimeline()` (lines 18550+, 150 lines)
|
|
347
|
+
- **cycleCAD:** `viewer-wear-timeline.js`
|
|
348
|
+
- **LoC to Port:** 200
|
|
349
|
+
- **Effort:** 3 hours
|
|
350
|
+
- **Description:** Gantt chart, 5-year replacement schedule, part lifecycle
|
|
351
|
+
- **Dependencies:** viewer-mode.js
|
|
352
|
+
- **Blockers:** None
|
|
353
|
+
- **Priority:** P3 (maintenance planning)
|
|
354
|
+
- **Status:** PLANNED
|
|
355
|
+
|
|
356
|
+
### 27. Collaboration View
|
|
357
|
+
- **ExplodeView:** `initCollabView()` (lines 16428+, 100+ lines)
|
|
358
|
+
- **cycleCAD:** `viewer-collab.js` + use existing real-time collab system (Phase D)
|
|
359
|
+
- **LoC to Port:** 300
|
|
360
|
+
- **Effort:** 6 hours
|
|
361
|
+
- **Description:** Shared viewport, cursor tracking, comment threads, version history
|
|
362
|
+
- **Dependencies:** WebRTC, CRDT library
|
|
363
|
+
- **Blockers:** Needs Phase D infrastructure
|
|
364
|
+
- **Priority:** P4 (enterprise)
|
|
365
|
+
- **Status:** PLANNED
|
|
366
|
+
|
|
367
|
+
### 28. Interference Check
|
|
368
|
+
- **ExplodeView:** `initInterferenceCheck()` (lines 16322+, 106 lines)
|
|
369
|
+
- **cycleCAD:** `viewer-clash.js`
|
|
370
|
+
- **LoC to Port:** 300
|
|
371
|
+
- **Effort:** 5 hours
|
|
372
|
+
- **Description:** Detect clashing/overlapping parts, highlight in red, generate report
|
|
373
|
+
- **Dependencies:** viewer-mode.js, CSG library
|
|
374
|
+
- **Blockers:** Needs CSG (constructive solid geometry)
|
|
375
|
+
- **Priority:** P3 (DFM analysis)
|
|
376
|
+
- **Status:** PLANNED
|
|
377
|
+
|
|
378
|
+
### 29. Standards Identifier
|
|
379
|
+
- **ExplodeView:** `initStandardsIdentifier()` (lines 13812+, 307 lines)
|
|
380
|
+
- **cycleCAD:** `viewer-standards.js` + link to build-in parts library (future)
|
|
381
|
+
- **LoC to Port:** 250
|
|
382
|
+
- **Effort:** 3 hours
|
|
383
|
+
- **Description:** Identify DIN/ISO standard parts, link to supplier, auto-replace with catalog
|
|
384
|
+
- **Dependencies:** viewer-mode.js, parts database
|
|
385
|
+
- **Blockers:** Parts database not yet built
|
|
386
|
+
- **Priority:** P3 (manufacturing)
|
|
387
|
+
- **Status:** PLANNED
|
|
388
|
+
|
|
389
|
+
### 30. Blueprint Theme
|
|
390
|
+
- **ExplodeView:** `initBlueprintTheme()` (lines 16418+, 60 lines)
|
|
391
|
+
- **cycleCAD:** CSS module or theme system
|
|
392
|
+
- **LoC to Port:** 80
|
|
393
|
+
- **Effort:** 1 hour
|
|
394
|
+
- **Description:** White background + blue wireframe toggle
|
|
395
|
+
- **Dependencies:** CSS variables
|
|
396
|
+
- **Blockers:** None
|
|
397
|
+
- **Priority:** P4 (aesthetics)
|
|
398
|
+
- **Status:** PLANNED
|
|
399
|
+
|
|
400
|
+
### 31. AI Chat / Chatbot
|
|
401
|
+
- **ExplodeView:** `initModelChatbot()` (lines 16492+, 600+ lines)
|
|
402
|
+
- **cycleCAD:** Reuse existing `ai-chat.js` + enhance for viewer context
|
|
403
|
+
- **LoC to Port:** 300
|
|
404
|
+
- **Effort:** 3 hours
|
|
405
|
+
- **Description:** Ask questions about model, get smart answers, part recommendations
|
|
406
|
+
- **Dependencies:** Gemini Flash API, ai-chat.js
|
|
407
|
+
- **Blockers:** None
|
|
408
|
+
- **Priority:** P2 (user experience)
|
|
409
|
+
- **Status:** PLANNED (already in cycleCAD)
|
|
410
|
+
|
|
411
|
+
### 32. Help System
|
|
412
|
+
- **ExplodeView:** `initHelpSystem()` (lines 17049+, 600+ lines)
|
|
413
|
+
- **cycleCAD:** `viewer-help.js` + enhance existing help
|
|
414
|
+
- **LoC to Port:** 400
|
|
415
|
+
- **Effort:** 3 hours
|
|
416
|
+
- **Description:** 43 features, searchable help, categorized display, tooltips
|
|
417
|
+
- **Dependencies:** viewer-mode.js
|
|
418
|
+
- **Blockers:** None
|
|
419
|
+
- **Priority:** P2 (discoverability)
|
|
420
|
+
- **Status:** PLANNED
|
|
421
|
+
|
|
422
|
+
### 33. AI Render / Gallery
|
|
423
|
+
- **ExplodeView:** `initAIRender()` (lines 4672+, 1,625 lines)
|
|
424
|
+
- **cycleCAD:** `viewer-ai-render.js`
|
|
425
|
+
- **LoC to Port:** 800
|
|
426
|
+
- **Effort:** 8 hours
|
|
427
|
+
- **Description:** Generate realistic renders via Stable Diffusion/Midjourney, material detection, style presets
|
|
428
|
+
- **Dependencies:** Viewer context, API keys, image processing
|
|
429
|
+
- **Blockers:** External API calls (not free)
|
|
430
|
+
- **Priority:** P3 (showcase)
|
|
431
|
+
- **Status:** PLANNED
|
|
432
|
+
|
|
433
|
+
### 34. Model Library / Import
|
|
434
|
+
- **ExplodeView:** `initModelImport()` (lines 947+, 642 lines)
|
|
435
|
+
- **cycleCAD:** Extend `viewer-loader.js`
|
|
436
|
+
- **LoC to Port:** 300
|
|
437
|
+
- **Effort:** 4 hours
|
|
438
|
+
- **Description:** Browse library, import multiple models, model manager
|
|
439
|
+
- **Dependencies:** viewer-loader.js, localStorage
|
|
440
|
+
- **Blockers:** None
|
|
441
|
+
- **Priority:** P3 (workflow)
|
|
442
|
+
- **Status:** PLANNED
|
|
443
|
+
|
|
444
|
+
### 35. AR Scanner
|
|
445
|
+
- **ExplodeView:** `initARMode()` (lines 6297+, 241 lines) + `initCameraScan()` (lines 8012+, 161 lines)
|
|
446
|
+
- **cycleCAD:** `viewer-ar.js`
|
|
447
|
+
- **LoC to Port:** 400
|
|
448
|
+
- **Effort:** 5 hours
|
|
449
|
+
- **Description:** WebXR, point camera at subassembly, identify via vision, 3D overlay
|
|
450
|
+
- **Dependencies:** WebXR API, Gemini Vision
|
|
451
|
+
- **Blockers:** WebXR requires HTTPS + compatible device
|
|
452
|
+
- **Priority:** P4 (mobile/field service)
|
|
453
|
+
- **Status:** PLANNED
|
|
454
|
+
|
|
455
|
+
### 36-57. Other Features
|
|
456
|
+
- AI Render Test, Theme System (duplicate), Image Editor, Shape Drawing, Recording, Embed Settings, Docs Mode, Sidebar Collapse, Menu Collapse, Snipper Tool, Visualization Tools, etc.
|
|
457
|
+
- **Total Remaining:** ~2,500+ LoC, 20+ hours
|
|
458
|
+
- **Priority:** P4+ (duplicates or niche)
|
|
459
|
+
|
|
460
|
+
**Phase 3 Subtotal:** 20+ modules, 6,000+ LoC, 60+ hours, 2+ weeks
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## Module Dependencies
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
viewer-mode.js (base)
|
|
468
|
+
├─→ viewport.js (shared scene)
|
|
469
|
+
├─→ Three.js (core)
|
|
470
|
+
│
|
|
471
|
+
├─ viewer-assembly-tree.js
|
|
472
|
+
├─ viewer-explode.js
|
|
473
|
+
├─ viewer-section-cut.js
|
|
474
|
+
├─ viewer-context-menu.js
|
|
475
|
+
├─ viewer-bom.js
|
|
476
|
+
├─ viewer-part-info.js
|
|
477
|
+
│ ├─→ STL exporter (external lib needed)
|
|
478
|
+
│ ├─→ OBJ exporter (external lib needed)
|
|
479
|
+
│ └─→ glTF exporter (Three.js built-in)
|
|
480
|
+
├─ viewer-ai-identify.js
|
|
481
|
+
│ └─→ Gemini Vision API
|
|
482
|
+
│ └─→ McMaster-Carr API
|
|
483
|
+
├─ viewer-shortcuts.js
|
|
484
|
+
├─ viewer-animation.js
|
|
485
|
+
├─ viewer-measurements.js
|
|
486
|
+
├─ viewer-transparency.js
|
|
487
|
+
├─ viewer-grid.js
|
|
488
|
+
├─ viewer-screenshot.js
|
|
489
|
+
├─ viewer-comparison.js
|
|
490
|
+
├─ viewer-weight.js
|
|
491
|
+
│
|
|
492
|
+
├─ viewer-slicer.js
|
|
493
|
+
│ └─→ g-code generator (external lib)
|
|
494
|
+
├─ viewer-annotations.js
|
|
495
|
+
├─ viewer-technical-drawings.js
|
|
496
|
+
│ └─→ dxf-export.js (existing)
|
|
497
|
+
├─ viewer-qr.js
|
|
498
|
+
│ └─→ qrcode-generator (existing in cycleCAD)
|
|
499
|
+
├─ viewer-hero-shots.js
|
|
500
|
+
├─ viewer-voice.js
|
|
501
|
+
├─ viewer-smart-filters.js
|
|
502
|
+
├─ viewer-bom-costing.js
|
|
503
|
+
├─ viewer-asm-instructions.js
|
|
504
|
+
├─ viewer-maint-heatmap.js
|
|
505
|
+
├─ viewer-wear-timeline.js
|
|
506
|
+
├─ viewer-collab.js
|
|
507
|
+
│ └─→ WebRTC + CRDT (Phase D)
|
|
508
|
+
├─ viewer-clash.js
|
|
509
|
+
│ └─→ CSG library
|
|
510
|
+
├─ viewer-standards.js
|
|
511
|
+
├─ viewer-blueprint-theme.js
|
|
512
|
+
├─ viewer-help.js
|
|
513
|
+
├─ viewer-ai-render.js
|
|
514
|
+
│ └─→ Stable Diffusion/Midjourney API
|
|
515
|
+
├─ viewer-library.js
|
|
516
|
+
└─ viewer-ar.js
|
|
517
|
+
└─→ WebXR API
|
|
518
|
+
|
|
519
|
+
Shared with Edit Mode:
|
|
520
|
+
├─ ai-chat.js (enhanced)
|
|
521
|
+
├─ dxf-export.js (existing)
|
|
522
|
+
├─ export.js (enhanced)
|
|
523
|
+
└─ viewport.js (existing)
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## Blocking Dependencies
|
|
529
|
+
|
|
530
|
+
| Blocker | Feature | Workaround | Phase |
|
|
531
|
+
|---------|---------|-----------|-------|
|
|
532
|
+
| STL Exporter Library | Part Info 3D Export | Use trimesh.js or three-stl-exporter | Phase 1 or 2 |
|
|
533
|
+
| g-code Generator | 3D Print Slicer | Use Cura.js or download library | Phase 3 |
|
|
534
|
+
| CSG Library | Clash Detection | Use CSGjs or OpenJSCAD | Phase 3 |
|
|
535
|
+
| WebXR | AR Scanner | Polyfill or fallback to camera view | Phase 3 |
|
|
536
|
+
| External APIs | AI Render, Gemini, McMaster | Already integrated in cycleCAD | Phase 1 |
|
|
537
|
+
| CRDT Library | Real-time Collaboration | Yjs or Automerge | Phase D |
|
|
538
|
+
| DIN/ISO Database | Standards Identifier | Scrape or import manually | Phase 3 |
|
|
539
|
+
| PDF Export | Assembly Instructions | Use pdfkit or wkhtmltopdf | Phase 3 |
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## External Libraries Needed
|
|
544
|
+
|
|
545
|
+
| Library | Purpose | Phase | Status |
|
|
546
|
+
|---------|---------|-------|--------|
|
|
547
|
+
| `three-stl-exporter` or `trimesh.js` | Export parts to STL | Phase 1 | TBD |
|
|
548
|
+
| `cura.js` | 3D print slicing | Phase 3 | TBD |
|
|
549
|
+
| `csgjs` | Constructive Solid Geometry | Phase 3 | TBD |
|
|
550
|
+
| `qrcode-generator` | QR codes | Phase 2 | ✅ Already in cycleCAD |
|
|
551
|
+
| `yjs` | Real-time collaboration | Phase D | TBD |
|
|
552
|
+
| `pdfkit` | PDF export | Phase 3 | TBD |
|
|
553
|
+
| `three-gltf-exporter` | glTF export | Phase 1 | ✅ Built-in to Three.js |
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## Estimated Total Effort
|
|
558
|
+
|
|
559
|
+
| Phase | Modules | LoC | Hours | Weeks | Start |
|
|
560
|
+
|-------|---------|-----|-------|-------|-------|
|
|
561
|
+
| **0** (Done) | 1 | 600 | 4 | 0.5 | Now |
|
|
562
|
+
| **1** (Critical) | 8 | 4,050 | 40 | 2 | Week 1 |
|
|
563
|
+
| **2** (Enhancement) | 7 | 1,890 | 20 | 1 | Week 3 |
|
|
564
|
+
| **3** (Advanced) | 20+ | 6,000+ | 60+ | 2-3 | Week 4 |
|
|
565
|
+
| **D** (Enterprise) | 5+ | 2,000+ | 20+ | 1+ | Week 7+ |
|
|
566
|
+
| **TOTAL** | 40+ | 14,500+ | 140+ | 7+ weeks | |
|
|
567
|
+
|
|
568
|
+
**MVP (Phases 0-1):** 60 hours, 2 weeks, ship with cycleCAD v1.1.0
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
## Decision Points
|
|
573
|
+
|
|
574
|
+
### Must Port
|
|
575
|
+
1. Assembly Tree — users need structure
|
|
576
|
+
2. Explode/Collapse — cycleWASH differentiator
|
|
577
|
+
3. Section Cut — inspection workflow
|
|
578
|
+
4. AI Identify — competitive advantage
|
|
579
|
+
|
|
580
|
+
### Should Port
|
|
581
|
+
5. BOM Export — manufacturing workflow
|
|
582
|
+
6. Part Info — detail inspection
|
|
583
|
+
7. Context Menu — user convenience
|
|
584
|
+
8. Measurements — technician workflow
|
|
585
|
+
9. Annotations — collaboration prep
|
|
586
|
+
|
|
587
|
+
### Could Port Later
|
|
588
|
+
- Advanced rendering, AR, video generation, etc.
|
|
589
|
+
- Only if time + resources allow
|
|
590
|
+
|
|
591
|
+
### Don't Port (Low ROI)
|
|
592
|
+
- Kiri:Moto (external tool)
|
|
593
|
+
- Snipper tool (built in to browsers)
|
|
594
|
+
- Embed settings (legacy feature)
|
|
595
|
+
- Theme system (CSS is enough)
|
|
596
|
+
|
|
597
|
+
---
|
|
598
|
+
|
|
599
|
+
**Document:** EXPLODEVIEW-FEATURE-MAPPING.md
|
|
600
|
+
**Status:** COMPLETE
|
|
601
|
+
**Date:** 2026-03-25
|
|
602
|
+
**Author:** Claude (Agent)
|