2024-11-18 16:20:32 -06:00
|
|
|
---
|
|
|
|
source: kcl/src/simulation_tests.rs
|
|
|
|
description: Program memory after executing poop_chute.kcl
|
|
|
|
---
|
|
|
|
{
|
|
|
|
"environments": [
|
|
|
|
{
|
|
|
|
"bindings": {
|
|
|
|
"Fx": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 0.5,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
156,
|
|
|
|
159,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"Fy": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 0.5,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
165,
|
|
|
|
168,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"HALF_TURN": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 180.0,
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"QUARTER_TURN": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 90.0,
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"THREE_QUARTER_TURN": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 270.0,
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"ZERO": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 0.0,
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"back_length": {
|
2024-11-25 10:50:43 +13:00
|
|
|
"type": "Number",
|
|
|
|
"value": 7.0,
|
2024-11-18 16:20:32 -06:00
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
116,
|
|
|
|
117,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"back_walls_width": {
|
2024-11-25 10:50:43 +13:00
|
|
|
"type": "Number",
|
|
|
|
"value": 2.0,
|
2024-11-18 16:20:32 -06:00
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
42,
|
|
|
|
43,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"exit_height": {
|
2024-11-25 10:50:43 +13:00
|
|
|
"type": "Number",
|
|
|
|
"value": 1.0,
|
2024-11-18 16:20:32 -06:00
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
132,
|
|
|
|
133,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"filletRadius": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 0.05,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
96,
|
|
|
|
101,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"front_length": {
|
2024-11-25 10:50:43 +13:00
|
|
|
"type": "Number",
|
|
|
|
"value": 6.0,
|
2024-11-18 16:20:32 -06:00
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
149,
|
|
|
|
150,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"front_walls_width": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 2.5,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
64,
|
|
|
|
67,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"height": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 5.5,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
77,
|
|
|
|
80,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"part001": {
|
|
|
|
"type": "Solid",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": {
|
|
|
|
"type": "Solid",
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": [
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
258,
|
|
|
|
286,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": {
|
2024-11-25 09:21:55 +13:00
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
361,
|
|
|
|
379,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
385,
|
|
|
|
410,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
416,
|
|
|
|
442,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
448,
|
|
|
|
547,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
553,
|
|
|
|
578,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
584,
|
|
|
|
662,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
668,
|
|
|
|
686,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
692,
|
|
|
|
705,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
711,
|
|
|
|
737,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
743,
|
|
|
|
789,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
795,
|
|
|
|
803,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
}
|
2025-01-22 09:42:09 +13:00
|
|
|
],
|
|
|
|
"sketch": {
|
|
|
|
"type": "Sketch",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"paths": [
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
258,
|
|
|
|
286,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
361,
|
|
|
|
379,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
385,
|
|
|
|
410,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
416,
|
|
|
|
442,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
448,
|
|
|
|
547,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
553,
|
|
|
|
578,
|
|
|
|
0
|
|
|
|
]
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
584,
|
|
|
|
662,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
2024-11-18 16:20:32 -06:00
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
668,
|
|
|
|
686,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
2025-01-22 09:42:09 +13:00
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
692,
|
|
|
|
705,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
711,
|
|
|
|
737,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
743,
|
|
|
|
789,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
795,
|
|
|
|
803,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"on": {
|
|
|
|
"type": "plane",
|
|
|
|
"id": "[uuid]",
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": "YZ",
|
|
|
|
"origin": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"xAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 1.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"yAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 1.0
|
|
|
|
},
|
|
|
|
"zAxis": {
|
|
|
|
"x": -1.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"start": {
|
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
208,
|
|
|
|
252,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"tags": {
|
|
|
|
"seg01": {
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"value": "seg01",
|
|
|
|
"info": {
|
|
|
|
"type": "TagEngineInfo",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sketch": "[uuid]",
|
|
|
|
"path": {
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9374999999999999
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
"surface": {
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
|
|
|
"type": "extrudePlane"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
348,
|
|
|
|
354,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
KCL: Patterns of patterns can use the original sketch/solid as target (#5284)
Right now, if you model something like this box with a button:
<img width="413" alt="Screenshot 2025-02-06 at 3 08 03 PM" src="https://github.com/user-attachments/assets/04818a70-7cf3-4ee3-b8c5-df5959ac10db" />
Let's say you want to pattern the button, and repeat it a second time. If you try, you'll actually pattern the entire model (box + button).
<img width="486" alt="Screenshot 2025-02-06 at 3 08 52 PM" src="https://github.com/user-attachments/assets/09fc28d9-5d80-4ab3-b4dc-b8de2945fcba" />
Why? Because right now, when you sketch on a face (like the button was), both the box and the button share the same ID. All extrusions from a solid will share the same ID, because they all refer to the same composite solid.
This is helpful in some ways -- arguably the solid _is_ just one big complex shape now -- but it's not helpful in other ways. What if I want to only pattern the button? Luckily there's an original ID for the button part, which is still stored. So we just need a way to tell the pattern stdlib functions whether to use the target's main ID or its original ID. This PR adds a new optional bool, `useOriginal`, to patterns. It's false by default, to keep backwards-compatibility (make sure that old KCL code doesn't change).
This PR is based on https://github.com/KittyCAD/modeling-app/pull/3914. It's based on work Serena and I are doing to fix a bug (engine does not allow patterning a 3D solid which was sketched on a face of another solid). @gserena01 our test program is now:
```
w = 400
case = startSketchOn('XY')
|> startProfileAt([-w, -w], %)
|> line(endAbsolute = [-w, w])
|> line(endAbsolute = [w, -w])
|> line(endAbsolute = [-w, -w])
|> close()
|> extrude(length = 200)
bump1 = startSketchOn(case, 'end')
|> circle({ center = [-50, -50], radius = 40 }, %)
|> extrude(length = 20)
// We pass in "bump1" here since we want to pattern just this object on the face.
useOriginal = true
target = bump1
transform = {
axis = [1, 0, 0],
instances = 3,
distance = -100
}
patternLinear3d(transform, target, useOriginal)
```
If you change the `useOriginal = true` to `false` you can see the difference.
2025-02-06 17:46:47 -06:00
|
|
|
"originalId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
208,
|
|
|
|
252,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"height": 0.0,
|
|
|
|
"startCapId": "[uuid]",
|
|
|
|
"endCapId": "[uuid]",
|
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
208,
|
|
|
|
252,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"seg01": {
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"value": "seg01",
|
|
|
|
"info": {
|
|
|
|
"type": "TagEngineInfo",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sketch": "[uuid]",
|
|
|
|
"path": {
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": {
|
2025-01-22 09:42:09 +13:00
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "TagDeclarator",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": "seg01"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9374999999999999
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "ToPoint"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"surface": {
|
2024-11-18 16:20:32 -06:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
292,
|
|
|
|
355,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "extrudePlane"
|
2025-01-22 09:42:09 +13:00
|
|
|
}
|
|
|
|
},
|
|
|
|
"__meta": [
|
2024-11-18 16:20:32 -06:00
|
|
|
{
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
348,
|
|
|
|
354,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"seg02": {
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"value": "seg02",
|
|
|
|
"info": {
|
|
|
|
"type": "TagEngineInfo",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sketch": "[uuid]",
|
|
|
|
"path": {
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1076,
|
|
|
|
1139,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9374999999999999
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "ToPoint"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"surface": {
|
2024-11-18 16:20:32 -06:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
1076,
|
|
|
|
1139,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "extrudePlane"
|
2025-01-22 09:42:09 +13:00
|
|
|
}
|
|
|
|
},
|
|
|
|
"__meta": [
|
2024-11-18 16:20:32 -06:00
|
|
|
{
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
1132,
|
|
|
|
1138,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
]
|
2024-11-18 16:20:32 -06:00
|
|
|
}
|
2025-01-22 09:42:09 +13:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"sketch001": {
|
|
|
|
"type": "Sketch",
|
|
|
|
"value": {
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "Sketch",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"paths": [
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
258,
|
|
|
|
286,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
292,
|
|
|
|
355,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
2025-01-22 09:42:09 +13:00
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
2024-11-18 16:20:32 -06:00
|
|
|
"type": "TagDeclarator",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": "seg01"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
361,
|
|
|
|
379,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
385,
|
|
|
|
410,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
416,
|
|
|
|
442,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
448,
|
|
|
|
547,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
553,
|
|
|
|
578,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
584,
|
|
|
|
662,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
668,
|
|
|
|
686,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
692,
|
|
|
|
705,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
711,
|
|
|
|
737,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
743,
|
|
|
|
789,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
795,
|
|
|
|
803,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"on": {
|
|
|
|
"type": "plane",
|
|
|
|
"id": "[uuid]",
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": "YZ",
|
|
|
|
"origin": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"xAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 1.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"yAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 1.0
|
|
|
|
},
|
|
|
|
"zAxis": {
|
|
|
|
"x": -1.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"start": {
|
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
208,
|
|
|
|
252,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"tags": {
|
|
|
|
"seg01": {
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"value": "seg01",
|
|
|
|
"info": {
|
|
|
|
"type": "TagEngineInfo",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sketch": "[uuid]",
|
|
|
|
"path": {
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9374999999999999
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
"surface": {
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
292,
|
|
|
|
355,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 354,
|
|
|
|
"start": 348,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg01"
|
|
|
|
},
|
|
|
|
"type": "extrudePlane"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
348,
|
|
|
|
354,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
KCL: Patterns of patterns can use the original sketch/solid as target (#5284)
Right now, if you model something like this box with a button:
<img width="413" alt="Screenshot 2025-02-06 at 3 08 03 PM" src="https://github.com/user-attachments/assets/04818a70-7cf3-4ee3-b8c5-df5959ac10db" />
Let's say you want to pattern the button, and repeat it a second time. If you try, you'll actually pattern the entire model (box + button).
<img width="486" alt="Screenshot 2025-02-06 at 3 08 52 PM" src="https://github.com/user-attachments/assets/09fc28d9-5d80-4ab3-b4dc-b8de2945fcba" />
Why? Because right now, when you sketch on a face (like the button was), both the box and the button share the same ID. All extrusions from a solid will share the same ID, because they all refer to the same composite solid.
This is helpful in some ways -- arguably the solid _is_ just one big complex shape now -- but it's not helpful in other ways. What if I want to only pattern the button? Luckily there's an original ID for the button part, which is still stored. So we just need a way to tell the pattern stdlib functions whether to use the target's main ID or its original ID. This PR adds a new optional bool, `useOriginal`, to patterns. It's false by default, to keep backwards-compatibility (make sure that old KCL code doesn't change).
This PR is based on https://github.com/KittyCAD/modeling-app/pull/3914. It's based on work Serena and I are doing to fix a bug (engine does not allow patterning a 3D solid which was sketched on a face of another solid). @gserena01 our test program is now:
```
w = 400
case = startSketchOn('XY')
|> startProfileAt([-w, -w], %)
|> line(endAbsolute = [-w, w])
|> line(endAbsolute = [w, -w])
|> line(endAbsolute = [-w, -w])
|> close()
|> extrude(length = 200)
bump1 = startSketchOn(case, 'end')
|> circle({ center = [-50, -50], radius = 40 }, %)
|> extrude(length = 20)
// We pass in "bump1" here since we want to pattern just this object on the face.
useOriginal = true
target = bump1
transform = {
axis = [1, 0, 0],
instances = 3,
distance = -100
}
patternLinear3d(transform, target, useOriginal)
```
If you change the `useOriginal = true` to `false` you can see the difference.
2025-02-06 17:46:47 -06:00
|
|
|
"originalId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
208,
|
|
|
|
252,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"sketch002": {
|
|
|
|
"type": "Solid",
|
|
|
|
"value": {
|
|
|
|
"type": "Solid",
|
|
|
|
"id": "[uuid]",
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": [
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1042,
|
|
|
|
1070,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1076,
|
|
|
|
1139,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1145,
|
|
|
|
1163,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1169,
|
|
|
|
1194,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1200,
|
|
|
|
1226,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1232,
|
|
|
|
1331,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1337,
|
|
|
|
1362,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
{
|
2025-01-22 09:42:09 +13:00
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1368,
|
|
|
|
1446,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
|
|
|
"tag": null,
|
2025-01-22 09:42:09 +13:00
|
|
|
"type": "extrudePlane"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1452,
|
|
|
|
1470,
|
|
|
|
0
|
2024-11-18 16:20:32 -06:00
|
|
|
],
|
2025-01-22 09:42:09 +13:00
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1476,
|
|
|
|
1489,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1495,
|
|
|
|
1521,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1527,
|
|
|
|
1573,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"faceId": "[uuid]",
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
1579,
|
|
|
|
1587,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"type": "extrudePlane"
|
2024-11-18 16:20:32 -06:00
|
|
|
}
|
2025-01-22 09:42:09 +13:00
|
|
|
],
|
|
|
|
"sketch": {
|
|
|
|
"type": "Sketch",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"paths": [
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1042,
|
|
|
|
1070,
|
|
|
|
0
|
|
|
|
]
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
2024-11-18 16:20:32 -06:00
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
2024-11-25 09:21:55 +13:00
|
|
|
1076,
|
|
|
|
1139,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
2025-01-22 09:42:09 +13:00
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
2025-01-22 09:42:09 +13:00
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
2024-11-18 16:20:32 -06:00
|
|
|
"sourceRange": [
|
2025-01-22 09:42:09 +13:00
|
|
|
1145,
|
|
|
|
1163,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
2025-01-22 09:42:09 +13:00
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1169,
|
|
|
|
1194,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
2.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1200,
|
|
|
|
1226,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1232,
|
|
|
|
1331,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.875,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1337,
|
|
|
|
1362,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1368,
|
|
|
|
1446,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.125
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1452,
|
|
|
|
1470,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1476,
|
|
|
|
1489,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.125,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1495,
|
|
|
|
1521,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
5.5
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1527,
|
|
|
|
1573,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.0,
|
|
|
|
0.9375
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1579,
|
|
|
|
1587,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
0.9375,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"on": {
|
|
|
|
"type": "plane",
|
|
|
|
"id": "[uuid]",
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"value": "YZ",
|
|
|
|
"origin": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"xAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 1.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"yAxis": {
|
|
|
|
"x": 0.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 1.0
|
|
|
|
},
|
|
|
|
"zAxis": {
|
|
|
|
"x": -1.0,
|
|
|
|
"y": 0.0,
|
|
|
|
"z": 0.0
|
|
|
|
},
|
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": []
|
|
|
|
},
|
|
|
|
"start": {
|
|
|
|
"from": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"to": [
|
|
|
|
1.0,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": null,
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
992,
|
|
|
|
1036,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"tags": {
|
|
|
|
"seg02": {
|
|
|
|
"type": "TagIdentifier",
|
|
|
|
"value": "seg02",
|
|
|
|
"info": {
|
|
|
|
"type": "TagEngineInfo",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sketch": "[uuid]",
|
|
|
|
"path": {
|
|
|
|
"__geoMeta": {
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1076,
|
|
|
|
1139,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"from": [
|
|
|
|
1.0625,
|
|
|
|
0.0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
|
|
|
"to": [
|
|
|
|
2.0,
|
|
|
|
0.9374999999999999
|
|
|
|
],
|
|
|
|
"type": "ToPoint"
|
|
|
|
},
|
|
|
|
"surface": {
|
|
|
|
"faceId": "[uuid]",
|
|
|
|
"id": "[uuid]",
|
|
|
|
"sourceRange": [
|
|
|
|
1076,
|
|
|
|
1139,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"tag": {
|
|
|
|
"end": 1138,
|
|
|
|
"start": 1132,
|
|
|
|
"type": "TagDeclarator",
|
|
|
|
"value": "seg02"
|
|
|
|
},
|
|
|
|
"type": "extrudePlane"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
1132,
|
|
|
|
1138,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2025-02-05 23:50:00 -05:00
|
|
|
"artifactId": "[uuid]",
|
KCL: Patterns of patterns can use the original sketch/solid as target (#5284)
Right now, if you model something like this box with a button:
<img width="413" alt="Screenshot 2025-02-06 at 3 08 03 PM" src="https://github.com/user-attachments/assets/04818a70-7cf3-4ee3-b8c5-df5959ac10db" />
Let's say you want to pattern the button, and repeat it a second time. If you try, you'll actually pattern the entire model (box + button).
<img width="486" alt="Screenshot 2025-02-06 at 3 08 52 PM" src="https://github.com/user-attachments/assets/09fc28d9-5d80-4ab3-b4dc-b8de2945fcba" />
Why? Because right now, when you sketch on a face (like the button was), both the box and the button share the same ID. All extrusions from a solid will share the same ID, because they all refer to the same composite solid.
This is helpful in some ways -- arguably the solid _is_ just one big complex shape now -- but it's not helpful in other ways. What if I want to only pattern the button? Luckily there's an original ID for the button part, which is still stored. So we just need a way to tell the pattern stdlib functions whether to use the target's main ID or its original ID. This PR adds a new optional bool, `useOriginal`, to patterns. It's false by default, to keep backwards-compatibility (make sure that old KCL code doesn't change).
This PR is based on https://github.com/KittyCAD/modeling-app/pull/3914. It's based on work Serena and I are doing to fix a bug (engine does not allow patterning a 3D solid which was sketched on a face of another solid). @gserena01 our test program is now:
```
w = 400
case = startSketchOn('XY')
|> startProfileAt([-w, -w], %)
|> line(endAbsolute = [-w, w])
|> line(endAbsolute = [w, -w])
|> line(endAbsolute = [-w, -w])
|> close()
|> extrude(length = 200)
bump1 = startSketchOn(case, 'end')
|> circle({ center = [-50, -50], radius = 40 }, %)
|> extrude(length = 20)
// We pass in "bump1" here since we want to pattern just this object on the face.
useOriginal = true
target = bump1
transform = {
axis = [1, 0, 0],
instances = 3,
distance = -100
}
patternLinear3d(transform, target, useOriginal)
```
If you change the `useOriginal = true` to `false` you can see the difference.
2025-02-06 17:46:47 -06:00
|
|
|
"originalId": "[uuid]",
|
2025-01-22 09:42:09 +13:00
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
992,
|
|
|
|
1036,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"height": 1.5,
|
|
|
|
"startCapId": "[uuid]",
|
|
|
|
"endCapId": "[uuid]",
|
|
|
|
"units": {
|
|
|
|
"type": "Mm"
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
2024-11-25 09:21:55 +13:00
|
|
|
992,
|
|
|
|
1036,
|
2024-11-18 16:20:32 -06:00
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
2025-01-22 09:42:09 +13:00
|
|
|
}
|
2024-11-18 16:20:32 -06:00
|
|
|
},
|
|
|
|
"wall_thickness": {
|
|
|
|
"type": "Number",
|
|
|
|
"value": 0.125,
|
|
|
|
"__meta": [
|
|
|
|
{
|
|
|
|
"sourceRange": [
|
|
|
|
17,
|
|
|
|
22,
|
|
|
|
0
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
},
|
2025-02-12 10:22:56 +13:00
|
|
|
"snapshots": [],
|
2024-11-18 16:20:32 -06:00
|
|
|
"parent": null
|
|
|
|
}
|
|
|
|
],
|
2025-02-12 10:22:56 +13:00
|
|
|
"currentEnv": [
|
|
|
|
0,
|
|
|
|
0
|
|
|
|
],
|
|
|
|
"callStack": []
|
2024-11-18 16:20:32 -06:00
|
|
|
}
|