cyclecad 0.1.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/CNAME +1 -0
- package/app/docs/api-reference.html +1436 -0
- package/app/docs/examples.html +803 -0
- package/app/docs/getting-started.html +1620 -0
- package/app/duo-project-browser.html +1321 -0
- package/app/duo-rebuild-guide.html +861 -0
- package/app/index.html +1635 -0
- package/app/js/ai-chat.js +992 -0
- package/app/js/app.js +724 -0
- package/app/js/export.js +658 -0
- package/app/js/inventor-parser.js +1138 -0
- package/app/js/operations.js +689 -0
- package/app/js/params.js +523 -0
- package/app/js/reverse-engineer.js +1275 -0
- package/app/js/shortcuts.js +350 -0
- package/app/js/sketch.js +899 -0
- package/app/js/tree.js +479 -0
- package/app/js/viewport.js +643 -0
- package/app/samples/Leistenbuerstenblech.ipt +0 -0
- package/app/samples/Rahmen_Seite.iam +0 -0
- package/app/samples/TraegerHoehe1.ipt +0 -0
- package/index.html +1226 -0
- package/package.json +33 -0
|
@@ -0,0 +1,1436 @@
|
|
|
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>cycleCAD - API Reference</title>
|
|
7
|
+
<style>
|
|
8
|
+
* {
|
|
9
|
+
margin: 0;
|
|
10
|
+
padding: 0;
|
|
11
|
+
box-sizing: border-box;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
body {
|
|
15
|
+
background-color: #0d1117;
|
|
16
|
+
color: #c9d1d9;
|
|
17
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
|
|
18
|
+
line-height: 1.6;
|
|
19
|
+
display: flex;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
header {
|
|
23
|
+
background: linear-gradient(135deg, #1f6feb 0%, #388bfd 100%);
|
|
24
|
+
padding: 2rem 2rem;
|
|
25
|
+
border-bottom: 1px solid #30363d;
|
|
26
|
+
position: fixed;
|
|
27
|
+
top: 0;
|
|
28
|
+
left: 0;
|
|
29
|
+
right: 0;
|
|
30
|
+
z-index: 100;
|
|
31
|
+
box-shadow: 0 4px 12px rgba(31, 111, 235, 0.2);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
header h1 {
|
|
35
|
+
font-size: 1.8rem;
|
|
36
|
+
color: white;
|
|
37
|
+
margin-bottom: 0.5rem;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
header p {
|
|
41
|
+
font-size: 0.95rem;
|
|
42
|
+
color: rgba(255, 255, 255, 0.9);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.container {
|
|
46
|
+
display: flex;
|
|
47
|
+
margin-top: 120px;
|
|
48
|
+
min-height: calc(100vh - 120px);
|
|
49
|
+
width: 100%;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
aside {
|
|
53
|
+
width: 280px;
|
|
54
|
+
background: #161b22;
|
|
55
|
+
border-right: 1px solid #30363d;
|
|
56
|
+
padding: 2rem 0;
|
|
57
|
+
max-height: calc(100vh - 120px);
|
|
58
|
+
overflow-y: auto;
|
|
59
|
+
position: fixed;
|
|
60
|
+
left: 0;
|
|
61
|
+
top: 120px;
|
|
62
|
+
bottom: 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
aside nav {
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
gap: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
aside a {
|
|
72
|
+
padding: 0.75rem 1.5rem;
|
|
73
|
+
color: #8b949e;
|
|
74
|
+
text-decoration: none;
|
|
75
|
+
border-left: 3px solid transparent;
|
|
76
|
+
transition: all 0.2s ease;
|
|
77
|
+
font-size: 0.95rem;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
aside a:hover {
|
|
81
|
+
color: #58a6ff;
|
|
82
|
+
background: rgba(88, 166, 255, 0.1);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
aside a.active {
|
|
86
|
+
color: #58a6ff;
|
|
87
|
+
border-left-color: #58a6ff;
|
|
88
|
+
background: rgba(88, 166, 255, 0.05);
|
|
89
|
+
font-weight: 600;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
main {
|
|
93
|
+
flex: 1;
|
|
94
|
+
margin-left: 280px;
|
|
95
|
+
padding: 3rem;
|
|
96
|
+
max-width: 1000px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.section {
|
|
100
|
+
display: none;
|
|
101
|
+
animation: fadeIn 0.3s ease;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.section.active {
|
|
105
|
+
display: block;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@keyframes fadeIn {
|
|
109
|
+
from { opacity: 0; }
|
|
110
|
+
to { opacity: 1; }
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
h2 {
|
|
114
|
+
font-size: 2rem;
|
|
115
|
+
color: #58a6ff;
|
|
116
|
+
margin-bottom: 1.5rem;
|
|
117
|
+
padding-bottom: 1rem;
|
|
118
|
+
border-bottom: 2px solid #30363d;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
h3 {
|
|
122
|
+
font-size: 1.3rem;
|
|
123
|
+
color: #79c0ff;
|
|
124
|
+
margin-top: 2rem;
|
|
125
|
+
margin-bottom: 1rem;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
h4 {
|
|
129
|
+
font-size: 1.1rem;
|
|
130
|
+
color: #c9d1d9;
|
|
131
|
+
margin-top: 1.5rem;
|
|
132
|
+
margin-bottom: 0.75rem;
|
|
133
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
p {
|
|
137
|
+
margin-bottom: 1rem;
|
|
138
|
+
color: #c9d1d9;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.code-block {
|
|
142
|
+
background: #0d1117;
|
|
143
|
+
border: 1px solid #30363d;
|
|
144
|
+
border-radius: 6px;
|
|
145
|
+
padding: 1rem;
|
|
146
|
+
margin: 1rem 0;
|
|
147
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
148
|
+
font-size: 0.9rem;
|
|
149
|
+
overflow-x: auto;
|
|
150
|
+
color: #79c0ff;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.code-block code {
|
|
154
|
+
color: #79c0ff;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.parameter {
|
|
158
|
+
background: #161b22;
|
|
159
|
+
border-left: 3px solid #238636;
|
|
160
|
+
padding: 1rem;
|
|
161
|
+
margin: 1rem 0;
|
|
162
|
+
border-radius: 4px;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.parameter-name {
|
|
166
|
+
color: #79c0ff;
|
|
167
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
168
|
+
font-weight: 600;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.parameter-type {
|
|
172
|
+
color: #238636;
|
|
173
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
174
|
+
font-size: 0.9rem;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.parameter-desc {
|
|
178
|
+
color: #8b949e;
|
|
179
|
+
font-size: 0.95rem;
|
|
180
|
+
margin-top: 0.5rem;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.table-wrapper {
|
|
184
|
+
overflow-x: auto;
|
|
185
|
+
margin: 1.5rem 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
table {
|
|
189
|
+
width: 100%;
|
|
190
|
+
border-collapse: collapse;
|
|
191
|
+
font-size: 0.95rem;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
th {
|
|
195
|
+
background: #161b22;
|
|
196
|
+
color: #58a6ff;
|
|
197
|
+
padding: 1rem;
|
|
198
|
+
text-align: left;
|
|
199
|
+
border: 1px solid #30363d;
|
|
200
|
+
font-weight: 600;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
td {
|
|
204
|
+
padding: 0.75rem 1rem;
|
|
205
|
+
border: 1px solid #30363d;
|
|
206
|
+
color: #c9d1d9;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
tr:nth-child(even) {
|
|
210
|
+
background: #0d1117;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
tr:hover {
|
|
214
|
+
background: #1c2128;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
td code {
|
|
218
|
+
color: #79c0ff;
|
|
219
|
+
background: #0d1117;
|
|
220
|
+
padding: 0.2rem 0.4rem;
|
|
221
|
+
border-radius: 3px;
|
|
222
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
223
|
+
font-size: 0.9rem;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
.example {
|
|
227
|
+
background: #161b22;
|
|
228
|
+
border: 1px solid #238636;
|
|
229
|
+
border-radius: 6px;
|
|
230
|
+
padding: 1.5rem;
|
|
231
|
+
margin: 1.5rem 0;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.example-title {
|
|
235
|
+
color: #238636;
|
|
236
|
+
font-weight: 600;
|
|
237
|
+
margin-bottom: 0.75rem;
|
|
238
|
+
font-size: 0.95rem;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.example .code-block {
|
|
242
|
+
margin: 1rem 0 0 0;
|
|
243
|
+
background: #0d1117;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.note {
|
|
247
|
+
background: rgba(88, 166, 255, 0.1);
|
|
248
|
+
border-left: 3px solid #58a6ff;
|
|
249
|
+
padding: 1rem;
|
|
250
|
+
margin: 1.5rem 0;
|
|
251
|
+
border-radius: 4px;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.note strong {
|
|
255
|
+
color: #58a6ff;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.warning {
|
|
259
|
+
background: rgba(248, 81, 73, 0.1);
|
|
260
|
+
border-left: 3px solid #f85149;
|
|
261
|
+
padding: 1rem;
|
|
262
|
+
margin: 1.5rem 0;
|
|
263
|
+
border-radius: 4px;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.warning strong {
|
|
267
|
+
color: #f85149;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.command-list {
|
|
271
|
+
list-style: none;
|
|
272
|
+
padding: 0;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.command-list li {
|
|
276
|
+
background: #161b22;
|
|
277
|
+
border: 1px solid #30363d;
|
|
278
|
+
padding: 1rem;
|
|
279
|
+
margin-bottom: 1rem;
|
|
280
|
+
border-radius: 6px;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
.command-list li:hover {
|
|
284
|
+
border-color: #58a6ff;
|
|
285
|
+
box-shadow: 0 0 10px rgba(88, 166, 255, 0.1);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
.command-list code {
|
|
289
|
+
color: #79c0ff;
|
|
290
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
291
|
+
display: block;
|
|
292
|
+
margin-bottom: 0.5rem;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
.material-list {
|
|
296
|
+
display: grid;
|
|
297
|
+
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
298
|
+
gap: 1rem;
|
|
299
|
+
margin: 1.5rem 0;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.material-card {
|
|
303
|
+
background: #161b22;
|
|
304
|
+
border: 1px solid #30363d;
|
|
305
|
+
border-radius: 6px;
|
|
306
|
+
padding: 1rem;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
.material-card:hover {
|
|
310
|
+
border-color: #58a6ff;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.material-name {
|
|
314
|
+
color: #58a6ff;
|
|
315
|
+
font-weight: 600;
|
|
316
|
+
margin-bottom: 0.5rem;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.material-props {
|
|
320
|
+
font-size: 0.85rem;
|
|
321
|
+
color: #8b949e;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.material-props li {
|
|
325
|
+
list-style-position: inside;
|
|
326
|
+
margin-bottom: 0.25rem;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.shortcut-grid {
|
|
330
|
+
display: grid;
|
|
331
|
+
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
|
|
332
|
+
gap: 1rem;
|
|
333
|
+
margin: 1.5rem 0;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.shortcut-card {
|
|
337
|
+
background: #161b22;
|
|
338
|
+
border: 1px solid #30363d;
|
|
339
|
+
border-radius: 6px;
|
|
340
|
+
padding: 1rem;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.shortcut-key {
|
|
344
|
+
background: #238636;
|
|
345
|
+
color: white;
|
|
346
|
+
padding: 0.4rem 0.6rem;
|
|
347
|
+
border-radius: 3px;
|
|
348
|
+
font-family: 'Monaco', 'Courier New', monospace;
|
|
349
|
+
font-weight: 600;
|
|
350
|
+
display: inline-block;
|
|
351
|
+
margin-bottom: 0.5rem;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.shortcut-desc {
|
|
355
|
+
font-size: 0.9rem;
|
|
356
|
+
color: #c9d1d9;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
footer {
|
|
360
|
+
background: #161b22;
|
|
361
|
+
border-top: 1px solid #30363d;
|
|
362
|
+
padding: 2rem;
|
|
363
|
+
text-align: center;
|
|
364
|
+
color: #8b949e;
|
|
365
|
+
margin-left: 280px;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
footer a {
|
|
369
|
+
color: #58a6ff;
|
|
370
|
+
text-decoration: none;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
footer a:hover {
|
|
374
|
+
text-decoration: underline;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.breadcrumb {
|
|
378
|
+
font-size: 0.9rem;
|
|
379
|
+
color: #8b949e;
|
|
380
|
+
margin-bottom: 1rem;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.breadcrumb a {
|
|
384
|
+
color: #58a6ff;
|
|
385
|
+
text-decoration: none;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
@media (max-width: 1024px) {
|
|
389
|
+
aside {
|
|
390
|
+
width: 220px;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
main {
|
|
394
|
+
margin-left: 220px;
|
|
395
|
+
padding: 2rem;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
footer {
|
|
399
|
+
margin-left: 220px;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
@media (max-width: 768px) {
|
|
404
|
+
header {
|
|
405
|
+
position: relative;
|
|
406
|
+
padding: 1.5rem 1rem;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
header h1 {
|
|
410
|
+
font-size: 1.4rem;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.container {
|
|
414
|
+
margin-top: 0;
|
|
415
|
+
flex-direction: column;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
aside {
|
|
419
|
+
position: relative;
|
|
420
|
+
width: 100%;
|
|
421
|
+
max-height: none;
|
|
422
|
+
border-right: none;
|
|
423
|
+
border-bottom: 1px solid #30363d;
|
|
424
|
+
top: 0;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
aside nav {
|
|
428
|
+
flex-direction: row;
|
|
429
|
+
overflow-x: auto;
|
|
430
|
+
flex-wrap: wrap;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
aside a {
|
|
434
|
+
flex: 1;
|
|
435
|
+
min-width: 150px;
|
|
436
|
+
border-left: none;
|
|
437
|
+
border-bottom: 3px solid transparent;
|
|
438
|
+
padding: 0.75rem 1rem;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
aside a.active {
|
|
442
|
+
border-left: none;
|
|
443
|
+
border-bottom-color: #58a6ff;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
main {
|
|
447
|
+
margin-left: 0;
|
|
448
|
+
max-width: 100%;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
footer {
|
|
452
|
+
margin-left: 0;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.material-list, .shortcut-grid {
|
|
456
|
+
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
</style>
|
|
460
|
+
</head>
|
|
461
|
+
<body>
|
|
462
|
+
<header>
|
|
463
|
+
<h1>cycleCAD API Reference</h1>
|
|
464
|
+
<p>Complete feature and parameter documentation for AI-powered CAD design</p>
|
|
465
|
+
</header>
|
|
466
|
+
|
|
467
|
+
<div class="container">
|
|
468
|
+
<aside>
|
|
469
|
+
<nav>
|
|
470
|
+
<a href="#sketch-tools" class="nav-link active" data-section="sketch-tools">Sketch Tools</a>
|
|
471
|
+
<a href="#3d-operations" class="nav-link" data-section="3d-operations">3D Operations</a>
|
|
472
|
+
<a href="#primitives" class="nav-link" data-section="primitives">Primitives</a>
|
|
473
|
+
<a href="#ai-commands" class="nav-link" data-section="ai-commands">AI Commands</a>
|
|
474
|
+
<a href="#export-formats" class="nav-link" data-section="export-formats">Export Formats</a>
|
|
475
|
+
<a href="#materials" class="nav-link" data-section="materials">Materials</a>
|
|
476
|
+
<a href="#keyboard-shortcuts" class="nav-link" data-section="keyboard-shortcuts">Keyboard Shortcuts</a>
|
|
477
|
+
<a href="#url-parameters" class="nav-link" data-section="url-parameters">URL Parameters</a>
|
|
478
|
+
</nav>
|
|
479
|
+
</aside>
|
|
480
|
+
|
|
481
|
+
<main>
|
|
482
|
+
<div class="breadcrumb">
|
|
483
|
+
<a href="../index.html">cycleCAD</a> / API Reference
|
|
484
|
+
</div>
|
|
485
|
+
|
|
486
|
+
<!-- Sketch Tools Section -->
|
|
487
|
+
<div class="section active" id="sketch-tools">
|
|
488
|
+
<h2>Sketch Tools</h2>
|
|
489
|
+
<p>Fundamental tools for creating 2D sketches that form the basis for 3D models.</p>
|
|
490
|
+
|
|
491
|
+
<h3>Line Tool</h3>
|
|
492
|
+
<p>Draw straight lines in the sketch plane. Click two points to define start and end positions.</p>
|
|
493
|
+
<div class="parameter">
|
|
494
|
+
<div class="parameter-name">start</div>
|
|
495
|
+
<div class="parameter-type">Point {x, y}</div>
|
|
496
|
+
<div class="parameter-desc">Starting point coordinates in sketch units (mm)</div>
|
|
497
|
+
</div>
|
|
498
|
+
<div class="parameter">
|
|
499
|
+
<div class="parameter-name">end</div>
|
|
500
|
+
<div class="parameter-type">Point {x, y}</div>
|
|
501
|
+
<div class="parameter-desc">Ending point coordinates in sketch units (mm)</div>
|
|
502
|
+
</div>
|
|
503
|
+
<div class="parameter">
|
|
504
|
+
<div class="parameter-name">color</div>
|
|
505
|
+
<div class="parameter-type">string</div>
|
|
506
|
+
<div class="parameter-desc">Line color (default: #58a6ff)</div>
|
|
507
|
+
</div>
|
|
508
|
+
<div class="parameter">
|
|
509
|
+
<div class="parameter-name">weight</div>
|
|
510
|
+
<div class="parameter-type">number</div>
|
|
511
|
+
<div class="parameter-desc">Line thickness in pixels (default: 2)</div>
|
|
512
|
+
</div>
|
|
513
|
+
<div class="example">
|
|
514
|
+
<div class="example-title">Example: Create a horizontal line</div>
|
|
515
|
+
<div class="code-block">draw.line({x: 0, y: 0}, {x: 100, y: 0})</div>
|
|
516
|
+
</div>
|
|
517
|
+
|
|
518
|
+
<h3>Rectangle Tool</h3>
|
|
519
|
+
<p>Create rectangular shapes by specifying width, height, and position.</p>
|
|
520
|
+
<div class="parameter">
|
|
521
|
+
<div class="parameter-name">width</div>
|
|
522
|
+
<div class="parameter-type">number</div>
|
|
523
|
+
<div class="parameter-desc">Width in millimeters</div>
|
|
524
|
+
</div>
|
|
525
|
+
<div class="parameter">
|
|
526
|
+
<div class="parameter-name">height</div>
|
|
527
|
+
<div class="parameter-type">number</div>
|
|
528
|
+
<div class="parameter-desc">Height in millimeters</div>
|
|
529
|
+
</div>
|
|
530
|
+
<div class="parameter">
|
|
531
|
+
<div class="parameter-name">origin</div>
|
|
532
|
+
<div class="parameter-type">Point {x, y}</div>
|
|
533
|
+
<div class="parameter-desc">Bottom-left corner position (default: {0, 0})</div>
|
|
534
|
+
</div>
|
|
535
|
+
<div class="parameter">
|
|
536
|
+
<div class="parameter-name">fillColor</div>
|
|
537
|
+
<div class="parameter-type">string</div>
|
|
538
|
+
<div class="parameter-desc">Fill color (default: none/transparent)</div>
|
|
539
|
+
</div>
|
|
540
|
+
<div class="example">
|
|
541
|
+
<div class="example-title">Example: 50×100mm rectangle</div>
|
|
542
|
+
<div class="code-block">draw.rect({width: 50, height: 100})</div>
|
|
543
|
+
</div>
|
|
544
|
+
|
|
545
|
+
<h3>Circle Tool</h3>
|
|
546
|
+
<p>Draw circles with specified radius and center point.</p>
|
|
547
|
+
<div class="parameter">
|
|
548
|
+
<div class="parameter-name">radius</div>
|
|
549
|
+
<div class="parameter-type">number</div>
|
|
550
|
+
<div class="parameter-desc">Circle radius in millimeters</div>
|
|
551
|
+
</div>
|
|
552
|
+
<div class="parameter">
|
|
553
|
+
<div class="parameter-name">center</div>
|
|
554
|
+
<div class="parameter-type">Point {x, y}</div>
|
|
555
|
+
<div class="parameter-desc">Circle center coordinates (default: {0, 0})</div>
|
|
556
|
+
</div>
|
|
557
|
+
<div class="parameter">
|
|
558
|
+
<div class="parameter-name">fillColor</div>
|
|
559
|
+
<div class="parameter-type">string</div>
|
|
560
|
+
<div class="parameter-desc">Fill color (default: none)</div>
|
|
561
|
+
</div>
|
|
562
|
+
<div class="example">
|
|
563
|
+
<div class="example-title">Example: 25mm radius circle</div>
|
|
564
|
+
<div class="code-block">draw.circle({radius: 25, center: {x: 50, y: 50}})</div>
|
|
565
|
+
</div>
|
|
566
|
+
|
|
567
|
+
<h3>Arc Tool</h3>
|
|
568
|
+
<p>Create circular arc segments defined by start angle, end angle, and radius.</p>
|
|
569
|
+
<div class="parameter">
|
|
570
|
+
<div class="parameter-name">radius</div>
|
|
571
|
+
<div class="parameter-type">number</div>
|
|
572
|
+
<div class="parameter-desc">Arc radius in millimeters</div>
|
|
573
|
+
</div>
|
|
574
|
+
<div class="parameter">
|
|
575
|
+
<div class="parameter-name">startAngle</div>
|
|
576
|
+
<div class="parameter-type">number</div>
|
|
577
|
+
<div class="parameter-desc">Starting angle in degrees (0-360)</div>
|
|
578
|
+
</div>
|
|
579
|
+
<div class="parameter">
|
|
580
|
+
<div class="parameter-name">endAngle</div>
|
|
581
|
+
<div class="parameter-type">number</div>
|
|
582
|
+
<div class="parameter-desc">Ending angle in degrees (0-360)</div>
|
|
583
|
+
</div>
|
|
584
|
+
<div class="parameter">
|
|
585
|
+
<div class="parameter-name">center</div>
|
|
586
|
+
<div class="parameter-type">Point {x, y}</div>
|
|
587
|
+
<div class="parameter-desc">Arc center coordinates (default: {0, 0})</div>
|
|
588
|
+
</div>
|
|
589
|
+
<div class="example">
|
|
590
|
+
<div class="example-title">Example: 90° arc</div>
|
|
591
|
+
<div class="code-block">draw.arc({radius: 30, startAngle: 0, endAngle: 90})</div>
|
|
592
|
+
</div>
|
|
593
|
+
|
|
594
|
+
<h3>Polyline Tool</h3>
|
|
595
|
+
<p>Draw connected line segments by specifying multiple points in sequence.</p>
|
|
596
|
+
<div class="parameter">
|
|
597
|
+
<div class="parameter-name">points</div>
|
|
598
|
+
<div class="parameter-type">Point[]</div>
|
|
599
|
+
<div class="parameter-desc">Array of points [{x, y}, {x, y}, ...]</div>
|
|
600
|
+
</div>
|
|
601
|
+
<div class="parameter">
|
|
602
|
+
<div class="parameter-name">closed</div>
|
|
603
|
+
<div class="parameter-type">boolean</div>
|
|
604
|
+
<div class="parameter-desc">Close the path (connect last to first point). Default: false</div>
|
|
605
|
+
</div>
|
|
606
|
+
<div class="example">
|
|
607
|
+
<div class="example-title">Example: Triangle</div>
|
|
608
|
+
<div class="code-block">draw.polyline({
|
|
609
|
+
points: [{x: 0, y: 0}, {x: 50, y: 0}, {x: 25, y: 43}],
|
|
610
|
+
closed: true
|
|
611
|
+
})</div>
|
|
612
|
+
</div>
|
|
613
|
+
</div>
|
|
614
|
+
|
|
615
|
+
<!-- 3D Operations Section -->
|
|
616
|
+
<div class="section" id="3d-operations">
|
|
617
|
+
<h2>3D Operations</h2>
|
|
618
|
+
<p>Transform 2D sketches into 3D geometry with powerful modeling operations.</p>
|
|
619
|
+
|
|
620
|
+
<h3>Extrude</h3>
|
|
621
|
+
<p>Extend a 2D sketch into 3D space along the Z-axis by a specified distance.</p>
|
|
622
|
+
<div class="parameter">
|
|
623
|
+
<div class="parameter-name">sketch</div>
|
|
624
|
+
<div class="parameter-type">Sketch</div>
|
|
625
|
+
<div class="parameter-desc">Sketch object to extrude</div>
|
|
626
|
+
</div>
|
|
627
|
+
<div class="parameter">
|
|
628
|
+
<div class="parameter-name">distance</div>
|
|
629
|
+
<div class="parameter-type">number</div>
|
|
630
|
+
<div class="parameter-desc">Extrusion distance in millimeters</div>
|
|
631
|
+
</div>
|
|
632
|
+
<div class="parameter">
|
|
633
|
+
<div class="parameter-name">direction</div>
|
|
634
|
+
<div class="parameter-type">string</div>
|
|
635
|
+
<div class="parameter-desc">Direction: 'up' | 'down' | 'both' (default: 'up')</div>
|
|
636
|
+
</div>
|
|
637
|
+
<div class="parameter">
|
|
638
|
+
<div class="parameter-name">taper</div>
|
|
639
|
+
<div class="parameter-type">number</div>
|
|
640
|
+
<div class="parameter-desc">Taper angle in degrees (0-90, default: 0)</div>
|
|
641
|
+
</div>
|
|
642
|
+
<div class="example">
|
|
643
|
+
<div class="example-title">Example: Extrude rectangle to height</div>
|
|
644
|
+
<div class="code-block">let sketch = draw.rect({width: 50, height: 50});
|
|
645
|
+
solid.extrude(sketch, {distance: 100})</div>
|
|
646
|
+
</div>
|
|
647
|
+
|
|
648
|
+
<h3>Revolve</h3>
|
|
649
|
+
<p>Rotate a 2D profile around an axis to create rotational geometry (like a lathe operation).</p>
|
|
650
|
+
<div class="parameter">
|
|
651
|
+
<div class="parameter-name">sketch</div>
|
|
652
|
+
<div class="parameter-type">Sketch</div>
|
|
653
|
+
<div class="parameter-desc">Sketch profile to revolve</div>
|
|
654
|
+
</div>
|
|
655
|
+
<div class="parameter">
|
|
656
|
+
<div class="parameter-name">angle</div>
|
|
657
|
+
<div class="parameter-type">number</div>
|
|
658
|
+
<div class="parameter-desc">Rotation angle in degrees (1-360, default: 360)</div>
|
|
659
|
+
</div>
|
|
660
|
+
<div class="parameter">
|
|
661
|
+
<div class="parameter-name">axis</div>
|
|
662
|
+
<div class="parameter-type">string</div>
|
|
663
|
+
<div class="parameter-desc">Rotation axis: 'x' | 'y' | 'z' (default: 'y')</div>
|
|
664
|
+
</div>
|
|
665
|
+
<div class="example">
|
|
666
|
+
<div class="example-title">Example: Create a cone via revolve</div>
|
|
667
|
+
<div class="code-block">let profile = draw.line({x: 0, y: 0}, {x: 20, y: 50});
|
|
668
|
+
solid.revolve(profile, {angle: 360, axis: 'y'})</div>
|
|
669
|
+
</div>
|
|
670
|
+
|
|
671
|
+
<h3>Fillet</h3>
|
|
672
|
+
<p>Round sharp edges with a smooth radius curve.</p>
|
|
673
|
+
<div class="parameter">
|
|
674
|
+
<div class="parameter-name">edges</div>
|
|
675
|
+
<div class="parameter-type">Edge[]</div>
|
|
676
|
+
<div class="parameter-desc">Array of edges to fillet</div>
|
|
677
|
+
</div>
|
|
678
|
+
<div class="parameter">
|
|
679
|
+
<div class="parameter-name">radius</div>
|
|
680
|
+
<div class="parameter-type">number</div>
|
|
681
|
+
<div class="parameter-desc">Fillet radius in millimeters</div>
|
|
682
|
+
</div>
|
|
683
|
+
<div class="parameter">
|
|
684
|
+
<div class="parameter-name">type</div>
|
|
685
|
+
<div class="parameter-type">string</div>
|
|
686
|
+
<div class="parameter-desc">Fillet type: 'constant' | 'variable' (default: 'constant')</div>
|
|
687
|
+
</div>
|
|
688
|
+
<div class="example">
|
|
689
|
+
<div class="example-title">Example: Fillet all top edges</div>
|
|
690
|
+
<div class="code-block">solid.fillet({edges: model.topEdges, radius: 2})</div>
|
|
691
|
+
</div>
|
|
692
|
+
|
|
693
|
+
<h3>Chamfer</h3>
|
|
694
|
+
<p>Create beveled edges with linear transition.</p>
|
|
695
|
+
<div class="parameter">
|
|
696
|
+
<div class="parameter-name">edges</div>
|
|
697
|
+
<div class="parameter-type">Edge[]</div>
|
|
698
|
+
<div class="parameter-desc">Edges to chamfer</div>
|
|
699
|
+
</div>
|
|
700
|
+
<div class="parameter">
|
|
701
|
+
<div class="parameter-name">distance</div>
|
|
702
|
+
<div class="parameter-type">number</div>
|
|
703
|
+
<div class="parameter-desc">Chamfer distance in millimeters</div>
|
|
704
|
+
</div>
|
|
705
|
+
<div class="parameter">
|
|
706
|
+
<div class="parameter-name">angle</div>
|
|
707
|
+
<div class="parameter-type">number</div>
|
|
708
|
+
<div class="parameter-desc">Chamfer angle in degrees (15-60, default: 45)</div>
|
|
709
|
+
</div>
|
|
710
|
+
|
|
711
|
+
<h3>Boolean Operations</h3>
|
|
712
|
+
<p>Combine solids using set operations: Union, Subtract, Intersect.</p>
|
|
713
|
+
|
|
714
|
+
<h4>Union</h4>
|
|
715
|
+
<div class="parameter">
|
|
716
|
+
<div class="parameter-name">solid1</div>
|
|
717
|
+
<div class="parameter-type">Solid</div>
|
|
718
|
+
<div class="parameter-desc">First solid to combine</div>
|
|
719
|
+
</div>
|
|
720
|
+
<div class="parameter">
|
|
721
|
+
<div class="parameter-name">solid2</div>
|
|
722
|
+
<div class="parameter-type">Solid</div>
|
|
723
|
+
<div class="parameter-desc">Second solid to combine</div>
|
|
724
|
+
</div>
|
|
725
|
+
<div class="example">
|
|
726
|
+
<div class="example-title">Example: Combine two parts</div>
|
|
727
|
+
<div class="code-block">let result = solid.union(part1, part2)</div>
|
|
728
|
+
</div>
|
|
729
|
+
|
|
730
|
+
<h4>Subtract (Cut)</h4>
|
|
731
|
+
<p>Remove the volume of one solid from another.</p>
|
|
732
|
+
<div class="example">
|
|
733
|
+
<div class="example-title">Example: Create a hole</div>
|
|
734
|
+
<div class="code-block">let baseBlock = box({w: 100, h: 100, d: 50});
|
|
735
|
+
let hole = cylinder({r: 10, h: 50});
|
|
736
|
+
let result = solid.subtract(baseBlock, hole)</div>
|
|
737
|
+
</div>
|
|
738
|
+
|
|
739
|
+
<h4>Intersect</h4>
|
|
740
|
+
<p>Keep only the overlapping volume of two solids.</p>
|
|
741
|
+
<div class="example">
|
|
742
|
+
<div class="example-title">Example: Find intersection</div>
|
|
743
|
+
<div class="code-block">let intersection = solid.intersect(solid1, solid2)</div>
|
|
744
|
+
</div>
|
|
745
|
+
</div>
|
|
746
|
+
|
|
747
|
+
<!-- Primitives Section -->
|
|
748
|
+
<div class="section" id="primitives">
|
|
749
|
+
<h2>Primitives</h2>
|
|
750
|
+
<p>Pre-defined geometric shapes for rapid prototyping.</p>
|
|
751
|
+
|
|
752
|
+
<h3>Box (Rectangular Solid)</h3>
|
|
753
|
+
<div class="parameter">
|
|
754
|
+
<div class="parameter-name">width</div>
|
|
755
|
+
<div class="parameter-type">number</div>
|
|
756
|
+
<div class="parameter-desc">Width (X) in mm</div>
|
|
757
|
+
</div>
|
|
758
|
+
<div class="parameter">
|
|
759
|
+
<div class="parameter-name">height</div>
|
|
760
|
+
<div class="parameter-type">number</div>
|
|
761
|
+
<div class="parameter-desc">Height (Y) in mm</div>
|
|
762
|
+
</div>
|
|
763
|
+
<div class="parameter">
|
|
764
|
+
<div class="parameter-name">depth</div>
|
|
765
|
+
<div class="parameter-type">number</div>
|
|
766
|
+
<div class="parameter-desc">Depth (Z) in mm</div>
|
|
767
|
+
</div>
|
|
768
|
+
<div class="parameter">
|
|
769
|
+
<div class="parameter-name">center</div>
|
|
770
|
+
<div class="parameter-type">Point {x, y, z}</div>
|
|
771
|
+
<div class="parameter-desc">Center position (default: {0, 0, 0})</div>
|
|
772
|
+
</div>
|
|
773
|
+
<div class="example">
|
|
774
|
+
<div class="example-title">Example: 100×60×20mm box</div>
|
|
775
|
+
<div class="code-block">prim.box({width: 100, height: 60, depth: 20})</div>
|
|
776
|
+
</div>
|
|
777
|
+
|
|
778
|
+
<h3>Cylinder</h3>
|
|
779
|
+
<div class="parameter">
|
|
780
|
+
<div class="parameter-name">radius</div>
|
|
781
|
+
<div class="parameter-type">number</div>
|
|
782
|
+
<div class="parameter-desc">Cylinder radius in mm</div>
|
|
783
|
+
</div>
|
|
784
|
+
<div class="parameter">
|
|
785
|
+
<div class="parameter-name">height</div>
|
|
786
|
+
<div class="parameter-type">number</div>
|
|
787
|
+
<div class="parameter-desc">Cylinder height in mm</div>
|
|
788
|
+
</div>
|
|
789
|
+
<div class="parameter">
|
|
790
|
+
<div class="parameter-name">segments</div>
|
|
791
|
+
<div class="parameter-type">number</div>
|
|
792
|
+
<div class="parameter-desc">Polygon segments (default: 32)</div>
|
|
793
|
+
</div>
|
|
794
|
+
<div class="parameter">
|
|
795
|
+
<div class="parameter-name">axis</div>
|
|
796
|
+
<div class="parameter-type">string</div>
|
|
797
|
+
<div class="parameter-desc">Axis of extrusion: 'x' | 'y' | 'z' (default: 'z')</div>
|
|
798
|
+
</div>
|
|
799
|
+
<div class="example">
|
|
800
|
+
<div class="example-title">Example: 30mm radius, 60mm height</div>
|
|
801
|
+
<div class="code-block">prim.cylinder({radius: 30, height: 60})</div>
|
|
802
|
+
</div>
|
|
803
|
+
|
|
804
|
+
<h3>Sphere</h3>
|
|
805
|
+
<div class="parameter">
|
|
806
|
+
<div class="parameter-name">radius</div>
|
|
807
|
+
<div class="parameter-type">number</div>
|
|
808
|
+
<div class="parameter-desc">Sphere radius in mm</div>
|
|
809
|
+
</div>
|
|
810
|
+
<div class="parameter">
|
|
811
|
+
<div class="parameter-name">segments</div>
|
|
812
|
+
<div class="parameter-type">number</div>
|
|
813
|
+
<div class="parameter-desc">Resolution segments (default: 32)</div>
|
|
814
|
+
</div>
|
|
815
|
+
<div class="example">
|
|
816
|
+
<div class="example-title">Example: 25mm radius sphere</div>
|
|
817
|
+
<div class="code-block">prim.sphere({radius: 25})</div>
|
|
818
|
+
</div>
|
|
819
|
+
|
|
820
|
+
<h3>Cone</h3>
|
|
821
|
+
<div class="parameter">
|
|
822
|
+
<div class="parameter-name">baseRadius</div>
|
|
823
|
+
<div class="parameter-type">number</div>
|
|
824
|
+
<div class="parameter-desc">Base radius in mm</div>
|
|
825
|
+
</div>
|
|
826
|
+
<div class="parameter">
|
|
827
|
+
<div class="parameter-name">topRadius</div>
|
|
828
|
+
<div class="parameter-type">number</div>
|
|
829
|
+
<div class="parameter-desc">Top radius (0 for sharp point, default: 0)</div>
|
|
830
|
+
</div>
|
|
831
|
+
<div class="parameter">
|
|
832
|
+
<div class="parameter-name">height</div>
|
|
833
|
+
<div class="parameter-type">number</div>
|
|
834
|
+
<div class="parameter-desc">Cone height in mm</div>
|
|
835
|
+
</div>
|
|
836
|
+
<div class="example">
|
|
837
|
+
<div class="example-title">Example: 40mm base, 100mm tall cone</div>
|
|
838
|
+
<div class="code-block">prim.cone({baseRadius: 40, topRadius: 0, height: 100})</div>
|
|
839
|
+
</div>
|
|
840
|
+
|
|
841
|
+
<h3>Torus</h3>
|
|
842
|
+
<div class="parameter">
|
|
843
|
+
<div class="parameter-name">majorRadius</div>
|
|
844
|
+
<div class="parameter-type">number</div>
|
|
845
|
+
<div class="parameter-desc">Distance from center to tube center in mm</div>
|
|
846
|
+
</div>
|
|
847
|
+
<div class="parameter">
|
|
848
|
+
<div class="parameter-name">minorRadius</div>
|
|
849
|
+
<div class="parameter-type">number</div>
|
|
850
|
+
<div class="parameter-desc">Tube radius in mm</div>
|
|
851
|
+
</div>
|
|
852
|
+
<div class="example">
|
|
853
|
+
<div class="example-title">Example: Torus ring</div>
|
|
854
|
+
<div class="code-block">prim.torus({majorRadius: 50, minorRadius: 10})</div>
|
|
855
|
+
</div>
|
|
856
|
+
</div>
|
|
857
|
+
|
|
858
|
+
<!-- AI Commands Section -->
|
|
859
|
+
<div class="section" id="ai-commands">
|
|
860
|
+
<h2>AI Commands</h2>
|
|
861
|
+
<p>Natural language commands processed by cycleCAD's AI engine. Describe what you want to create in plain English.</p>
|
|
862
|
+
|
|
863
|
+
<div class="note">
|
|
864
|
+
<strong>Note:</strong> AI commands are converted to parametric models. Use specific dimensions and features for best results.
|
|
865
|
+
</div>
|
|
866
|
+
|
|
867
|
+
<h3>Supported Command Patterns</h3>
|
|
868
|
+
|
|
869
|
+
<h4>Basic Shapes</h4>
|
|
870
|
+
<ul class="command-list">
|
|
871
|
+
<li><code>"50mm cube"</code> → Creates a cubic box</li>
|
|
872
|
+
<li><code>"cylinder 30mm radius 60mm tall"</code> → Rotational primitive</li>
|
|
873
|
+
<li><code>"sphere 25mm radius"</code> → Spherical shape</li>
|
|
874
|
+
<li><code>"cone 40mm base 100mm tall"</code> → Conical shape</li>
|
|
875
|
+
</ul>
|
|
876
|
+
|
|
877
|
+
<h4>Plates & Sheets</h4>
|
|
878
|
+
<ul class="command-list">
|
|
879
|
+
<li><code>"plate 100 by 60 by 10"</code> → Rectangular plate (W×H×D)</li>
|
|
880
|
+
<li><code>"plate 100x60x10 with 4 corner holes 8mm"</code> → Plate with corner mounting</li>
|
|
881
|
+
<li><code>"sheet 500x300x2 with centered hole 25mm"</code> → Perforated sheet</li>
|
|
882
|
+
</ul>
|
|
883
|
+
|
|
884
|
+
<h4>Brackets & Structural</h4>
|
|
885
|
+
<ul class="command-list">
|
|
886
|
+
<li><code>"L bracket 80x40x5mm"</code> → Right-angle bracket</li>
|
|
887
|
+
<li><code>"triangular gusset 60x60x5"</code> → Reinforcement gusset</li>
|
|
888
|
+
<li><code>"mounting bracket 80mm base 60mm tall with 4 bolt holes"</code> → Assembly mount</li>
|
|
889
|
+
</ul>
|
|
890
|
+
|
|
891
|
+
<h4>Mechanical Components</h4>
|
|
892
|
+
<ul class="command-list">
|
|
893
|
+
<li><code>"spacer 20mm OD 10mm ID 5mm thick"</code> → Ring spacer</li>
|
|
894
|
+
<li><code>"bushing 25mm outer 15mm inner 30mm long"</code> → Cylindrical bushing</li>
|
|
895
|
+
<li><code>"bearing housing 80mm OD 50mm bore"</code> → Flanged housing</li>
|
|
896
|
+
<li><code>"shaft collar 20mm bore 35mm OD 12mm wide"</code> → Locking collar</li>
|
|
897
|
+
</ul>
|
|
898
|
+
|
|
899
|
+
<h4>Fasteners & Hardware</h4>
|
|
900
|
+
<ul class="command-list">
|
|
901
|
+
<li><code>"M8 washer"</code> → Standard flat washer</li>
|
|
902
|
+
<li><code>"hex standoff M4 15mm tall"</code> → Threaded spacer</li>
|
|
903
|
+
<li><code>"bolt head M10 20mm long"</code> → Hex bolt</li>
|
|
904
|
+
</ul>
|
|
905
|
+
|
|
906
|
+
<h4>Custom Features</h4>
|
|
907
|
+
<ul class="command-list">
|
|
908
|
+
<li><code>"phone stand 80mm wide 60mm tall 5mm thick with slot"</code> → Device holder</li>
|
|
909
|
+
<li><code>"cable clip for 10mm cable"</code> → Cable organizer</li>
|
|
910
|
+
<li><code>"heat sink 80mm wide 40mm tall with 4 fins 3mm thick"</code> → Cooling element</li>
|
|
911
|
+
<li><code>"filter housing 60mm diameter 80mm tall inlet outlet ports"</code> → Canister body</li>
|
|
912
|
+
</ul>
|
|
913
|
+
|
|
914
|
+
<h3>AI Command Tips</h3>
|
|
915
|
+
<ul>
|
|
916
|
+
<li>Use specific dimensions (mm, mm, mm format)</li>
|
|
917
|
+
<li>Include material hints for realistic rendering</li>
|
|
918
|
+
<li>Mention mounting points (holes, pockets, slots)</li>
|
|
919
|
+
<li>Describe symmetry and repetition</li>
|
|
920
|
+
<li>AI fills in standard details (thread forms, standard sizes)</li>
|
|
921
|
+
</ul>
|
|
922
|
+
</div>
|
|
923
|
+
|
|
924
|
+
<!-- Export Formats Section -->
|
|
925
|
+
<div class="section" id="export-formats">
|
|
926
|
+
<h2>Export Formats</h2>
|
|
927
|
+
<p>Save your designs in multiple industry-standard formats.</p>
|
|
928
|
+
|
|
929
|
+
<h3>STL (Stereolithography)</h3>
|
|
930
|
+
<p><strong>Best for:</strong> 3D printing, CNC machining</p>
|
|
931
|
+
<div class="parameter">
|
|
932
|
+
<div class="parameter-name">format</div>
|
|
933
|
+
<div class="parameter-type">string</div>
|
|
934
|
+
<div class="parameter-desc">'ascii' | 'binary' (binary is smaller)</div>
|
|
935
|
+
</div>
|
|
936
|
+
<div class="parameter">
|
|
937
|
+
<div class="parameter-name">scale</div>
|
|
938
|
+
<div class="parameter-type">number</div>
|
|
939
|
+
<div class="parameter-desc">Scale factor (1.0 = original size)</div>
|
|
940
|
+
</div>
|
|
941
|
+
<div class="example">
|
|
942
|
+
<div class="example-title">Example: Export as binary STL</div>
|
|
943
|
+
<div class="code-block">model.exportSTL({format: 'binary', scale: 1.0})</div>
|
|
944
|
+
</div>
|
|
945
|
+
|
|
946
|
+
<h3>OBJ (Wavefront)</h3>
|
|
947
|
+
<p><strong>Best for:</strong> 3D visualization, rendering, animation</p>
|
|
948
|
+
<div class="parameter">
|
|
949
|
+
<div class="parameter-name">includeNormals</div>
|
|
950
|
+
<div class="parameter-type">boolean</div>
|
|
951
|
+
<div class="parameter-desc">Include vertex normals (default: true)</div>
|
|
952
|
+
</div>
|
|
953
|
+
<div class="parameter">
|
|
954
|
+
<div class="parameter-name">includeMaterials</div>
|
|
955
|
+
<div class="parameter-type">boolean</div>
|
|
956
|
+
<div class="parameter-desc">Export .mtl material file (default: true)</div>
|
|
957
|
+
</div>
|
|
958
|
+
<div class="example">
|
|
959
|
+
<div class="example-title">Example: Export as OBJ</div>
|
|
960
|
+
<div class="code-block">model.exportOBJ({includeNormals: true, includeMaterials: true})</div>
|
|
961
|
+
</div>
|
|
962
|
+
|
|
963
|
+
<h3>STEP/IGES (CAD Interchange)</h3>
|
|
964
|
+
<p><strong>Best for:</strong> Professional CAD exchange, parametric history</p>
|
|
965
|
+
<div class="parameter">
|
|
966
|
+
<div class="parameter-name">preserveHistory</div>
|
|
967
|
+
<div class="parameter-type">boolean</div>
|
|
968
|
+
<div class="parameter-desc">Keep parametric feature tree (default: true)</div>
|
|
969
|
+
</div>
|
|
970
|
+
<div class="example">
|
|
971
|
+
<div class="example-title">Example: Export as STEP</div>
|
|
972
|
+
<div class="code-block">model.exportSTEP({preserveHistory: true})</div>
|
|
973
|
+
</div>
|
|
974
|
+
|
|
975
|
+
<h3>glTF 2.0</h3>
|
|
976
|
+
<p><strong>Best for:</strong> Web display, AR/VR, game engines</p>
|
|
977
|
+
<div class="parameter">
|
|
978
|
+
<div class="parameter-name">embedded</div>
|
|
979
|
+
<div class="parameter-type">boolean</div>
|
|
980
|
+
<div class="parameter-desc">Embed textures in .glb file (default: true)</div>
|
|
981
|
+
</div>
|
|
982
|
+
<div class="parameter">
|
|
983
|
+
<div class="parameter-name">compressed</div>
|
|
984
|
+
<div class="parameter-type">boolean</div>
|
|
985
|
+
<div class="parameter-desc">Use Draco compression (default: true)</div>
|
|
986
|
+
</div>
|
|
987
|
+
|
|
988
|
+
<h3>PLY (Polygon File Format)</h3>
|
|
989
|
+
<p><strong>Best for:</strong> Point cloud data, mesh analysis</p>
|
|
990
|
+
<div class="parameter">
|
|
991
|
+
<div class="parameter-name">format</div>
|
|
992
|
+
<div class="parameter-type">string</div>
|
|
993
|
+
<div class="parameter-desc">'ascii' | 'binary' (binary recommended)</div>
|
|
994
|
+
</div>
|
|
995
|
+
<div class="parameter">
|
|
996
|
+
<div class="parameter-name">includeColors</div>
|
|
997
|
+
<div class="parameter-type">boolean</div>
|
|
998
|
+
<div class="parameter-desc">Include vertex colors (default: true)</div>
|
|
999
|
+
</div>
|
|
1000
|
+
|
|
1001
|
+
<h3>JSON (Native Format)</h3>
|
|
1002
|
+
<p><strong>Best for:</strong> Saving project state, parametric recovery</p>
|
|
1003
|
+
<div class="parameter">
|
|
1004
|
+
<div class="parameter-name">compressed</div>
|
|
1005
|
+
<div class="parameter-type">boolean</div>
|
|
1006
|
+
<div class="parameter-desc">GZIP compression (default: true)</div>
|
|
1007
|
+
</div>
|
|
1008
|
+
<div class="example">
|
|
1009
|
+
<div class="example-title">Example: Save project</div>
|
|
1010
|
+
<div class="code-block">model.exportJSON({compressed: true})</div>
|
|
1011
|
+
</div>
|
|
1012
|
+
|
|
1013
|
+
<div class="table-wrapper">
|
|
1014
|
+
<table>
|
|
1015
|
+
<thead>
|
|
1016
|
+
<tr>
|
|
1017
|
+
<th>Format</th>
|
|
1018
|
+
<th>File Size</th>
|
|
1019
|
+
<th>Editability</th>
|
|
1020
|
+
<th>Best Use</th>
|
|
1021
|
+
</tr>
|
|
1022
|
+
</thead>
|
|
1023
|
+
<tbody>
|
|
1024
|
+
<tr>
|
|
1025
|
+
<td><code>STL</code></td>
|
|
1026
|
+
<td>Medium</td>
|
|
1027
|
+
<td>No</td>
|
|
1028
|
+
<td>3D Printing</td>
|
|
1029
|
+
</tr>
|
|
1030
|
+
<tr>
|
|
1031
|
+
<td><code>OBJ</code></td>
|
|
1032
|
+
<td>Medium</td>
|
|
1033
|
+
<td>Limited</td>
|
|
1034
|
+
<td>Rendering</td>
|
|
1035
|
+
</tr>
|
|
1036
|
+
<tr>
|
|
1037
|
+
<td><code>STEP</code></td>
|
|
1038
|
+
<td>Large</td>
|
|
1039
|
+
<td>Yes</td>
|
|
1040
|
+
<td>CAD Exchange</td>
|
|
1041
|
+
</tr>
|
|
1042
|
+
<tr>
|
|
1043
|
+
<td><code>glTF</code></td>
|
|
1044
|
+
<td>Small</td>
|
|
1045
|
+
<td>No</td>
|
|
1046
|
+
<td>Web/AR</td>
|
|
1047
|
+
</tr>
|
|
1048
|
+
<tr>
|
|
1049
|
+
<td><code>PLY</code></td>
|
|
1050
|
+
<td>Medium</td>
|
|
1051
|
+
<td>No</td>
|
|
1052
|
+
<td>Analysis</td>
|
|
1053
|
+
</tr>
|
|
1054
|
+
</tbody>
|
|
1055
|
+
</table>
|
|
1056
|
+
</div>
|
|
1057
|
+
</div>
|
|
1058
|
+
|
|
1059
|
+
<!-- Materials Section -->
|
|
1060
|
+
<div class="section" id="materials">
|
|
1061
|
+
<h2>Materials</h2>
|
|
1062
|
+
<p>Pre-configured material properties for rendering and simulations.</p>
|
|
1063
|
+
|
|
1064
|
+
<div class="material-list">
|
|
1065
|
+
<div class="material-card">
|
|
1066
|
+
<div class="material-name">Steel</div>
|
|
1067
|
+
<ul class="material-props">
|
|
1068
|
+
<li>Density: 7.85 g/cm³</li>
|
|
1069
|
+
<li>Color: #666666</li>
|
|
1070
|
+
<li>Roughness: 0.4</li>
|
|
1071
|
+
</ul>
|
|
1072
|
+
</div>
|
|
1073
|
+
|
|
1074
|
+
<div class="material-card">
|
|
1075
|
+
<div class="material-name">Aluminum</div>
|
|
1076
|
+
<ul class="material-props">
|
|
1077
|
+
<li>Density: 2.70 g/cm³</li>
|
|
1078
|
+
<li>Color: #cccccc</li>
|
|
1079
|
+
<li>Roughness: 0.3</li>
|
|
1080
|
+
</ul>
|
|
1081
|
+
</div>
|
|
1082
|
+
|
|
1083
|
+
<div class="material-card">
|
|
1084
|
+
<div class="material-name">Titanium</div>
|
|
1085
|
+
<ul class="material-props">
|
|
1086
|
+
<li>Density: 4.51 g/cm³</li>
|
|
1087
|
+
<li>Color: #999999</li>
|
|
1088
|
+
<li>Roughness: 0.35</li>
|
|
1089
|
+
</ul>
|
|
1090
|
+
</div>
|
|
1091
|
+
|
|
1092
|
+
<div class="material-card">
|
|
1093
|
+
<div class="material-name">Plastic (ABS)</div>
|
|
1094
|
+
<ul class="material-props">
|
|
1095
|
+
<li>Density: 1.04 g/cm³</li>
|
|
1096
|
+
<li>Color: #333333</li>
|
|
1097
|
+
<li>Roughness: 0.6</li>
|
|
1098
|
+
</ul>
|
|
1099
|
+
</div>
|
|
1100
|
+
|
|
1101
|
+
<div class="material-card">
|
|
1102
|
+
<div class="material-name">Polycarbonate</div>
|
|
1103
|
+
<ul class="material-props">
|
|
1104
|
+
<li>Density: 1.20 g/cm³</li>
|
|
1105
|
+
<li>Color: #aaaaaa</li>
|
|
1106
|
+
<li>Roughness: 0.2</li>
|
|
1107
|
+
</ul>
|
|
1108
|
+
</div>
|
|
1109
|
+
|
|
1110
|
+
<div class="material-card">
|
|
1111
|
+
<div class="material-name">Rubber</div>
|
|
1112
|
+
<ul class="material-props">
|
|
1113
|
+
<li>Density: 0.92 g/cm³</li>
|
|
1114
|
+
<li>Color: #1a1a1a</li>
|
|
1115
|
+
<li>Roughness: 0.8</li>
|
|
1116
|
+
</ul>
|
|
1117
|
+
</div>
|
|
1118
|
+
|
|
1119
|
+
<div class="material-card">
|
|
1120
|
+
<div class="material-name">Brass</div>
|
|
1121
|
+
<ul class="material-props">
|
|
1122
|
+
<li>Density: 8.47 g/cm³</li>
|
|
1123
|
+
<li>Color: #b8860b</li>
|
|
1124
|
+
<li>Roughness: 0.35</li>
|
|
1125
|
+
</ul>
|
|
1126
|
+
</div>
|
|
1127
|
+
|
|
1128
|
+
<div class="material-card">
|
|
1129
|
+
<div class="material-name">Copper</div>
|
|
1130
|
+
<ul class="material-props">
|
|
1131
|
+
<li>Density: 8.96 g/cm³</li>
|
|
1132
|
+
<li>Color: #b87333</li>
|
|
1133
|
+
<li>Roughness: 0.3</li>
|
|
1134
|
+
</ul>
|
|
1135
|
+
</div>
|
|
1136
|
+
|
|
1137
|
+
<div class="material-card">
|
|
1138
|
+
<div class="material-name">Cast Iron</div>
|
|
1139
|
+
<ul class="material-props">
|
|
1140
|
+
<li>Density: 7.20 g/cm³</li>
|
|
1141
|
+
<li>Color: #444444</li>
|
|
1142
|
+
<li>Roughness: 0.65</li>
|
|
1143
|
+
</ul>
|
|
1144
|
+
</div>
|
|
1145
|
+
|
|
1146
|
+
<div class="material-card">
|
|
1147
|
+
<div class="material-name">Glass</div>
|
|
1148
|
+
<ul class="material-props">
|
|
1149
|
+
<li>Density: 2.50 g/cm³</li>
|
|
1150
|
+
<li>Color: #e0f0ff</li>
|
|
1151
|
+
<li>Roughness: 0.1</li>
|
|
1152
|
+
</ul>
|
|
1153
|
+
</div>
|
|
1154
|
+
|
|
1155
|
+
<div class="material-card">
|
|
1156
|
+
<div class="material-name">Carbon Fiber</div>
|
|
1157
|
+
<ul class="material-props">
|
|
1158
|
+
<li>Density: 1.60 g/cm³</li>
|
|
1159
|
+
<li>Color: #1a1a2e</li>
|
|
1160
|
+
<li>Roughness: 0.5</li>
|
|
1161
|
+
</ul>
|
|
1162
|
+
</div>
|
|
1163
|
+
|
|
1164
|
+
<div class="material-card">
|
|
1165
|
+
<div class="material-name">Silicone</div>
|
|
1166
|
+
<ul class="material-props">
|
|
1167
|
+
<li>Density: 1.15 g/cm³</li>
|
|
1168
|
+
<li>Color: #e0d9d3</li>
|
|
1169
|
+
<li>Roughness: 0.75</li>
|
|
1170
|
+
</ul>
|
|
1171
|
+
</div>
|
|
1172
|
+
</div>
|
|
1173
|
+
|
|
1174
|
+
<h3>Custom Material Definition</h3>
|
|
1175
|
+
<div class="code-block">let material = {
|
|
1176
|
+
name: "Custom Metal",
|
|
1177
|
+
density: 7.5, // g/cm³
|
|
1178
|
+
color: "#888888", // Hex color
|
|
1179
|
+
roughness: 0.4, // 0-1
|
|
1180
|
+
metallic: true,
|
|
1181
|
+
opacity: 1.0
|
|
1182
|
+
}</div>
|
|
1183
|
+
</div>
|
|
1184
|
+
|
|
1185
|
+
<!-- Keyboard Shortcuts Section -->
|
|
1186
|
+
<div class="section" id="keyboard-shortcuts">
|
|
1187
|
+
<h2>Keyboard Shortcuts</h2>
|
|
1188
|
+
<p>Fast keyboard access to common operations.</p>
|
|
1189
|
+
|
|
1190
|
+
<div class="shortcut-grid">
|
|
1191
|
+
<div class="shortcut-card">
|
|
1192
|
+
<span class="shortcut-key">Ctrl/Cmd + N</span>
|
|
1193
|
+
<div class="shortcut-desc">New project</div>
|
|
1194
|
+
</div>
|
|
1195
|
+
<div class="shortcut-card">
|
|
1196
|
+
<span class="shortcut-key">Ctrl/Cmd + O</span>
|
|
1197
|
+
<div class="shortcut-desc">Open file</div>
|
|
1198
|
+
</div>
|
|
1199
|
+
<div class="shortcut-card">
|
|
1200
|
+
<span class="shortcut-key">Ctrl/Cmd + S</span>
|
|
1201
|
+
<div class="shortcut-desc">Save project</div>
|
|
1202
|
+
</div>
|
|
1203
|
+
<div class="shortcut-card">
|
|
1204
|
+
<span class="shortcut-key">Ctrl/Cmd + E</span>
|
|
1205
|
+
<div class="shortcut-desc">Export model</div>
|
|
1206
|
+
</div>
|
|
1207
|
+
<div class="shortcut-card">
|
|
1208
|
+
<span class="shortcut-key">Ctrl/Cmd + Z</span>
|
|
1209
|
+
<div class="shortcut-desc">Undo</div>
|
|
1210
|
+
</div>
|
|
1211
|
+
<div class="shortcut-card">
|
|
1212
|
+
<span class="shortcut-key">Ctrl/Cmd + Shift + Z</span>
|
|
1213
|
+
<div class="shortcut-desc">Redo</div>
|
|
1214
|
+
</div>
|
|
1215
|
+
<div class="shortcut-card">
|
|
1216
|
+
<span class="shortcut-key">V</span>
|
|
1217
|
+
<div class="shortcut-desc">Toggle viewport grid</div>
|
|
1218
|
+
</div>
|
|
1219
|
+
<div class="shortcut-card">
|
|
1220
|
+
<span class="shortcut-key">W</span>
|
|
1221
|
+
<div class="shortcut-desc">Toggle wireframe</div>
|
|
1222
|
+
</div>
|
|
1223
|
+
<div class="shortcut-card">
|
|
1224
|
+
<span class="shortcut-key">P</span>
|
|
1225
|
+
<div class="shortcut-desc">Perspective view</div>
|
|
1226
|
+
</div>
|
|
1227
|
+
<div class="shortcut-card">
|
|
1228
|
+
<span class="shortcut-key">T</span>
|
|
1229
|
+
<div class="shortcut-desc">Front view</div>
|
|
1230
|
+
</div>
|
|
1231
|
+
<div class="shortcut-card">
|
|
1232
|
+
<span class="shortcut-key">G</span>
|
|
1233
|
+
<div class="shortcut-desc">Top view</div>
|
|
1234
|
+
</div>
|
|
1235
|
+
<div class="shortcut-card">
|
|
1236
|
+
<span class="shortcut-key">D</span>
|
|
1237
|
+
<div class="shortcut-desc">Right side view</div>
|
|
1238
|
+
</div>
|
|
1239
|
+
<div class="shortcut-card">
|
|
1240
|
+
<span class="shortcut-key">F</span>
|
|
1241
|
+
<div class="shortcut-desc">Fit all (zoom to fit)</div>
|
|
1242
|
+
</div>
|
|
1243
|
+
<div class="shortcut-card">
|
|
1244
|
+
<span class="shortcut-key">Home</span>
|
|
1245
|
+
<div class="shortcut-desc">Center view</div>
|
|
1246
|
+
</div>
|
|
1247
|
+
<div class="shortcut-card">
|
|
1248
|
+
<span class="shortcut-key">Mouse Wheel</span>
|
|
1249
|
+
<div class="shortcut-desc">Zoom in/out</div>
|
|
1250
|
+
</div>
|
|
1251
|
+
<div class="shortcut-card">
|
|
1252
|
+
<span class="shortcut-key">Middle Drag</span>
|
|
1253
|
+
<div class="shortcut-desc">Pan view</div>
|
|
1254
|
+
</div>
|
|
1255
|
+
<div class="shortcut-card">
|
|
1256
|
+
<span class="shortcut-key">Right Drag</span>
|
|
1257
|
+
<div class="shortcut-desc">Rotate view</div>
|
|
1258
|
+
</div>
|
|
1259
|
+
<div class="shortcut-card">
|
|
1260
|
+
<span class="shortcut-key">Delete</span>
|
|
1261
|
+
<div class="shortcut-desc">Delete selected</div>
|
|
1262
|
+
</div>
|
|
1263
|
+
<div class="shortcut-card">
|
|
1264
|
+
<span class="shortcut-key">Escape</span>
|
|
1265
|
+
<div class="shortcut-desc">Deselect all</div>
|
|
1266
|
+
</div>
|
|
1267
|
+
<div class="shortcut-card">
|
|
1268
|
+
<span class="shortcut-key">?</span>
|
|
1269
|
+
<div class="shortcut-desc">Show shortcuts help</div>
|
|
1270
|
+
</div>
|
|
1271
|
+
</div>
|
|
1272
|
+
</div>
|
|
1273
|
+
|
|
1274
|
+
<!-- URL Parameters Section -->
|
|
1275
|
+
<div class="section" id="url-parameters">
|
|
1276
|
+
<h2>URL Parameters</h2>
|
|
1277
|
+
<p>Deep-link to cycleCAD with pre-configured models and parameters.</p>
|
|
1278
|
+
|
|
1279
|
+
<h3>Basic URL Structure</h3>
|
|
1280
|
+
<div class="code-block">https://explodeview.com/cyclecad?create=box&w=50&h=30&d=20</div>
|
|
1281
|
+
|
|
1282
|
+
<h3>Global Parameters</h3>
|
|
1283
|
+
|
|
1284
|
+
<div class="parameter">
|
|
1285
|
+
<div class="parameter-name">create</div>
|
|
1286
|
+
<div class="parameter-type">string</div>
|
|
1287
|
+
<div class="parameter-desc">Primitive type: box, cylinder, sphere, cone, torus</div>
|
|
1288
|
+
</div>
|
|
1289
|
+
|
|
1290
|
+
<div class="parameter">
|
|
1291
|
+
<div class="parameter-name">prompt</div>
|
|
1292
|
+
<div class="parameter-type">string</div>
|
|
1293
|
+
<div class="parameter-desc">AI natural language prompt (URL encoded)</div>
|
|
1294
|
+
</div>
|
|
1295
|
+
|
|
1296
|
+
<div class="parameter">
|
|
1297
|
+
<div class="parameter-name">material</div>
|
|
1298
|
+
<div class="parameter-type">string</div>
|
|
1299
|
+
<div class="parameter-desc">Material preset: steel, aluminum, plastic, etc.</div>
|
|
1300
|
+
</div>
|
|
1301
|
+
|
|
1302
|
+
<div class="parameter">
|
|
1303
|
+
<div class="parameter-name">color</div>
|
|
1304
|
+
<div class="parameter-type">string</div>
|
|
1305
|
+
<div class="parameter-desc">Hex color code (e.g., #ff0000 for red)</div>
|
|
1306
|
+
</div>
|
|
1307
|
+
|
|
1308
|
+
<h3>Box Parameters</h3>
|
|
1309
|
+
<div class="code-block">?create=box&w=100&h=60&d=20&material=aluminum&color=#cccccc</div>
|
|
1310
|
+
|
|
1311
|
+
<div class="parameter">
|
|
1312
|
+
<div class="parameter-name">w</div>
|
|
1313
|
+
<div class="parameter-type">number</div>
|
|
1314
|
+
<div class="parameter-desc">Width in mm</div>
|
|
1315
|
+
</div>
|
|
1316
|
+
<div class="parameter">
|
|
1317
|
+
<div class="parameter-name">h</div>
|
|
1318
|
+
<div class="parameter-type">number</div>
|
|
1319
|
+
<div class="parameter-desc">Height in mm</div>
|
|
1320
|
+
</div>
|
|
1321
|
+
<div class="parameter">
|
|
1322
|
+
<div class="parameter-name">d</div>
|
|
1323
|
+
<div class="parameter-type">number</div>
|
|
1324
|
+
<div class="parameter-desc">Depth in mm</div>
|
|
1325
|
+
</div>
|
|
1326
|
+
|
|
1327
|
+
<h3>Cylinder Parameters</h3>
|
|
1328
|
+
<div class="code-block">?create=cylinder&r=30&h=60</div>
|
|
1329
|
+
|
|
1330
|
+
<div class="parameter">
|
|
1331
|
+
<div class="parameter-name">r</div>
|
|
1332
|
+
<div class="parameter-type">number</div>
|
|
1333
|
+
<div class="parameter-desc">Radius in mm</div>
|
|
1334
|
+
</div>
|
|
1335
|
+
<div class="parameter">
|
|
1336
|
+
<div class="parameter-name">h</div>
|
|
1337
|
+
<div class="parameter-type">number</div>
|
|
1338
|
+
<div class="parameter-desc">Height in mm</div>
|
|
1339
|
+
</div>
|
|
1340
|
+
|
|
1341
|
+
<h3>Sphere Parameters</h3>
|
|
1342
|
+
<div class="code-block">?create=sphere&r=25</div>
|
|
1343
|
+
|
|
1344
|
+
<div class="parameter">
|
|
1345
|
+
<div class="parameter-name">r</div>
|
|
1346
|
+
<div class="parameter-type">number</div>
|
|
1347
|
+
<div class="parameter-desc">Radius in mm</div>
|
|
1348
|
+
</div>
|
|
1349
|
+
|
|
1350
|
+
<h3>AI Prompt URL</h3>
|
|
1351
|
+
<div class="code-block">?prompt=plate%20100x60x10%20with%204%20corner%20holes%208mm</div>
|
|
1352
|
+
|
|
1353
|
+
<div class="warning">
|
|
1354
|
+
<strong>Important:</strong> Spaces and special characters must be URL-encoded. Use %20 for space.
|
|
1355
|
+
</div>
|
|
1356
|
+
|
|
1357
|
+
<h3>Complete Examples</h3>
|
|
1358
|
+
|
|
1359
|
+
<div class="example">
|
|
1360
|
+
<div class="example-title">Example 1: Steel box</div>
|
|
1361
|
+
<div class="code-block">https://explodeview.com/cyclecad?create=box&w=100&h=60&d=20&material=steel</div>
|
|
1362
|
+
</div>
|
|
1363
|
+
|
|
1364
|
+
<div class="example">
|
|
1365
|
+
<div class="example-title">Example 2: Aluminum cylinder</div>
|
|
1366
|
+
<div class="code-block">https://explodeview.com/cyclecad?create=cylinder&r=30&h=60&material=aluminum</div>
|
|
1367
|
+
</div>
|
|
1368
|
+
|
|
1369
|
+
<div class="example">
|
|
1370
|
+
<div class="example-title">Example 3: AI-generated part</div>
|
|
1371
|
+
<div class="code-block">https://explodeview.com/cyclecad?prompt=phone%20stand%2080mm%20wide%2060mm%20tall</div>
|
|
1372
|
+
</div>
|
|
1373
|
+
|
|
1374
|
+
<h3>Parameter Encoding Reference</h3>
|
|
1375
|
+
<div class="table-wrapper">
|
|
1376
|
+
<table>
|
|
1377
|
+
<thead>
|
|
1378
|
+
<tr>
|
|
1379
|
+
<th>Character</th>
|
|
1380
|
+
<th>Encoded</th>
|
|
1381
|
+
<th>Character</th>
|
|
1382
|
+
<th>Encoded</th>
|
|
1383
|
+
</tr>
|
|
1384
|
+
</thead>
|
|
1385
|
+
<tbody>
|
|
1386
|
+
<tr>
|
|
1387
|
+
<td>Space</td>
|
|
1388
|
+
<td><code>%20</code></td>
|
|
1389
|
+
<td>×</td>
|
|
1390
|
+
<td><code>%C3%97</code></td>
|
|
1391
|
+
</tr>
|
|
1392
|
+
<tr>
|
|
1393
|
+
<td>#</td>
|
|
1394
|
+
<td><code>%23</code></td>
|
|
1395
|
+
<td>Ø</td>
|
|
1396
|
+
<td><code>%C3%98</code></td>
|
|
1397
|
+
</tr>
|
|
1398
|
+
<tr>
|
|
1399
|
+
<td>&</td>
|
|
1400
|
+
<td><code>%26</code></td>
|
|
1401
|
+
<td>mm</td>
|
|
1402
|
+
<td><code>mm</code> (no encoding)</td>
|
|
1403
|
+
</tr>
|
|
1404
|
+
</tbody>
|
|
1405
|
+
</table>
|
|
1406
|
+
</div>
|
|
1407
|
+
</div>
|
|
1408
|
+
</main>
|
|
1409
|
+
</div>
|
|
1410
|
+
|
|
1411
|
+
<footer>
|
|
1412
|
+
© 2026 cycleCAD by ExplodeView. <a href="../index.html">Back to cycleCAD</a> | <a href="examples.html">Examples</a> | <a href="https://github.com/vvlars-cmd/explodeview">GitHub</a>
|
|
1413
|
+
</footer>
|
|
1414
|
+
|
|
1415
|
+
<script>
|
|
1416
|
+
// Navigation functionality
|
|
1417
|
+
document.querySelectorAll('.nav-link').forEach(link => {
|
|
1418
|
+
link.addEventListener('click', (e) => {
|
|
1419
|
+
e.preventDefault();
|
|
1420
|
+
|
|
1421
|
+
// Update active link
|
|
1422
|
+
document.querySelectorAll('.nav-link').forEach(l => l.classList.remove('active'));
|
|
1423
|
+
link.classList.add('active');
|
|
1424
|
+
|
|
1425
|
+
// Update active section
|
|
1426
|
+
document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));
|
|
1427
|
+
const sectionId = link.dataset.section;
|
|
1428
|
+
document.getElementById(sectionId).classList.add('active');
|
|
1429
|
+
|
|
1430
|
+
// Scroll to top
|
|
1431
|
+
document.querySelector('main').scrollTop = 0;
|
|
1432
|
+
});
|
|
1433
|
+
});
|
|
1434
|
+
</script>
|
|
1435
|
+
</body>
|
|
1436
|
+
</html>
|