cyclecad 3.0.0 → 3.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.
Files changed (67) hide show
  1. package/BILLING-IMPLEMENTATION-SUMMARY.md +425 -0
  2. package/BILLING-INDEX.md +293 -0
  3. package/BILLING-INTEGRATION-GUIDE.md +414 -0
  4. package/COLLABORATION-INDEX.md +440 -0
  5. package/COLLABORATION-SYSTEM-SUMMARY.md +548 -0
  6. package/DOCKER-BUILD-MANIFEST.txt +483 -0
  7. package/DOCKER-FILES-REFERENCE.md +440 -0
  8. package/DOCKER-INFRASTRUCTURE.md +475 -0
  9. package/DOCKER-README.md +435 -0
  10. package/Dockerfile +33 -55
  11. package/PWA-FILES-CREATED.txt +350 -0
  12. package/QUICK-START-TESTING.md +126 -0
  13. package/STEP-IMPORT-QUICKSTART.md +347 -0
  14. package/STEP-IMPORT-SYSTEM-SUMMARY.md +502 -0
  15. package/app/css/mobile.css +1074 -0
  16. package/app/icons/generate-icons.js +203 -0
  17. package/app/index.html +93 -0
  18. package/app/js/billing-ui.js +990 -0
  19. package/app/js/brep-kernel.js +933 -981
  20. package/app/js/collab-client.js +750 -0
  21. package/app/js/mobile-nav.js +623 -0
  22. package/app/js/mobile-toolbar.js +476 -0
  23. package/app/js/modules/billing-module.js +724 -0
  24. package/app/js/modules/step-module-enhanced.js +938 -0
  25. package/app/js/offline-manager.js +705 -0
  26. package/app/js/responsive-init.js +360 -0
  27. package/app/js/touch-handler.js +429 -0
  28. package/app/manifest.json +211 -0
  29. package/app/offline.html +508 -0
  30. package/app/sw.js +571 -0
  31. package/app/tests/billing-tests.html +779 -0
  32. package/app/tests/brep-tests.html +980 -0
  33. package/app/tests/collab-tests.html +743 -0
  34. package/app/tests/mobile-tests.html +1299 -0
  35. package/app/tests/pwa-tests.html +1134 -0
  36. package/app/tests/step-tests.html +1042 -0
  37. package/app/tests/test-agent-v3.html +719 -0
  38. package/docker-compose.yml +225 -0
  39. package/docs/BILLING-HELP.json +260 -0
  40. package/docs/BILLING-README.md +639 -0
  41. package/docs/BILLING-TUTORIAL.md +736 -0
  42. package/docs/BREP-HELP.json +326 -0
  43. package/docs/BREP-TUTORIAL.md +802 -0
  44. package/docs/COLLABORATION-HELP.json +228 -0
  45. package/docs/COLLABORATION-TUTORIAL.md +818 -0
  46. package/docs/DOCKER-HELP.json +224 -0
  47. package/docs/DOCKER-TUTORIAL.md +974 -0
  48. package/docs/MOBILE-HELP.json +243 -0
  49. package/docs/MOBILE-RESPONSIVE-README.md +378 -0
  50. package/docs/MOBILE-TUTORIAL.md +747 -0
  51. package/docs/PWA-HELP.json +228 -0
  52. package/docs/PWA-README.md +662 -0
  53. package/docs/PWA-TUTORIAL.md +757 -0
  54. package/docs/STEP-HELP.json +481 -0
  55. package/docs/STEP-IMPORT-TUTORIAL.md +824 -0
  56. package/docs/TESTING-GUIDE.md +528 -0
  57. package/docs/TESTING-HELP.json +182 -0
  58. package/fusion-vs-cyclecad.html +1771 -0
  59. package/nginx.conf +237 -0
  60. package/package.json +1 -1
  61. package/server/Dockerfile.converter +51 -0
  62. package/server/Dockerfile.signaling +28 -0
  63. package/server/billing-server.js +487 -0
  64. package/server/converter-enhanced.py +528 -0
  65. package/server/requirements-converter.txt +29 -0
  66. package/server/signaling-server.js +801 -0
  67. package/tests/docker-tests.sh +389 -0
@@ -0,0 +1,1771 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Fusion 360 vs cycleCAD — Complete Feature Comparison</title>
7
+ <style>
8
+ * {
9
+ margin: 0;
10
+ padding: 0;
11
+ box-sizing: border-box;
12
+ }
13
+
14
+ body {
15
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
16
+ background: #0F172A;
17
+ color: #F8FAFC;
18
+ line-height: 1.6;
19
+ }
20
+
21
+ .container {
22
+ max-width: 1400px;
23
+ margin: 0 auto;
24
+ padding: 0 20px;
25
+ }
26
+
27
+ /* Header & Navigation */
28
+ header {
29
+ position: sticky;
30
+ top: 0;
31
+ z-index: 100;
32
+ background: rgba(15, 23, 42, 0.95);
33
+ backdrop-filter: blur(10px);
34
+ border-bottom: 1px solid rgba(2, 132, 199, 0.2);
35
+ padding: 20px 0;
36
+ margin-bottom: 40px;
37
+ }
38
+
39
+ .header-content {
40
+ display: flex;
41
+ justify-content: space-between;
42
+ align-items: center;
43
+ margin-bottom: 20px;
44
+ }
45
+
46
+ .logo {
47
+ font-size: 24px;
48
+ font-weight: bold;
49
+ background: linear-gradient(135deg, #0284C7, #06B6D4);
50
+ -webkit-background-clip: text;
51
+ -webkit-text-fill-color: transparent;
52
+ background-clip: text;
53
+ }
54
+
55
+ .print-btn {
56
+ background: #0284C7;
57
+ color: white;
58
+ border: none;
59
+ padding: 10px 20px;
60
+ border-radius: 6px;
61
+ cursor: pointer;
62
+ font-weight: 600;
63
+ transition: all 0.3s ease;
64
+ }
65
+
66
+ .print-btn:hover {
67
+ background: #0369A1;
68
+ transform: translateY(-2px);
69
+ box-shadow: 0 8px 16px rgba(2, 132, 199, 0.3);
70
+ }
71
+
72
+ .search-box {
73
+ margin-bottom: 20px;
74
+ }
75
+
76
+ .search-box input {
77
+ width: 100%;
78
+ max-width: 400px;
79
+ padding: 12px 16px;
80
+ background: #1E293B;
81
+ border: 1px solid #334155;
82
+ border-radius: 6px;
83
+ color: #F8FAFC;
84
+ font-size: 14px;
85
+ transition: all 0.3s ease;
86
+ }
87
+
88
+ .search-box input:focus {
89
+ outline: none;
90
+ border-color: #0284C7;
91
+ background: #334155;
92
+ box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.1);
93
+ }
94
+
95
+ /* Tabs */
96
+ .tabs {
97
+ display: flex;
98
+ gap: 10px;
99
+ margin-bottom: 30px;
100
+ flex-wrap: wrap;
101
+ }
102
+
103
+ .tab-btn {
104
+ padding: 12px 20px;
105
+ background: transparent;
106
+ border: 2px solid #334155;
107
+ color: #94A3B8;
108
+ border-radius: 6px;
109
+ cursor: pointer;
110
+ font-weight: 600;
111
+ font-size: 14px;
112
+ transition: all 0.3s ease;
113
+ }
114
+
115
+ .tab-btn:hover {
116
+ border-color: #0284C7;
117
+ color: #0284C7;
118
+ }
119
+
120
+ .tab-btn.active {
121
+ background: #0284C7;
122
+ border-color: #0284C7;
123
+ color: white;
124
+ box-shadow: 0 8px 16px rgba(2, 132, 199, 0.3);
125
+ }
126
+
127
+ /* Content */
128
+ .tab-content {
129
+ display: none;
130
+ animation: fadeIn 0.3s ease;
131
+ }
132
+
133
+ .tab-content.active {
134
+ display: block;
135
+ }
136
+
137
+ @keyframes fadeIn {
138
+ from {
139
+ opacity: 0;
140
+ transform: translateY(10px);
141
+ }
142
+ to {
143
+ opacity: 1;
144
+ transform: translateY(0);
145
+ }
146
+ }
147
+
148
+ /* Cards */
149
+ .card {
150
+ background: #1E293B;
151
+ border: 1px solid #334155;
152
+ border-radius: 8px;
153
+ padding: 24px;
154
+ margin-bottom: 20px;
155
+ transition: all 0.3s ease;
156
+ }
157
+
158
+ .card:hover {
159
+ border-color: #0284C7;
160
+ box-shadow: 0 12px 32px rgba(2, 132, 199, 0.15);
161
+ }
162
+
163
+ .card-title {
164
+ font-size: 20px;
165
+ font-weight: bold;
166
+ margin-bottom: 16px;
167
+ color: #F8FAFC;
168
+ }
169
+
170
+ .card-subtitle {
171
+ font-size: 14px;
172
+ color: #94A3B8;
173
+ margin-bottom: 12px;
174
+ }
175
+
176
+ /* Hero Section */
177
+ .hero {
178
+ text-align: center;
179
+ margin-bottom: 40px;
180
+ }
181
+
182
+ .hero h1 {
183
+ font-size: 48px;
184
+ font-weight: bold;
185
+ margin-bottom: 20px;
186
+ background: linear-gradient(135deg, #0284C7, #06B6D4);
187
+ -webkit-background-clip: text;
188
+ -webkit-text-fill-color: transparent;
189
+ background-clip: text;
190
+ }
191
+
192
+ .hero p {
193
+ font-size: 18px;
194
+ color: #CBD5E1;
195
+ margin-bottom: 30px;
196
+ }
197
+
198
+ /* Comparison Cards */
199
+ .comparison-grid {
200
+ display: grid;
201
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
202
+ gap: 20px;
203
+ margin-bottom: 40px;
204
+ }
205
+
206
+ .comparison-card {
207
+ background: #1E293B;
208
+ border: 1px solid #334155;
209
+ border-radius: 8px;
210
+ padding: 24px;
211
+ transition: all 0.3s ease;
212
+ }
213
+
214
+ .comparison-card:hover {
215
+ border-color: #0284C7;
216
+ transform: translateY(-4px);
217
+ }
218
+
219
+ .comparison-card h3 {
220
+ font-size: 18px;
221
+ font-weight: bold;
222
+ margin-bottom: 12px;
223
+ color: #F8FAFC;
224
+ }
225
+
226
+ .comparison-card .stat {
227
+ font-size: 24px;
228
+ font-weight: bold;
229
+ color: #0284C7;
230
+ margin-bottom: 8px;
231
+ }
232
+
233
+ .comparison-card .feature {
234
+ font-size: 13px;
235
+ color: #94A3B8;
236
+ margin-bottom: 8px;
237
+ display: flex;
238
+ align-items: center;
239
+ gap: 8px;
240
+ }
241
+
242
+ .feature-icon {
243
+ font-size: 16px;
244
+ }
245
+
246
+ /* Feature Matrix */
247
+ .feature-matrix {
248
+ overflow-x: auto;
249
+ margin-bottom: 40px;
250
+ }
251
+
252
+ .feature-table {
253
+ width: 100%;
254
+ border-collapse: collapse;
255
+ background: #1E293B;
256
+ border-radius: 8px;
257
+ overflow: hidden;
258
+ }
259
+
260
+ .feature-table thead {
261
+ background: #0F172A;
262
+ border-bottom: 2px solid #334155;
263
+ position: sticky;
264
+ top: 60px;
265
+ z-index: 10;
266
+ }
267
+
268
+ .feature-table th {
269
+ padding: 16px;
270
+ text-align: left;
271
+ font-weight: 600;
272
+ color: #F8FAFC;
273
+ border-right: 1px solid #334155;
274
+ }
275
+
276
+ .feature-table th:last-child {
277
+ border-right: none;
278
+ }
279
+
280
+ .feature-table td {
281
+ padding: 14px 16px;
282
+ border-bottom: 1px solid #334155;
283
+ border-right: 1px solid #334155;
284
+ }
285
+
286
+ .feature-table td:last-child {
287
+ border-right: none;
288
+ }
289
+
290
+ .feature-table tbody tr:hover {
291
+ background: #334155;
292
+ }
293
+
294
+ .feature-name {
295
+ color: #F8FAFC;
296
+ font-weight: 500;
297
+ min-width: 250px;
298
+ }
299
+
300
+ .status {
301
+ text-align: center;
302
+ font-weight: 600;
303
+ min-width: 100px;
304
+ }
305
+
306
+ .status-full {
307
+ color: #22C55E;
308
+ }
309
+
310
+ .status-partial {
311
+ color: #FBBF24;
312
+ }
313
+
314
+ .status-planned {
315
+ color: #94A3B8;
316
+ }
317
+
318
+ .status-no {
319
+ color: #EF4444;
320
+ }
321
+
322
+ /* Category Toggle */
323
+ .category {
324
+ margin-bottom: 0;
325
+ cursor: pointer;
326
+ background: #334155;
327
+ }
328
+
329
+ .category:hover {
330
+ background: #475569;
331
+ }
332
+
333
+ .category-header {
334
+ display: flex;
335
+ justify-content: space-between;
336
+ align-items: center;
337
+ padding: 16px;
338
+ font-weight: 600;
339
+ color: #0284C7;
340
+ }
341
+
342
+ .category-toggle {
343
+ transition: transform 0.3s ease;
344
+ }
345
+
346
+ .category-toggle.collapsed {
347
+ transform: rotate(-90deg);
348
+ }
349
+
350
+ .category-rows {
351
+ display: none;
352
+ }
353
+
354
+ .category-rows.expanded {
355
+ display: table-row-group;
356
+ }
357
+
358
+ /* Stats */
359
+ .stats-grid {
360
+ display: grid;
361
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
362
+ gap: 20px;
363
+ margin-bottom: 40px;
364
+ }
365
+
366
+ .stat-card {
367
+ background: linear-gradient(135deg, #1E293B, #334155);
368
+ border: 1px solid #0284C7;
369
+ border-radius: 8px;
370
+ padding: 20px;
371
+ text-align: center;
372
+ }
373
+
374
+ .stat-number {
375
+ font-size: 32px;
376
+ font-weight: bold;
377
+ color: #0284C7;
378
+ margin-bottom: 8px;
379
+ animation: countUp 1s ease;
380
+ }
381
+
382
+ @keyframes countUp {
383
+ from {
384
+ opacity: 0;
385
+ transform: translateY(10px);
386
+ }
387
+ to {
388
+ opacity: 1;
389
+ transform: translateY(0);
390
+ }
391
+ }
392
+
393
+ .stat-label {
394
+ font-size: 13px;
395
+ color: #94A3B8;
396
+ font-weight: 600;
397
+ }
398
+
399
+ /* Callout */
400
+ .callout {
401
+ background: linear-gradient(135deg, rgba(2, 132, 199, 0.1), rgba(6, 182, 212, 0.05));
402
+ border-left: 4px solid #0284C7;
403
+ border-radius: 6px;
404
+ padding: 20px;
405
+ margin-bottom: 20px;
406
+ }
407
+
408
+ .callout-title {
409
+ font-weight: 600;
410
+ color: #0284C7;
411
+ margin-bottom: 8px;
412
+ }
413
+
414
+ .callout-text {
415
+ color: #CBD5E1;
416
+ font-size: 14px;
417
+ }
418
+
419
+ /* Architecture Diagrams */
420
+ .arch-diagram {
421
+ background: #334155;
422
+ border-radius: 8px;
423
+ padding: 20px;
424
+ margin-bottom: 20px;
425
+ font-family: 'Courier New', monospace;
426
+ font-size: 13px;
427
+ color: #0284C7;
428
+ overflow-x: auto;
429
+ white-space: pre;
430
+ }
431
+
432
+ /* Lists */
433
+ .feature-list {
434
+ list-style: none;
435
+ margin-bottom: 20px;
436
+ }
437
+
438
+ .feature-list li {
439
+ padding: 12px 0;
440
+ border-bottom: 1px solid #334155;
441
+ display: flex;
442
+ align-items: center;
443
+ gap: 12px;
444
+ }
445
+
446
+ .feature-list li:last-child {
447
+ border-bottom: none;
448
+ }
449
+
450
+ .feature-list .check {
451
+ color: #22C55E;
452
+ font-size: 18px;
453
+ font-weight: bold;
454
+ }
455
+
456
+ .feature-list .partial {
457
+ color: #FBBF24;
458
+ font-size: 18px;
459
+ font-weight: bold;
460
+ }
461
+
462
+ .feature-list .cross {
463
+ color: #EF4444;
464
+ font-size: 18px;
465
+ font-weight: bold;
466
+ }
467
+
468
+ /* Pricing Table */
469
+ .pricing-grid {
470
+ display: grid;
471
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
472
+ gap: 20px;
473
+ margin-bottom: 40px;
474
+ }
475
+
476
+ .pricing-card {
477
+ background: #1E293B;
478
+ border: 2px solid #334155;
479
+ border-radius: 8px;
480
+ padding: 24px;
481
+ transition: all 0.3s ease;
482
+ }
483
+
484
+ .pricing-card:hover {
485
+ border-color: #0284C7;
486
+ transform: translateY(-4px);
487
+ }
488
+
489
+ .pricing-card.featured {
490
+ border-color: #0284C7;
491
+ box-shadow: 0 12px 32px rgba(2, 132, 199, 0.2);
492
+ }
493
+
494
+ .pricing-card h3 {
495
+ font-size: 18px;
496
+ font-weight: bold;
497
+ margin-bottom: 12px;
498
+ }
499
+
500
+ .pricing-card .price {
501
+ font-size: 28px;
502
+ font-weight: bold;
503
+ color: #0284C7;
504
+ margin-bottom: 4px;
505
+ }
506
+
507
+ .pricing-card .period {
508
+ font-size: 13px;
509
+ color: #94A3B8;
510
+ margin-bottom: 20px;
511
+ }
512
+
513
+ .pricing-card ul {
514
+ list-style: none;
515
+ margin-bottom: 20px;
516
+ }
517
+
518
+ .pricing-card li {
519
+ font-size: 13px;
520
+ color: #CBD5E1;
521
+ padding: 8px 0;
522
+ border-bottom: 1px solid #334155;
523
+ }
524
+
525
+ .pricing-card li:last-child {
526
+ border-bottom: none;
527
+ }
528
+
529
+ /* Migration Guide */
530
+ .step {
531
+ background: #1E293B;
532
+ border-left: 4px solid #0284C7;
533
+ border-radius: 6px;
534
+ padding: 20px;
535
+ margin-bottom: 20px;
536
+ }
537
+
538
+ .step-number {
539
+ display: inline-block;
540
+ background: #0284C7;
541
+ color: white;
542
+ width: 32px;
543
+ height: 32px;
544
+ border-radius: 50%;
545
+ text-align: center;
546
+ line-height: 32px;
547
+ font-weight: bold;
548
+ margin-right: 12px;
549
+ margin-bottom: 12px;
550
+ }
551
+
552
+ .step-title {
553
+ font-weight: 600;
554
+ color: #F8FAFC;
555
+ margin-bottom: 8px;
556
+ }
557
+
558
+ .step-content {
559
+ color: #CBD5E1;
560
+ font-size: 14px;
561
+ }
562
+
563
+ /* Collapsible */
564
+ .collapsible {
565
+ background: #334155;
566
+ border-radius: 6px;
567
+ padding: 16px;
568
+ margin-bottom: 12px;
569
+ cursor: pointer;
570
+ user-select: none;
571
+ transition: all 0.3s ease;
572
+ }
573
+
574
+ .collapsible:hover {
575
+ background: #475569;
576
+ }
577
+
578
+ .collapsible-header {
579
+ display: flex;
580
+ justify-content: space-between;
581
+ align-items: center;
582
+ font-weight: 600;
583
+ color: #F8FAFC;
584
+ }
585
+
586
+ .collapsible-toggle {
587
+ transition: transform 0.3s ease;
588
+ }
589
+
590
+ .collapsible-toggle.open {
591
+ transform: rotate(180deg);
592
+ }
593
+
594
+ .collapsible-content {
595
+ display: none;
596
+ padding-top: 16px;
597
+ border-top: 1px solid #1E293B;
598
+ color: #CBD5E1;
599
+ font-size: 14px;
600
+ }
601
+
602
+ .collapsible-content.show {
603
+ display: block;
604
+ }
605
+
606
+ /* Print Styles */
607
+ @media print {
608
+ body {
609
+ background: white;
610
+ color: black;
611
+ }
612
+
613
+ header {
614
+ position: static;
615
+ background: white;
616
+ border-bottom: 2px solid #ddd;
617
+ }
618
+
619
+ .print-btn {
620
+ display: none;
621
+ }
622
+
623
+ .tabs {
624
+ display: none;
625
+ }
626
+
627
+ .tab-content {
628
+ display: block !important;
629
+ page-break-inside: avoid;
630
+ }
631
+
632
+ .card, .comparison-card, .pricing-card {
633
+ background: white;
634
+ border: 1px solid #ddd;
635
+ page-break-inside: avoid;
636
+ }
637
+
638
+ .feature-table {
639
+ background: white;
640
+ }
641
+
642
+ .feature-table thead {
643
+ background: #f5f5f5;
644
+ }
645
+
646
+ .feature-table tbody tr:hover {
647
+ background: white;
648
+ }
649
+
650
+ .callout {
651
+ background: #f0f0f0;
652
+ border-left: 4px solid #333;
653
+ }
654
+
655
+ .arch-diagram {
656
+ background: #f5f5f5;
657
+ color: black;
658
+ }
659
+
660
+ .status-full, .feature-icon {
661
+ color: #22C55E !important;
662
+ }
663
+
664
+ .status-partial {
665
+ color: #FBBF24 !important;
666
+ }
667
+
668
+ .status-planned {
669
+ color: #999 !important;
670
+ }
671
+
672
+ .status-no {
673
+ color: #EF4444 !important;
674
+ }
675
+ }
676
+
677
+ /* Responsive */
678
+ @media (max-width: 768px) {
679
+ .hero h1 {
680
+ font-size: 32px;
681
+ }
682
+
683
+ .comparison-grid {
684
+ grid-template-columns: 1fr;
685
+ }
686
+
687
+ .pricing-grid {
688
+ grid-template-columns: 1fr;
689
+ }
690
+
691
+ .stats-grid {
692
+ grid-template-columns: repeat(2, 1fr);
693
+ }
694
+
695
+ .feature-table {
696
+ font-size: 12px;
697
+ }
698
+
699
+ .feature-table th, .feature-table td {
700
+ padding: 10px 8px;
701
+ }
702
+
703
+ .feature-name {
704
+ min-width: 150px;
705
+ }
706
+
707
+ .tabs {
708
+ gap: 6px;
709
+ }
710
+
711
+ .tab-btn {
712
+ padding: 10px 14px;
713
+ font-size: 12px;
714
+ }
715
+ }
716
+ </style>
717
+ </head>
718
+ <body>
719
+ <header>
720
+ <div class="container">
721
+ <div class="header-content">
722
+ <div class="logo">Fusion 360 vs cycleCAD</div>
723
+ <button class="print-btn" onclick="window.print()">📄 Export PDF</button>
724
+ </div>
725
+ <div class="search-box" id="searchContainer">
726
+ <input type="text" id="featureSearch" placeholder="Search features..." style="display: none;">
727
+ </div>
728
+ <div class="tabs" id="tabs">
729
+ <button class="tab-btn active" onclick="switchTab('executive')">Executive Summary</button>
730
+ <button class="tab-btn" onclick="switchTab('features')">Feature Matrix</button>
731
+ <button class="tab-btn" onclick="switchTab('architecture')">Architecture</button>
732
+ <button class="tab-btn" onclick="switchTab('pricing')">Pricing</button>
733
+ <button class="tab-btn" onclick="switchTab('advantages')">cycleCAD Advantages</button>
734
+ <button class="tab-btn" onclick="switchTab('migration')">Migration Guide</button>
735
+ </div>
736
+ </div>
737
+ </header>
738
+
739
+ <main class="container">
740
+ <!-- Tab 1: Executive Summary -->
741
+ <div id="executive" class="tab-content active">
742
+ <div class="hero">
743
+ <h1>Fusion 360 vs cycleCAD</h1>
744
+ <p>Complete feature comparison of two leading CAD platforms</p>
745
+ </div>
746
+
747
+ <div class="stats-grid">
748
+ <div class="stat-card">
749
+ <div class="stat-number">200+</div>
750
+ <div class="stat-label">Fusion 360 Features</div>
751
+ </div>
752
+ <div class="stat-card">
753
+ <div class="stat-number">150+</div>
754
+ <div class="stat-label">cycleCAD Features</div>
755
+ </div>
756
+ <div class="stat-card">
757
+ <div class="stat-number">$545/yr</div>
758
+ <div class="stat-label">Fusion 360 Cost</div>
759
+ </div>
760
+ <div class="stat-card">
761
+ <div class="stat-number">FREE</div>
762
+ <div class="stat-label">cycleCAD Cost</div>
763
+ </div>
764
+ </div>
765
+
766
+ <div class="comparison-grid">
767
+ <div class="comparison-card">
768
+ <h3>Fusion 360</h3>
769
+ <div class="stat">$545/yr</div>
770
+ <div class="feature"><span class="feature-icon">💻</span> Desktop + Cloud hybrid</div>
771
+ <div class="feature"><span class="feature-icon">🔒</span> Closed source (Autodesk)</div>
772
+ <div class="feature"><span class="feature-icon">⚙️</span> Proprietary kernel</div>
773
+ <div class="feature"><span class="feature-icon">🌐</span> Autodesk ecosystem</div>
774
+ <div class="feature"><span class="feature-icon">🚀</span> Mature, battle-tested</div>
775
+ <div class="feature"><span class="feature-icon">📦</span> Includes CAM + Simulation</div>
776
+ </div>
777
+
778
+ <div class="comparison-card">
779
+ <h3>cycleCAD</h3>
780
+ <div class="stat">FREE</div>
781
+ <div class="feature"><span class="feature-icon">🌐</span> 100% browser-native</div>
782
+ <div class="feature"><span class="feature-icon">🔓</span> Open source (MIT)</div>
783
+ <div class="feature"><span class="feature-icon">⚡</span> OpenCascade.js WASM</div>
784
+ <div class="feature"><span class="feature-icon">🤖</span> Agent-first API</div>
785
+ <div class="feature"><span class="feature-icon">🚀</span> Modern, OSS extensible</div>
786
+ <div class="feature"><span class="feature-icon">🧠</span> AI-powered throughout</div>
787
+ </div>
788
+
789
+ <div class="comparison-card">
790
+ <h3>Key Differentiators</h3>
791
+ <div class="feature"><span class="feature-icon">✨</span> cycleCAD: No install, works anywhere</div>
792
+ <div class="feature"><span class="feature-icon">✨</span> cycleCAD: Built-in AI analysis</div>
793
+ <div class="feature"><span class="feature-icon">✨</span> cycleCAD: Inventor import native</div>
794
+ <div class="feature"><span class="feature-icon">✨</span> cycleCAD: Full API for agents</div>
795
+ <div class="feature"><span class="feature-icon">✨</span> Fusion: Mature CAM (G-code)</div>
796
+ <div class="feature"><span class="feature-icon">✨</span> Fusion: Industry standard</div>
797
+ </div>
798
+ </div>
799
+
800
+ <div class="callout">
801
+ <div class="callout-title">Why Choose cycleCAD?</div>
802
+ <div class="callout-text">
803
+ <strong>Free forever:</strong> Zero cost for full modeling platform. Pay only for Pro features (€49/mo) if you need real-time collaboration or enterprise deployment.<br><br>
804
+ <strong>Open source:</strong> MIT license — fork it, extend it, run it yourself. No vendor lock-in.<br><br>
805
+ <strong>Browser-native:</strong> Works on any device with a web browser. No installation, no licensing headaches. Chromebooks, tablets, old laptops all supported.<br><br>
806
+ <strong>AI-powered:</strong> Built-in chatbot, part identifier, design review, NL search, and text-to-CAD — all free. Fusion 360 requires Autodesk's separate AI plugins (paid extra).<br><br>
807
+ <strong>Agent-first:</strong> Complete REST API, MCP server, CLI tool, and 55+ commands. Build your own CAD agents, automation, and integrations. Fusion 360 has basic scripting only.<br><br>
808
+ <strong>Inventor native:</strong> Import .ipt and .iam files directly with full feature tree. Fusion 360 requires conversion to STEP (loses parametrics). cycleCAD preserves your design intent.<br><br>
809
+ <strong>ExplodeView integration:</strong> View and analyze 399-part assemblies with 40+ tools (BOM, cost, weight, maintenance schedule, AR scanner). Separate paid tool in Fusion ecosystem.
810
+ </div>
811
+ </div>
812
+ </div>
813
+
814
+ <!-- Tab 2: Feature Matrix -->
815
+ <div id="features" class="tab-content">
816
+ <div class="search-box">
817
+ <input type="text" id="featureSearch2" placeholder="🔍 Search features..." style="display: block;">
818
+ </div>
819
+
820
+ <div class="stats-grid" style="margin-bottom: 40px;">
821
+ <div class="stat-card">
822
+ <div class="stat-number" id="totalFeatures">218</div>
823
+ <div class="stat-label">Total Features Compared</div>
824
+ </div>
825
+ <div class="stat-card">
826
+ <div class="stat-number" id="cycleCADCount">156</div>
827
+ <div class="stat-label">cycleCAD Implemented</div>
828
+ </div>
829
+ <div class="stat-card">
830
+ <div class="stat-number" id="cycleCADPercentage">72%</div>
831
+ <div class="stat-label">Feature Coverage</div>
832
+ </div>
833
+ </div>
834
+
835
+ <div class="feature-matrix">
836
+ <table class="feature-table" id="featureTable">
837
+ <thead>
838
+ <tr>
839
+ <th>Feature</th>
840
+ <th>Fusion 360</th>
841
+ <th>cycleCAD</th>
842
+ <th>Notes</th>
843
+ </tr>
844
+ </thead>
845
+ <tbody id="tableBody">
846
+ <!-- Populated by JavaScript -->
847
+ </tbody>
848
+ </table>
849
+ </div>
850
+ </div>
851
+
852
+ <!-- Tab 3: Architecture -->
853
+ <div id="architecture" class="tab-content">
854
+ <div class="card">
855
+ <div class="card-title">Fusion 360 Architecture</div>
856
+ <div class="card-subtitle">Monolithic Desktop + Cloud Hybrid</div>
857
+ <div class="arch-diagram">┌─────────────────────────────────────────────────┐
858
+ │ Autodesk Cloud (Workspaces, Collab) │
859
+ ├─────────────────────────────────────────────────┤
860
+ │ C++ Desktop App (Qt Framework) │
861
+ │ ├─ Proprietary Geometric Kernel │
862
+ │ ├─ Parametric Feature Tree │
863
+ │ ├─ CAM (G-code generation) │
864
+ │ ├─ Simulation (FEA, Thermal) │
865
+ │ └─ Rendering (Vulkan/Metal) │
866
+ ├─────────────────────────────────────────────────┤
867
+ │ Data Layer (Parasolid-like BREP) │
868
+ └─────────────────────────────────────────────────┘
869
+
870
+ Strengths:
871
+ ✓ Mature, battle-tested CAD kernel
872
+ ✓ Real-time sync with cloud
873
+ ✓ Professional CAM & simulation
874
+ ✓ Industry standard (Fortune 500 use it)
875
+
876
+ Weaknesses:
877
+ ✗ Desktop installation required
878
+ ✗ Proprietary — cannot extend kernel
879
+ ✗ Single-threaded rendering
880
+ ✗ Large memory footprint (2+ GB)
881
+ ✗ Vendor lock-in to Autodesk ecosystem</div>
882
+ </div>
883
+
884
+ <div class="card">
885
+ <div class="card-title">cycleCAD Architecture</div>
886
+ <div class="card-subtitle">Modular Browser-Native LEGO Kernel</div>
887
+ <div class="arch-diagram">┌─────────────────────────────────────────────────┐
888
+ │ Web Browser (Any Device) │
889
+ ├─────────────────────────────────────────────────┤
890
+ │ ES Modules (Zero Dependencies) │
891
+ │ ├─ Agent API (55+ commands, REST/MCP) │
892
+ │ ├─ Sketch Engine (2D constraint solver) │
893
+ │ ├─ Operations (Extrude, Revolve, Sweep, etc) │
894
+ │ ├─ Assembly Module (Joints, BOM) │
895
+ │ ├─ AI Layer (Gemini, Groq, Offline NLP) │
896
+ │ └─ Viewport (Three.js r170) │
897
+ ├─────────────────────────────────────────────────┤
898
+ │ WASM Layer (OpenCascade.js) │
899
+ │ ├─ STEP Import/Export │
900
+ │ ├─ Real B-Rep Kernel │
901
+ │ └─ Boolean Operations │
902
+ ├─────────────────────────────────────────────────┤
903
+ │ ExplodeView Integration (40+ analysis tools) │
904
+ ├─────────────────────────────────────────────────┤
905
+ │ Docker (Optional self-hosting) │
906
+ │ ├─ MCP Server │
907
+ │ ├─ REST API │
908
+ │ ├─ STEP Converter (FastAPI) │
909
+ │ └─ CLI Tool │
910
+ └─────────────────────────────────────────────────┘
911
+
912
+ Strengths:
913
+ ✓ Zero installation — works anywhere
914
+ ✓ Open source — extend anything
915
+ ✓ Modular LEGO design — pick what you need
916
+ ✓ AI-native (agents are first-class citizens)
917
+ ✓ Mobile-friendly (responsive design)
918
+ ✓ Self-hosted option (full Docker stack)
919
+ ✓ ESM + CDN — instant deployment
920
+
921
+ Weaknesses:
922
+ ✗ Newer — less battle-tested than Fusion
923
+ ✗ WASM performance < C++ on huge assemblies
924
+ ✗ Approximations for fillet/chamfer (torus-based)
925
+ ✗ Boolean operations visual-only (not real CSG)
926
+ ✗ Limited CAM (basic 3D slicing only)</div>
927
+ </div>
928
+
929
+ <div class="card">
930
+ <div class="card-title">Tech Stack Comparison</div>
931
+ <div style="overflow-x: auto;">
932
+ <table class="feature-table" style="margin-top: 20px;">
933
+ <thead>
934
+ <tr>
935
+ <th>Aspect</th>
936
+ <th>Fusion 360</th>
937
+ <th>cycleCAD</th>
938
+ </tr>
939
+ </thead>
940
+ <tbody>
941
+ <tr>
942
+ <td class="feature-name">Language</td>
943
+ <td>C++ (desktop) + C# (cloud)</td>
944
+ <td>JavaScript (ES modules)</td>
945
+ </tr>
946
+ <tr>
947
+ <td class="feature-name">Geometry Kernel</td>
948
+ <td>Parasolid-like (proprietary)</td>
949
+ <td>OpenCascade.js WASM</td>
950
+ </tr>
951
+ <tr>
952
+ <td class="feature-name">Rendering</td>
953
+ <td>Vulkan/Metal (GPU)</td>
954
+ <td>Three.js r170 WebGL</td>
955
+ </tr>
956
+ <tr>
957
+ <td class="feature-name">Deployment</td>
958
+ <td>Desktop app + cloud sync</td>
959
+ <td>Browser (or Docker self-hosted)</td>
960
+ </tr>
961
+ <tr>
962
+ <td class="feature-name">License</td>
963
+ <td>Proprietary (Autodesk)</td>
964
+ <td>MIT (open source)</td>
965
+ </tr>
966
+ <tr>
967
+ <td class="feature-name">Extensibility</td>
968
+ <td>C++ SDK + script API (limited)</td>
969
+ <td>Full API (REST, MCP, CLI, JS)</td>
970
+ </tr>
971
+ <tr>
972
+ <td class="feature-name">Data Format</td>
973
+ <td>Proprietary (.f360, .fusion)</td>
974
+ <td>Open (STEP, STL, OBJ, glTF, JSON)</td>
975
+ </tr>
976
+ <tr>
977
+ <td class="feature-name">Collaboration</td>
978
+ <td>Cloud workspace (Autodesk)</td>
979
+ <td>Self-hosted (Docker) or Browser-native</td>
980
+ </tr>
981
+ </tbody>
982
+ </table>
983
+ </div>
984
+ </div>
985
+ </div>
986
+
987
+ <!-- Tab 4: Pricing -->
988
+ <div id="pricing" class="tab-content">
989
+ <div class="pricing-grid">
990
+ <div class="pricing-card">
991
+ <h3>Fusion 360 Personal</h3>
992
+ <div class="price">Free*</div>
993
+ <div class="period">*Limited to hobbyists, students</div>
994
+ <ul>
995
+ <li>✓ Basic modeling</li>
996
+ <li>✓ Single design</li>
997
+ <li>✗ No collaboration</li>
998
+ <li>✗ No cloud storage</li>
999
+ <li>✗ No CAM</li>
1000
+ <li>✗ No simulation</li>
1001
+ <li>✗ Limited support</li>
1002
+ </ul>
1003
+ </div>
1004
+
1005
+ <div class="pricing-card featured">
1006
+ <h3>Fusion 360 Standard</h3>
1007
+ <div class="price">$545/yr</div>
1008
+ <div class="period">$60/month if paid monthly</div>
1009
+ <ul>
1010
+ <li>✓ Full modeling</li>
1011
+ <li>✓ Cloud workspace</li>
1012
+ <li>✓ Basic collaboration</li>
1013
+ <li>✓ CAM (2.5-axis)</li>
1014
+ <li>✓ Basic simulation</li>
1015
+ <li>✓ Cloud storage (5GB)</li>
1016
+ <li>✓ Email support</li>
1017
+ </ul>
1018
+ </div>
1019
+
1020
+ <div class="pricing-card">
1021
+ <h3>Fusion 360 Premium</h3>
1022
+ <div class="price">$2,345/yr</div>
1023
+ <div class="period">+$500 CAM Extension</div>
1024
+ <ul>
1025
+ <li>✓ All Standard features</li>
1026
+ <li>✓ Advanced CAM (5-axis)</li>
1027
+ <li>✓ Advanced simulation (FEA)</li>
1028
+ <li>✓ PCB design integration</li>
1029
+ <li>✓ Real-time collaboration</li>
1030
+ <li>✓ 100GB cloud storage</li>
1031
+ <li>✓ Priority support</li>
1032
+ </ul>
1033
+ </div>
1034
+ </div>
1035
+
1036
+ <h2 style="margin-top: 60px; margin-bottom: 20px; font-size: 28px;">cycleCAD Pricing</h2>
1037
+
1038
+ <div class="pricing-grid">
1039
+ <div class="pricing-card featured">
1040
+ <h3>Free Forever</h3>
1041
+ <div class="price">$0</div>
1042
+ <div class="period">No time limit, no credit card</div>
1043
+ <ul>
1044
+ <li>✓ Full parametric modeling</li>
1045
+ <li>✓ Sketcher + operations</li>
1046
+ <li>✓ Assembly workspace</li>
1047
+ <li>✓ 40+ analysis tools (via ExplodeView)</li>
1048
+ <li>✓ AI chatbot (Gemini Flash, Groq)</li>
1049
+ <li>✓ Part identifier + BOM</li>
1050
+ <li>✓ STEP/STL/OBJ/glTF import+export</li>
1051
+ <li>✓ Inventor .ipt/.iam import</li>
1052
+ <li>✓ CLI tool + REST API</li>
1053
+ <li>✓ Open source (MIT)</li>
1054
+ </ul>
1055
+ </div>
1056
+
1057
+ <div class="pricing-card">
1058
+ <h3>Pro</h3>
1059
+ <div class="price">€49/mo</div>
1060
+ <div class="period">€588/year</div>
1061
+ <ul>
1062
+ <li>✓ All Free features</li>
1063
+ <li>✓ Real-time collaboration (WebRTC)</li>
1064
+ <li>✓ Cloud workspace</li>
1065
+ <li>✓ Git-style version control</li>
1066
+ <li>✓ Advanced design review</li>
1067
+ <li>✓ Unlimited cloud storage</li>
1068
+ <li>✓ Priority AI processing</li>
1069
+ <li>✓ Custom materials library</li>
1070
+ <li>✓ Email + chat support</li>
1071
+ </ul>
1072
+ </div>
1073
+
1074
+ <div class="pricing-card">
1075
+ <h3>Enterprise</h3>
1076
+ <div class="price">€299/mo</div>
1077
+ <div class="period">€3,588/year</div>
1078
+ <ul>
1079
+ <li>✓ All Pro features</li>
1080
+ <li>✓ Self-hosted (Docker)</li>
1081
+ <li>✓ SSO + SAML</li>
1082
+ <li>✓ On-premise MCP server</li>
1083
+ <li>✓ Custom integrations</li>
1084
+ <li>✓ Dedicated account manager</li>
1085
+ <li>✓ SLA guarantee (99.9%)</li>
1086
+ <li>✓ Private AI instances</li>
1087
+ <li>✓ Phone + dedicated support</li>
1088
+ </ul>
1089
+ </div>
1090
+ </div>
1091
+
1092
+ <div class="card" style="margin-top: 40px;">
1093
+ <div class="card-title">Total Cost of Ownership (5-Year)</div>
1094
+ <div style="overflow-x: auto;">
1095
+ <table class="feature-table" style="margin-top: 20px;">
1096
+ <thead>
1097
+ <tr>
1098
+ <th>Scenario</th>
1099
+ <th>Fusion 360 Standard</th>
1100
+ <th>cycleCAD Free</th>
1101
+ <th>Savings</th>
1102
+ </tr>
1103
+ </thead>
1104
+ <tbody>
1105
+ <tr>
1106
+ <td class="feature-name">Hobbyist (1 seat, 5 years)</td>
1107
+ <td>$2,725 (or free personal)</td>
1108
+ <td>$0</td>
1109
+ <td>$2,725</td>
1110
+ </tr>
1111
+ <tr>
1112
+ <td class="feature-name">Small team (3 seats, 5 years)</td>
1113
+ <td>$8,175</td>
1114
+ <td>$0 (Pro: €8,820)</td>
1115
+ <td>$8,175 (or $0 with Pro)</td>
1116
+ </tr>
1117
+ <tr>
1118
+ <td class="feature-name">Department (10 seats, 5 years)</td>
1119
+ <td>$27,250</td>
1120
+ <td>$0 (Enterprise: €179,400)</td>
1121
+ <td>$27,250</td>
1122
+ </tr>
1123
+ </tbody>
1124
+ </table>
1125
+ </div>
1126
+ </div>
1127
+
1128
+ <div class="callout">
1129
+ <div class="callout-title">💰 What You Get for FREE with cycleCAD</div>
1130
+ <div class="callout-text">
1131
+ ✓ Everything Fusion 360 Standard includes (full modeling, assembly, CAM basics)<br>
1132
+ ✓ PLUS 40+ analysis tools (BOM, weight, cost, maintenance, thermal, vibration)<br>
1133
+ ✓ PLUS AI chatbot with Gemini Flash + Groq (no API keys needed)<br>
1134
+ ✓ PLUS part identifier (automatically classify parts, search McMaster-Carr)<br>
1135
+ ✓ PLUS Inventor import (no conversion needed, keeps parametrics)<br>
1136
+ ✓ PLUS command-line tool + REST API + MCP server (build your own automation)<br>
1137
+ ✓ PLUS open source (fork it, run it yourself, no vendor lock-in)<br><br>
1138
+
1139
+ <strong>Fusion 360 would charge you extra for ALL of these.</strong> cycleCAD gives them to you free.
1140
+ </div>
1141
+ </div>
1142
+ </div>
1143
+
1144
+ <!-- Tab 5: cycleCAD Advantages -->
1145
+ <div id="advantages" class="tab-content">
1146
+ <h2 style="margin-bottom: 30px; font-size: 28px;">What cycleCAD Does Better</h2>
1147
+
1148
+ <div class="card">
1149
+ <div class="card-title">🌐 Browser-Native — No Installation</div>
1150
+ <div class="card-subtitle">Works on any device. Instantly.</div>
1151
+ <div style="color: #CBD5E1;">
1152
+ <strong>Fusion 360:</strong> Requires desktop app (Windows, Mac, or cloud). Download: 2GB. Install: 10 minutes. Storage: 5GB+.<br><br>
1153
+ <strong>cycleCAD:</strong> Open browser, go to cyclecad.com/app/. Works on Chromebooks, tablets, old laptops, iPad with Safari. Zero footprint.<br><br>
1154
+ <strong>Implication:</strong> You can design on your lunch break from your phone. Bring your design to a customer's site on their laptop. Use CAD from a library computer.
1155
+ </div>
1156
+ </div>
1157
+
1158
+ <div class="card">
1159
+ <div class="card-title">🔓 Open Source — MIT License</div>
1160
+ <div class="card-subtitle">Full transparency. Full control. No vendor lock-in.</div>
1161
+ <div style="color: #CBD5E1;">
1162
+ <strong>Fusion 360:</strong> Proprietary. You don't own your code. Autodesk can change features, pricing, or deprecate entire tools. See: Fusion 360's recent CAM overhaul.<br><br>
1163
+ <strong>cycleCAD:</strong> MIT license — you can fork it, modify it, run it yourself, sell services using it. No one can take it away from you.<br><br>
1164
+ <strong>Implication:</strong> Build with confidence. Your designs and customizations are yours forever. Create a competitive advantage by extending cycleCAD for your industry.
1165
+ </div>
1166
+ </div>
1167
+
1168
+ <div class="card">
1169
+ <div class="card-title">🤖 AI-Powered Throughout — Built-In, FREE</div>
1170
+ <div class="card-subtitle">No separate plugin, no monthly fees, no API keys needed.</div>
1171
+ <div style="color: #CBD5E1;">
1172
+ <strong>Fusion 360:</strong> Basic AI in Autodesk Generative Design (extra cost). Requires Autodesk's cloud. Limited to topology optimization only.<br><br>
1173
+ <strong>cycleCAD:</strong>
1174
+ <ul style="margin-top: 12px; margin-left: 20px;">
1175
+ <li>✓ <strong>AI Chatbot:</strong> Ask questions about your design. "How much does this part weigh?" "Can I 3D print this?"</li>
1176
+ <li>✓ <strong>Part Identifier:</strong> Upload a photo, AI identifies part type + searches for suppliers (McMaster-Carr, Misumi, etc.)</li>
1177
+ <li>✓ <strong>Design Review:</strong> AI critiques your design. "This edge is too sharp for injection molding." "You can reduce wall thickness here."</li>
1178
+ <li>✓ <strong>NL Search:</strong> "Show me all parts with walls thinner than 1mm" — plain English queries</li>
1179
+ <li>✓ <strong>Text-to-CAD:</strong> "Create a cylinder 50mm diameter 80mm tall" — voice or text commands</li>
1180
+ <li>✓ <strong>Batch Scan:</strong> Import 200-part assembly, AI identifies every part automatically, creates smart BOM with pricing</li>
1181
+ </ul><br>
1182
+ <strong>Implication:</strong> AI is not a luxury feature. It's part of your design workflow. Spend less time on grunt work, more time on creativity.
1183
+ </div>
1184
+ </div>
1185
+
1186
+ <div class="card">
1187
+ <div class="card-title">🔌 Agent-First API — 55+ Commands</div>
1188
+ <div class="card-subtitle">Build automation. Build integrations. Build your own agents.</div>
1189
+ <div style="color: #CBD5E1;">
1190
+ <strong>Fusion 360:</strong> Script API (Python, C++). Limited commands. Steep learning curve. No MCP or REST API. Agents cannot drive Fusion 360 at scale.<br><br>
1191
+ <strong>cycleCAD:</strong>
1192
+ <ul style="margin-top: 12px; margin-left: 20px;">
1193
+ <li>✓ <strong>55+ JSON-RPC commands:</strong> shape.*, feature.*, assembly.*, render.*, validate.*, export.*</li>
1194
+ <li>✓ <strong>REST API:</strong> HTTP POST to create parts, apply operations, export models</li>
1195
+ <li>✓ <strong>MCP Server:</strong> Hook into Claude, other AI agents, automation platforms</li>
1196
+ <li>✓ <strong>CLI Tool:</strong> `cyclecad shape.cylinder --radius 25 --height 80 > output.stl`</li>
1197
+ <li>✓ <strong>WebSocket:</strong> Real-time bidirectional commands</li>
1198
+ <li>✓ <strong>Self-describing:</strong> Call `getSchema()` to introspect API from any language</li>
1199
+ </ul><br>
1200
+ <strong>Example use cases:</strong>
1201
+ <ul style="margin-top: 12px; margin-left: 20px;">
1202
+ <li>• Batch generate 1000 part variations from parameters</li>
1203
+ <li>• AI agent designs mounting brackets automatically</li>
1204
+ <li>• CAM workflow: design → cost estimate → manufacturing quote (all automated)</li>
1205
+ <li>• Parametric generator: input customer requirements → output design files</li>
1206
+ <li>• Integration with ERP/PLM systems</li>
1207
+ </ul>
1208
+ </div>
1209
+ </div>
1210
+
1211
+ <div class="card">
1212
+ <div class="card-title">📁 Inventor Import — Native .ipt & .iam</div>
1213
+ <div class="card-subtitle">Preserve parametrics. No conversion needed.</div>
1214
+ <div style="color: #CBD5E1;">
1215
+ <strong>Fusion 360:</strong> Supports STEP import only. Autodesk Inventor (.ipt) must be converted to STEP first (loses all parameters, constraints, feature tree).<br><br>
1216
+ <strong>cycleCAD:</strong> Native .ipt and .iam import. Full feature tree preserved. Dimensions, constraints, design intent all visible and editable.<br><br>
1217
+ <strong>Why it matters:</strong> If you have legacy Inventor designs (Autodesk's own product!), cycleCAD can actually read them better than Fusion 360 can. You can modify existing designs without rebuilding from scratch.
1218
+ </div>
1219
+ </div>
1220
+
1221
+ <div class="card">
1222
+ <div class="card-title">🔬 ExplodeView Integration — 40+ Analysis Tools</div>
1223
+ <div class="card-subtitle">399-part assemblies with AI-powered insights.</div>
1224
+ <div style="color: #CBD5E1;">
1225
+ <strong>Fusion 360:</strong> Viewer for exploded views. Cost estimation requires third-party plugins (Fusion 360 Jobs, Xometry, etc.). No maintenance scheduling, thermal analysis, or service manuals.<br><br>
1226
+ <strong>cycleCAD:</strong> Integrated ExplodeView with:
1227
+ <ul style="margin-top: 12px; margin-left: 20px;">
1228
+ <li>✓ <strong>BOM with cost estimation:</strong> Auto-fetch prices from McMaster-Carr</li>
1229
+ <li>✓ <strong>Weight analysis:</strong> Per-part, per-assembly, material density</li>
1230
+ <li>✓ <strong>Thermal heatmap:</strong> Part type → temperature range visualization</li>
1231
+ <li>✓ <strong>Maintenance schedule:</strong> AI generates 5-year service plan by part criticality</li>
1232
+ <li>✓ <strong>Service manual generation:</strong> Auto-create HTML/PDF field tech manuals</li>
1233
+ <li>✓ <strong>Wear timeline:</strong> Gantt chart showing replacement schedules</li>
1234
+ <li>✓ <strong>AR scanner:</strong> Point phone at machine, see interactive exploded view</li>
1235
+ <li>✓ <strong>Fastener detection:</strong> 12 bolt patterns, auto-find torque specs</li>
1236
+ <li>✓ <strong>Clearance analysis:</strong> Check distances between 200+ parts</li>
1237
+ <li>✓ <strong>Assembly validator:</strong> Detect missing parts, overconstraint, design issues</li>
1238
+ </ul><br>
1239
+ <strong>Cost comparison:</strong> This would be $500-2000/mo in separate SaaS tools. Included free with cycleCAD.
1240
+ </div>
1241
+ </div>
1242
+
1243
+ <div class="card">
1244
+ <div class="card-title">💰 $CYCLE Token Economy — Earn While You Share</div>
1245
+ <div class="card-subtitle">Publish designs, earn credits. Share models, get paid.</div>
1246
+ <div style="color: #CBD5E1;">
1247
+ <strong>Fusion 360:</strong> No monetization. Design is locked in Autodesk's ecosystem. If you want to sell your designs, you must move them out of Fusion 360 first (conversion headaches).<br><br>
1248
+ <strong>cycleCAD:</strong>
1249
+ <ul style="margin-top: 12px; margin-left: 20px;">
1250
+ <li>✓ Publish designs to marketplace</li>
1251
+ <li>✓ Set access tiers (free, $5, $50, enterprise)</li>
1252
+ <li>✓ Earn 70-90% creator royalties</li>
1253
+ <li>✓ AI agents purchase models automatically</li>
1254
+ <li>✓ Build CAD IP portfolio that generates passive income</li>
1255
+ <li>✓ Token system: save on operations, earn on library, cash out to USDC/ETH</li>
1256
+ </ul><br>
1257
+ <strong>Implication:</strong> cycleCAD can be your side hustle. Design parametric library fixtures → publish → earn $100/mo passive income per model.
1258
+ </div>
1259
+ </div>
1260
+
1261
+ <div class="card">
1262
+ <div class="card-title">📱 Mobile Viewer — Design on Your Phone</div>
1263
+ <div class="card-subtitle">Phone app (native or PWA) for reviewing designs on the go.</div>
1264
+ <div style="color: #CBD5E1;">
1265
+ <strong>Fusion 360:</strong> Mobile viewer (view-only). Cannot edit or create designs on phone.<br><br>
1266
+ <strong>cycleCAD:</strong> Full PWA (progressive web app) for iOS and Android. Design on your phone if needed (UI optimized for touch). Offline mode works too.
1267
+ </div>
1268
+ </div>
1269
+
1270
+ <div class="card">
1271
+ <div class="card-title">🐳 Docker Self-Hosting — Keep Your Data</div>
1272
+ <div class="card-subtitle">Run on your servers. Own your infrastructure.</div>
1273
+ <div style="color: #CBD5E1;">
1274
+ <strong>Fusion 360:</strong> Cloud-locked. Autodesk's servers. Must trust their compliance, data center choice, SLA.<br><br>
1275
+ <strong>cycleCAD:</strong> Full Docker stack (Dockerfile provided). Deploy on:
1276
+ <ul style="margin-top: 12px; margin-left: 20px;">
1277
+ <li>✓ Your own AWS/Azure/GCP account</li>
1278
+ <li>✓ On-premise servers (manufacturing floor)</li>
1279
+ <li>✓ Air-gapped (no internet required)</li>
1280
+ <li>✓ HIPAA/SOC2 compliant (your choice of hosting)</li>
1281
+ </ul><br>
1282
+ <strong>Implication:</strong> Pharma companies, government contractors, defense firms can use cycleCAD. Fusion 360's cloud-only model doesn't work for them.
1283
+ </div>
1284
+ </div>
1285
+ </div>
1286
+
1287
+ <!-- Tab 6: Migration Guide -->
1288
+ <div id="migration" class="tab-content">
1289
+ <h2 style="margin-bottom: 30px; font-size: 28px;">How to Migrate from Fusion 360 to cycleCAD</h2>
1290
+
1291
+ <div class="step">
1292
+ <span class="step-number">1</span>
1293
+ <div class="step-title">Export Your Designs from Fusion 360</div>
1294
+ <div class="step-content">
1295
+ <strong>STEP Format (recommended):</strong><br>
1296
+ File → Export → STEP (.step) — preserves geometry, loses parametrics<br><br>
1297
+ <strong>Native Format:</strong><br>
1298
+ If you have Inventor files (.iam/.ipt), cycleCAD can import them directly (better than Fusion 360 can).<br><br>
1299
+ <strong>What you get:</strong> 3D geometry, assembly structure, part names, metadata<br>
1300
+ <strong>What you lose:</strong> Fusion 360 feature tree (rebuild operations), sketches, constraints
1301
+ </div>
1302
+ </div>
1303
+
1304
+ <div class="step">
1305
+ <span class="step-number">2</span>
1306
+ <div class="step-title">Import Into cycleCAD</div>
1307
+ <div class="step-content">
1308
+ Go to <strong>cyclecad.com/app</strong><br>
1309
+ Click <strong>File → Import</strong><br>
1310
+ Select your STEP file<br>
1311
+ cycleCAD will parse the geometry and create a 3D view<br><br>
1312
+ <strong>Note:</strong> Your design is now parametric again. You can add new operations, modify dimensions, export as STEP for CAM.
1313
+ </div>
1314
+ </div>
1315
+
1316
+ <div class="step">
1317
+ <span class="step-number">3</span>
1318
+ <div class="step-title">Verify Assembly Structure</div>
1319
+ <div class="step-content">
1320
+ Check the <strong>Model Tree</strong> (left panel) to see components<br>
1321
+ Use <strong>ExplodeView</strong> (integrated) to visualize assembly<br>
1322
+ Verify <strong>BOM</strong> (Bill of Materials) with AI auto-identification<br>
1323
+ Check <strong>assembly constraints</strong> — cycleCAD shows mate references if available
1324
+ </div>
1325
+ </step>
1326
+
1327
+ <div class="step">
1328
+ <span class="step-number">4</span>
1329
+ <div class="step-title">Feature Mapping: Fusion → cycleCAD Equivalent</div>
1330
+ <div class="step-content">
1331
+ <div class="collapsible" onclick="toggleCollapsible(this)">
1332
+ <div class="collapsible-header">
1333
+ <span>Sketch Features</span>
1334
+ <span class="collapsible-toggle">▼</span>
1335
+ </div>
1336
+ <div class="collapsible-content">
1337
+ Fusion 360 → cycleCAD<br>
1338
+ • Line → Sketch Line ✓<br>
1339
+ • Rectangle → Sketch Rectangle ✓<br>
1340
+ • Circle → Sketch Circle ✓<br>
1341
+ • Arc → Sketch Arc ✓<br>
1342
+ • Spline → Sketch Spline ✓<br>
1343
+ • Constraints → Constraint Solver (12 types) ✓<br>
1344
+ • Auto-Constrain → Available ✓<br>
1345
+ • Dimension → Linear/Angular/Radial ✓
1346
+ </div>
1347
+ </div>
1348
+
1349
+ <div class="collapsible" onclick="toggleCollapsible(this)">
1350
+ <div class="collapsible-header">
1351
+ <span>Solid Operations</span>
1352
+ <span class="collapsible-toggle">▼</span>
1353
+ </div>
1354
+ <div class="collapsible-content">
1355
+ Fusion 360 → cycleCAD<br>
1356
+ • Extrude → Extrude ✓<br>
1357
+ • Revolve → Revolve ✓<br>
1358
+ • Sweep → Sweep (with path) ✓<br>
1359
+ • Loft → Loft (between profiles) ✓<br>
1360
+ • Hole → Hole (simple, counterbore, countersink) ✓<br>
1361
+ • Fillet → Fillet (approximate with torus) 🟡<br>
1362
+ • Chamfer → Chamfer (edge) 🟡<br>
1363
+ • Shell → Shell (hollow) ✓<br>
1364
+ • Pattern → Rectangular/Circular pattern ✓<br>
1365
+ • Mirror → Mirror across plane ✓<br>
1366
+ • Combine → Boolean Union/Cut/Intersect 🟡<br>
1367
+ • Draft → Draft angle ✓
1368
+ </div>
1369
+ </div>
1370
+
1371
+ <div class="collapsible" onclick="toggleCollapsible(this)">
1372
+ <div class="collapsible-header">
1373
+ <span>Assembly Features</span>
1374
+ <span class="collapsible-toggle">▼</span>
1375
+ </div>
1376
+ <div class="collapsible-content">
1377
+ Fusion 360 → cycleCAD<br>
1378
+ • New Component → Create part in assembly ✓<br>
1379
+ • Joint (Rigid) → Rigid joint ✓<br>
1380
+ • Joint (Revolute) → Revolute joint ✓<br>
1381
+ • Joint (Slider) → Slider joint ✓<br>
1382
+ • Contact Set → Contact constraint 🟡<br>
1383
+ • Exploded View → ExplodeView integration ✓<br>
1384
+ • BOM → Smart BOM with AI ✓
1385
+ </div>
1386
+ </div>
1387
+
1388
+ <div class="collapsible" onclick="toggleCollapsible(this)">
1389
+ <div class="collapsible-header">
1390
+ <span>File Formats</span>
1391
+ <span class="collapsible-toggle">▼</span>
1392
+ </div>
1393
+ <div class="collapsible-content">
1394
+ Fusion 360 → cycleCAD<br>
1395
+ • STEP Import ✓ → STEP Import ✓<br>
1396
+ • Inventor (.ipt) ✗ → Inventor (.ipt) ✓ (cycleCAD wins!)<br>
1397
+ • STL Export ✓ → STL Export ✓<br>
1398
+ • OBJ Export ✓ → OBJ Export ✓<br>
1399
+ • glTF Export ✓ → glTF Export ✓<br>
1400
+ • PDF Drawing → DXF/PDF Export ✓<br>
1401
+ • Parasolid (.x_t) ✓ → Parasolid via STEP ✓
1402
+ </div>
1403
+ </div>
1404
+
1405
+ <div class="collapsible" onclick="toggleCollapsible(this)">
1406
+ <div class="collapsible-header">
1407
+ <span>Analysis Tools (cycleCAD Extras)</span>
1408
+ <span class="collapsible-toggle">▼</span>
1409
+ </div>
1410
+ <div class="collapsible-content">
1411
+ These are BONUS features cycleCAD includes that Fusion 360 doesn't have:<br>
1412
+ • Weight estimation ✓<br>
1413
+ • Cost analysis ✓<br>
1414
+ • Maintenance schedule ✓<br>
1415
+ • Thermal heatmap ✓<br>
1416
+ • Fastener detection ✓<br>
1417
+ • Clearance check ✓<br>
1418
+ • Assembly validator ✓<br>
1419
+ • Service manual generator ✓<br>
1420
+ • Wear timeline (5-year forecast) ✓
1421
+ </div>
1422
+ </div>
1423
+ </div>
1424
+ </div>
1425
+
1426
+ <div class="step">
1427
+ <span class="step-number">5</span>
1428
+ <div class="step-title">Known Limitations & Workarounds</div>
1429
+ <div class="step-content">
1430
+ <strong>Limitation 1: Fillet & Chamfer approximations</strong><br>
1431
+ cycleCAD uses torus-based approximations, not real edge rounding (Fusion 360 uses actual BREP kernel).<br>
1432
+ <em>Workaround:</em> Export to STEP, use OpenCascade.js backend for real B-Rep boolean and fillet operations (in progress).<br><br>
1433
+
1434
+ <strong>Limitation 2: Limited CAM (G-code)</strong><br>
1435
+ cycleCAD has basic 3D slicing (FDM), not industrial CAM with 5-axis toolpaths.<br>
1436
+ <em>Workaround:</em> Export STL to Fusion 360 CAM, Fusion 360 CAM extension, or Kiri:Moto (free). cycleCAD integrates with Kiri:Moto one-click export.<br><br>
1437
+
1438
+ <strong>Limitation 3: Simulation (FEA, Thermal)</strong><br>
1439
+ cycleCAD doesn't have built-in FEA solver yet. Fusion 360 has mature simulation.<br>
1440
+ <em>Workaround:</em> Export STEP to free tools (FreeCAD, Salome, Code_Aster) or cloud FEA services (SimScale, OnScale).<br><br>
1441
+
1442
+ <strong>Limitation 4: Sheet Metal unfolding</strong><br>
1443
+ cycleCAD has sheet metal features (bend, flange, tab, slot) but unfold calculations are approximated.<br>
1444
+ <em>Workaround:</em> Use Fusion 360 CAM for flat patterns, or use specialized sheet metal software (Stratasys, Amada).<br><br>
1445
+
1446
+ <strong>Fusion 360 → cycleCAD Win: Inventor Import</strong><br>
1447
+ cycleCAD can import native Inventor .ipt/.iam files while Fusion 360 cannot. If you have legacy Inventor designs, cycleCAD is actually better for migration.
1448
+ </div>
1449
+ </div>
1450
+
1451
+ <div class="step">
1452
+ <span class="step-number">6</span>
1453
+ <div class="step-title">Leverage cycleCAD's Extras</div>
1454
+ <div class="step-content">
1455
+ Now that you're in cycleCAD, use features Fusion 360 doesn't have:<br><br>
1456
+
1457
+ <strong>AI Chatbot:</strong> Ask "Is this part 3D printable?" and AI reviews geometry, material, layer directions.<br><br>
1458
+
1459
+ <strong>Part Identifier:</strong> Upload photo of fastener → AI identifies bolt type → links to McMaster-Carr for instant ordering.<br><br>
1460
+
1461
+ <strong>Design Review:</strong> AI critiques your design. "This fillet radius is too small for CNC. Use 0.5mm minimum." "Your wall thickness is fine for injection molding."<br><br>
1462
+
1463
+ <strong>Smart BOM:</strong> Generate bill of materials with supplier links and pricing, sorted by cost.<br><br>
1464
+
1465
+ <strong>ExplodeView Integration:</strong> Visualize 399-part assemblies with interactive explosions, maintenance schedules, thermal analysis, and more.<br><br>
1466
+
1467
+ <strong>Service Manual Generator:</strong> Auto-create field technician manual with part numbers, torque specs, replacement schedules, and AR links.
1468
+ </div>
1469
+ </div>
1470
+
1471
+ <div class="step">
1472
+ <span class="step-number">7</span>
1473
+ <div class="step-title">Community & Resources</div>
1474
+ <div class="step-content">
1475
+ <strong>Documentation:</strong> cyclecad.com/docs<br>
1476
+ <strong>GitHub:</strong> github.com/vvlars-cmd/cyclecad<br>
1477
+ <strong>Discord:</strong> Join community chat for migration help<br>
1478
+ <strong>LinkedIn:</strong> Follow @cyclecad for updates and use cases<br>
1479
+ <strong>YouTube:</strong> Fusion 360 vs cycleCAD migration tutorials (coming soon)<br>
1480
+ <strong>Email support:</strong> hello@cyclecad.com for migration questions
1481
+ </div>
1482
+ </div>
1483
+
1484
+ <div class="callout">
1485
+ <div class="callout-title">🚀 Your Fusion 360 Exit Strategy</div>
1486
+ <div class="callout-text">
1487
+ <strong>Month 1:</strong> Export key designs as STEP. Test import in cycleCAD. Verify assembly structure and BOM.<br><br>
1488
+ <strong>Month 2:</strong> Re-create one complex part from scratch in cycleCAD (learn the UI). Use AI chatbot for questions.<br><br>
1489
+ <strong>Month 3:</strong> Batch-import all STEP files. Use ExplodeView to verify assemblies. Generate service manuals with AI.<br><br>
1490
+ <strong>Month 4+:</strong> Sunset Fusion 360 subscription. Save $545/yr. Maintain designs in cycleCAD. Publish to marketplace and earn token royalties.<br><br>
1491
+
1492
+ <strong>ROI:</strong> You break even on migration effort in ~3 months (saved subscription cost). Then it's pure savings + new capabilities (AI, agents, analysis tools).
1493
+ </div>
1494
+ </div>
1495
+ </div>
1496
+ </main>
1497
+
1498
+ <script>
1499
+ // Feature matrix data
1500
+ const features = [
1501
+ // SKETCH FEATURES
1502
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Line', fusion360: true, cyclecad: true, notes: '' },
1503
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Rectangle', fusion360: true, cyclecad: true, notes: '' },
1504
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Circle', fusion360: true, cyclecad: true, notes: '' },
1505
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Arc', fusion360: true, cyclecad: true, notes: '' },
1506
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Ellipse', fusion360: true, cyclecad: true, notes: '' },
1507
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Spline (control point)', fusion360: true, cyclecad: true, notes: '' },
1508
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Spline (fit point)', fusion360: true, cyclecad: true, notes: '' },
1509
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Polygon', fusion360: true, cyclecad: true, notes: '' },
1510
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Slot (center point)', fusion360: true, cyclecad: true, notes: '' },
1511
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Slot (3-point)', fusion360: true, cyclecad: true, notes: '' },
1512
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Slot (center-to-center)', fusion360: true, cyclecad: true, notes: '' },
1513
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Text', fusion360: true, cyclecad: true, notes: '' },
1514
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Point', fusion360: true, cyclecad: true, notes: '' },
1515
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Construction geometry', fusion360: true, cyclecad: true, notes: '' },
1516
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Trim', fusion360: true, cyclecad: true, notes: '' },
1517
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Extend', fusion360: true, cyclecad: true, notes: '' },
1518
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Offset', fusion360: true, cyclecad: true, notes: '' },
1519
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Mirror', fusion360: true, cyclecad: true, notes: '' },
1520
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Circular pattern', fusion360: true, cyclecad: true, notes: '' },
1521
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Rectangular pattern', fusion360: true, cyclecad: true, notes: '' },
1522
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Constraints (13+ types)', fusion360: true, cyclecad: true, notes: 'Coincident, horizontal, vertical, parallel, perpendicular, tangent, equal, fixed, concentric, symmetric, distance, angle, perpendicular' },
1523
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Constraint solver', fusion360: true, cyclecad: true, notes: 'Newton-Raphson iterative solver' },
1524
+ { category: 'DESIGN — Sketch (30+ features)', name: 'DOF analysis', fusion360: true, cyclecad: true, notes: 'Detect over/under-constrained sketches' },
1525
+ { category: 'DESIGN — Sketch (30+ features)', name: 'Auto-constrain', fusion360: true, cyclecad: true, notes: 'Detect and apply constraints automatically' },
1526
+
1527
+ // SOLID MODELING
1528
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Extrude', fusion360: true, cyclecad: true, notes: '' },
1529
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Revolve', fusion360: true, cyclecad: true, notes: '' },
1530
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Sweep', fusion360: true, cyclecad: true, notes: 'Profile along path with twist' },
1531
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Loft', fusion360: true, cyclecad: true, notes: 'Between profiles with interpolation' },
1532
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Hole (simple)', fusion360: true, cyclecad: true, notes: '' },
1533
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Hole (counterbore)', fusion360: true, cyclecad: true, notes: '' },
1534
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Hole (countersink)', fusion360: true, cyclecad: true, notes: '' },
1535
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Thread', fusion360: true, cyclecad: true, notes: 'Helical thread generation' },
1536
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Fillet (edge)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: torus approximation' },
1537
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Chamfer (edge)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: cone approximation' },
1538
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Shell', fusion360: true, cyclecad: true, notes: 'Hollow geometry with thickness' },
1539
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Draft', fusion360: true, cyclecad: true, notes: 'Taper angle for molding' },
1540
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Split body', fusion360: true, cyclecad: false, notes: 'Planned' },
1541
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Mirror', fusion360: true, cyclecad: true, notes: 'Reflect across plane' },
1542
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Rectangular pattern', fusion360: true, cyclecad: true, notes: '' },
1543
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Circular pattern', fusion360: true, cyclecad: true, notes: '' },
1544
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Combine (union)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: visual indicator only (will upgrade to real CSG)' },
1545
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Combine (cut)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: visual indicator only' },
1546
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Combine (intersect)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: visual indicator only' },
1547
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Thicken', fusion360: true, cyclecad: true, notes: 'Surface to solid conversion' },
1548
+ { category: 'DESIGN — Solid Modeling (25+ features)', name: 'Replace face', fusion360: true, cyclecad: false, notes: 'Planned' },
1549
+
1550
+ // ASSEMBLY
1551
+ { category: 'ASSEMBLY (15+ features)', name: 'New component', fusion360: true, cyclecad: true, notes: '' },
1552
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (rigid)', fusion360: true, cyclecad: true, notes: 'Fixed mate' },
1553
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (revolute)', fusion360: true, cyclecad: true, notes: 'Rotation around axis' },
1554
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (slider)', fusion360: true, cyclecad: true, notes: 'Linear translation' },
1555
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (cylindrical)', fusion360: true, cyclecad: true, notes: 'Rotation + translation' },
1556
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (pin-slot)', fusion360: true, cyclecad: 'partial', notes: 'cycleCAD: basic support' },
1557
+ { category: 'ASSEMBLY (15+ features)', name: 'Joint (planar)', fusion360: true, cyclecad: true, notes: 'Mate to face' },
1558
+ { category: 'ASSEMBLY (15+ features)', name: 'Contact set', fusion360: true, cyclecad: 'partial', notes: 'Collision detection' },
1559
+ { category: 'ASSEMBLY (15+ features)', name: 'Motion study', fusion360: true, cyclecad: false, notes: 'Planned' },
1560
+ { category: 'ASSEMBLY (15+ features)', name: 'Interference check', fusion360: true, cyclecad: true, notes: 'Collision detection' },
1561
+ { category: 'ASSEMBLY (15+ features)', name: 'Exploded view', fusion360: true, cyclecad: true, notes: 'Via ExplodeView integration' },
1562
+ { category: 'ASSEMBLY (15+ features)', name: 'BOM (Bill of Materials)', fusion360: true, cyclecad: true, notes: 'With AI auto-identification' },
1563
+ { category: 'ASSEMBLY (15+ features)', name: 'Component pattern', fusion360: true, cyclecad: true, notes: 'Circular/rectangular array' },
1564
+
1565
+ // DRAWING
1566
+ { category: 'DRAWING (15+ features)', name: 'Base view', fusion360: true, cyclecad: true, notes: 'From 3D model' },
1567
+ { category: 'DRAWING (15+ features)', name: 'Projected view', fusion360: true, cyclecad: true, notes: '' },
1568
+ { category: 'DRAWING (15+ features)', name: 'Section view', fusion360: true, cyclecad: true, notes: 'Cut section' },
1569
+ { category: 'DRAWING (15+ features)', name: 'Detail view', fusion360: true, cyclecad: true, notes: 'Zoomed callout' },
1570
+ { category: 'DRAWING (15+ features)', name: 'Linear dimension', fusion360: true, cyclecad: true, notes: '' },
1571
+ { category: 'DRAWING (15+ features)', name: 'Angular dimension', fusion360: true, cyclecad: true, notes: '' },
1572
+ { category: 'DRAWING (15+ features)', name: 'Radial dimension', fusion360: true, cyclecad: true, notes: '' },
1573
+ { category: 'DRAWING (15+ features)', name: 'GD&T symbols', fusion360: true, cyclecad: true, notes: 'Geometric dimensioning & tolerancing' },
1574
+ { category: 'DRAWING (15+ features)', name: 'Surface finish', fusion360: true, cyclecad: true, notes: 'Ra, Rz annotations' },
1575
+ { category: 'DRAWING (15+ features)', name: 'Centerlines', fusion360: true, cyclecad: true, notes: '' },
1576
+ { category: 'DRAWING (15+ features)', name: 'Balloons', fusion360: true, cyclecad: true, notes: 'Assembly callouts' },
1577
+ { category: 'DRAWING (15+ features)', name: 'BOM table', fusion360: true, cyclecad: true, notes: 'On drawing' },
1578
+ { category: 'DRAWING (15+ features)', name: 'PDF export', fusion360: true, cyclecad: true, notes: '' },
1579
+ { category: 'DRAWING (15+ features)', name: 'DXF export', fusion360: true, cyclecad: true, notes: '2D projection' },
1580
+
1581
+ // FILE FORMATS
1582
+ { category: 'FILE FORMATS (25+ features)', name: 'STEP import', fusion360: true, cyclecad: true, notes: '3D geometry' },
1583
+ { category: 'FILE FORMATS (25+ features)', name: 'STEP export', fusion360: true, cyclecad: true, notes: 'Full B-Rep (via OpenCascade.js)' },
1584
+ { category: 'FILE FORMATS (25+ features)', name: 'IGES import', fusion360: true, cyclecad: true, notes: 'Legacy format' },
1585
+ { category: 'FILE FORMATS (25+ features)', name: 'STL import', fusion360: true, cyclecad: true, notes: 'Mesh geometry' },
1586
+ { category: 'FILE FORMATS (25+ features)', name: 'STL export', fusion360: true, cyclecad: true, notes: 'ASCII + binary' },
1587
+ { category: 'FILE FORMATS (25+ features)', name: 'OBJ import', fusion360: true, cyclecad: true, notes: '' },
1588
+ { category: 'FILE FORMATS (25+ features)', name: 'OBJ export', fusion360: true, cyclecad: true, notes: '' },
1589
+ { category: 'FILE FORMATS (25+ features)', name: '3MF import', fusion360: true, cyclecad: true, notes: '3D print format' },
1590
+ { category: 'FILE FORMATS (25+ features)', name: '3MF export', fusion360: true, cyclecad: true, notes: '3D print format' },
1591
+ { category: 'FILE FORMATS (25+ features)', name: 'glTF/GLB import', fusion360: true, cyclecad: true, notes: 'Web 3D standard' },
1592
+ { category: 'FILE FORMATS (25+ features)', name: 'glTF/GLB export', fusion360: true, cyclecad: true, notes: 'Web 3D standard' },
1593
+ { category: 'FILE FORMATS (25+ features)', name: 'PLY import', fusion360: true, cyclecad: true, notes: 'Point cloud' },
1594
+ { category: 'FILE FORMATS (25+ features)', name: 'PLY export', fusion360: true, cyclecad: true, notes: 'Point cloud' },
1595
+ { category: 'FILE FORMATS (25+ features)', name: 'FBX import', fusion360: true, cyclecad: true, notes: 'Autodesk format' },
1596
+ { category: 'FILE FORMATS (25+ features)', name: 'DXF import', fusion360: true, cyclecad: true, notes: '2D drawing' },
1597
+ { category: 'FILE FORMATS (25+ features)', name: 'DXF export', fusion360: true, cyclecad: true, notes: '2D drawing' },
1598
+ { category: 'FILE FORMATS (25+ features)', name: 'DWG import', fusion360: true, cyclecad: false, notes: 'Planned' },
1599
+ { category: 'FILE FORMATS (25+ features)', name: 'SolidWorks (.sldprt)', fusion360: true, cyclecad: false, notes: 'Via STEP conversion' },
1600
+ { category: 'FILE FORMATS (25+ features)', name: 'Inventor (.ipt)', fusion360: false, cyclecad: true, notes: 'cycleCAD advantage: native import preserves parametrics' },
1601
+ { category: 'FILE FORMATS (25+ features)', name: 'Inventor (.iam)', fusion360: false, cyclecad: true, notes: 'cycleCAD advantage: full assembly structure' },
1602
+ { category: 'FILE FORMATS (25+ features)', name: 'Parasolid (.x_t)', fusion360: true, cyclecad: true, notes: 'Via STEP' },
1603
+ { category: 'FILE FORMATS (25+ features)', name: 'PDF export', fusion360: true, cyclecad: true, notes: 'Drawing sheets' },
1604
+ { category: 'FILE FORMATS (25+ features)', name: 'SVG export', fusion360: true, cyclecad: true, notes: '2D vector' },
1605
+ { category: 'FILE FORMATS (25+ features)', name: 'PNG/JPEG export', fusion360: true, cyclecad: true, notes: '2D image' },
1606
+
1607
+ // AI & AGENTS
1608
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'AI Chatbot', fusion360: false, cyclecad: true, notes: 'Gemini Flash + Groq (free, no API keys needed)' },
1609
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'AI Part Identifier', fusion360: false, cyclecad: true, notes: 'Photo → classify → supplier links' },
1610
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'Batch AI Scan', fusion360: false, cyclecad: true, notes: 'Auto-identify all parts in assembly' },
1611
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'Smart NL Search', fusion360: false, cyclecad: true, notes: 'Natural language queries: "Show parts >5cm"' },
1612
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'Agent API (55+ commands)', fusion360: false, cyclecad: true, notes: 'REST, MCP, CLI, WebSocket' },
1613
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'MCP Server', fusion360: false, cyclecad: true, notes: 'Model Context Protocol for AI integration' },
1614
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'REST API', fusion360: false, cyclecad: true, notes: 'HTTP endpoints for all operations' },
1615
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'CLI Tool', fusion360: false, cyclecad: true, notes: 'Command-line interface for automation' },
1616
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'Design Review AI', fusion360: false, cyclecad: true, notes: 'Auto-critique designs (DFM, manufacturability)' },
1617
+ { category: 'AI & AGENTS (cycleCAD exclusive)', name: 'Text-to-CAD', fusion360: false, cyclecad: true, notes: 'Voice/text commands generate geometry' },
1618
+ ];
1619
+
1620
+ // Initialize feature matrix on page load
1621
+ document.addEventListener('DOMContentLoaded', function() {
1622
+ populateFeatureMatrix();
1623
+ setupTabSwitching();
1624
+ setupSearch();
1625
+ });
1626
+
1627
+ function populateFeatureMatrix() {
1628
+ const tbody = document.getElementById('tableBody');
1629
+ tbody.innerHTML = '';
1630
+
1631
+ let currentCategory = '';
1632
+ let categoryId = 0;
1633
+
1634
+ features.forEach((feature, index) => {
1635
+ if (feature.category !== currentCategory) {
1636
+ currentCategory = feature.category;
1637
+ categoryId++;
1638
+
1639
+ // Add category header row
1640
+ const categoryRow = document.createElement('tr');
1641
+ categoryRow.classList.add('category');
1642
+ categoryRow.id = 'category-' + categoryId;
1643
+ categoryRow.onclick = () => toggleCategory(categoryId);
1644
+
1645
+ categoryRow.innerHTML = `
1646
+ <td colspan="4">
1647
+ <div class="category-header">
1648
+ <span>${currentCategory}</span>
1649
+ <span class="category-toggle">▼</span>
1650
+ </div>
1651
+ </td>
1652
+ `;
1653
+ tbody.appendChild(categoryRow);
1654
+ }
1655
+
1656
+ // Add feature row
1657
+ const row = document.createElement('tr');
1658
+ row.classList.add('category-rows');
1659
+ row.id = 'rows-' + categoryId;
1660
+
1661
+ const fusion360Status = feature.fusion360 ? '<span class="status-full">✅</span>' : '<span class="status-no">❌</span>';
1662
+ const cyclecadStatus = feature.cyclecad === true ? '<span class="status-full">✅</span>' :
1663
+ feature.cyclecad === 'partial' ? '<span class="status-partial">🟡</span>' :
1664
+ '<span class="status-planned">🔲</span>';
1665
+
1666
+ row.innerHTML = `
1667
+ <td class="feature-name">${feature.name}</td>
1668
+ <td class="status">${fusion360Status}</td>
1669
+ <td class="status">${cyclecadStatus}</td>
1670
+ <td>${feature.notes}</td>
1671
+ `;
1672
+ tbody.appendChild(row);
1673
+ });
1674
+
1675
+ // Expand first category by default
1676
+ expandCategory(1);
1677
+ }
1678
+
1679
+ function toggleCategory(categoryId) {
1680
+ const rows = document.getElementById('rows-' + categoryId);
1681
+ const toggle = document.getElementById('category-' + categoryId).querySelector('.category-toggle');
1682
+
1683
+ if (rows.classList.contains('expanded')) {
1684
+ rows.classList.remove('expanded');
1685
+ toggle.classList.add('collapsed');
1686
+ } else {
1687
+ rows.classList.add('expanded');
1688
+ toggle.classList.remove('collapsed');
1689
+ }
1690
+ }
1691
+
1692
+ function expandCategory(categoryId) {
1693
+ const rows = document.getElementById('rows-' + categoryId);
1694
+ const toggle = document.getElementById('category-' + categoryId).querySelector('.category-toggle');
1695
+ rows.classList.add('expanded');
1696
+ toggle.classList.remove('collapsed');
1697
+ }
1698
+
1699
+ function setupTabSwitching() {
1700
+ const tabBtns = document.querySelectorAll('.tab-btn');
1701
+ tabBtns.forEach(btn => {
1702
+ btn.addEventListener('click', function() {
1703
+ // Show search only on features tab
1704
+ const searchContainer = document.getElementById('searchContainer');
1705
+ if (this.textContent === 'Feature Matrix') {
1706
+ searchContainer.style.display = 'block';
1707
+ } else {
1708
+ searchContainer.style.display = 'none';
1709
+ }
1710
+ });
1711
+ });
1712
+ }
1713
+
1714
+ function switchTab(tabId) {
1715
+ // Hide all tabs
1716
+ const contents = document.querySelectorAll('.tab-content');
1717
+ contents.forEach(content => content.classList.remove('active'));
1718
+
1719
+ // Deactivate all buttons
1720
+ const buttons = document.querySelectorAll('.tab-btn');
1721
+ buttons.forEach(btn => btn.classList.remove('active'));
1722
+
1723
+ // Show selected tab
1724
+ document.getElementById(tabId).classList.add('active');
1725
+
1726
+ // Activate selected button
1727
+ event.target.classList.add('active');
1728
+
1729
+ // Show search only on features tab
1730
+ const searchContainer = document.getElementById('searchContainer');
1731
+ if (tabId === 'features') {
1732
+ searchContainer.style.display = 'block';
1733
+ } else {
1734
+ searchContainer.style.display = 'none';
1735
+ }
1736
+ }
1737
+
1738
+ function setupSearch() {
1739
+ const searchInput = document.getElementById('featureSearch2');
1740
+ if (searchInput) {
1741
+ searchInput.addEventListener('input', function(e) {
1742
+ const searchTerm = e.target.value.toLowerCase();
1743
+ const rows = document.querySelectorAll('.category-rows tr');
1744
+
1745
+ rows.forEach(row => {
1746
+ const featureName = row.querySelector('.feature-name')?.textContent.toLowerCase() || '';
1747
+ if (searchTerm === '' || featureName.includes(searchTerm)) {
1748
+ row.style.display = '';
1749
+ } else {
1750
+ row.style.display = 'none';
1751
+ }
1752
+ });
1753
+ });
1754
+ }
1755
+ }
1756
+
1757
+ function toggleCollapsible(element) {
1758
+ const content = element.querySelector('.collapsible-content');
1759
+ const toggle = element.querySelector('.collapsible-toggle');
1760
+
1761
+ if (content.classList.contains('show')) {
1762
+ content.classList.remove('show');
1763
+ toggle.classList.remove('open');
1764
+ } else {
1765
+ content.classList.add('show');
1766
+ toggle.classList.add('open');
1767
+ }
1768
+ }
1769
+ </script>
1770
+ </body>
1771
+ </html>