Update mesh clone test (#6597)

This commit is contained in:
alteous
2025-05-15 17:46:37 +01:00
committed by GitHub
parent 21e967ea7f
commit 92fc294eae
9 changed files with 961 additions and 140 deletions

View File

@ -2748,7 +2748,6 @@ mod import_mesh_clone {
/// Test that KCL is executed correctly. /// Test that KCL is executed correctly.
#[tokio::test(flavor = "multi_thread")] #[tokio::test(flavor = "multi_thread")]
#[ignore = "turn on when katie fixes the mesh import"]
async fn kcl_test_execute() { async fn kcl_test_execute() {
super::execute(TEST_NAME, true).await super::execute(TEST_NAME, true).await
} }

View File

@ -996,10 +996,51 @@ description: Artifact commands import_mesh_clone.kcl
"direction": "positive" "direction": "positive"
} }
}, },
"units": "mm" "units": "m"
} }
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_object_transform",
"object_id": "[uuid]",
"transforms": [
{
"translate": {
"property": {
"x": -2000.0,
"y": -2000.0,
"z": 0.0
},
"set": false,
"is_local": true
},
"rotate_rpy": null,
"rotate_angle_axis": null,
"scale": null
}
]
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_set_material_params_pbr",
"object_id": "[uuid]",
"color": {
"r": 1.0,
"g": 1.0,
"b": 0.0,
"a": 100.0
},
"metalness": 0.0,
"roughness": 0.0,
"ambient_occlusion": 0.0
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1008,6 +1049,22 @@ description: Artifact commands import_mesh_clone.kcl
"entity_id": "[uuid]" "entity_id": "[uuid]"
} }
}, },
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{ {
"cmdId": "[uuid]", "cmdId": "[uuid]",
"range": [], "range": [],
@ -1018,7 +1075,7 @@ description: Artifact commands import_mesh_clone.kcl
{ {
"translate": { "translate": {
"property": { "property": {
"x": 1020.0, "x": 4000.0,
"y": 0.0, "y": 0.0,
"z": 0.0 "z": 0.0
}, },
@ -1044,8 +1101,138 @@ description: Artifact commands import_mesh_clone.kcl
"b": 0.0, "b": 0.0,
"a": 100.0 "a": 100.0
}, },
"metalness": 0.5, "metalness": 0.0,
"roughness": 0.5, "roughness": 0.0,
"ambient_occlusion": 0.0
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_clone",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_object_transform",
"object_id": "[uuid]",
"transforms": [
{
"translate": {
"property": {
"x": 0.0,
"y": 4000.0,
"z": 0.0
},
"set": false,
"is_local": true
},
"rotate_rpy": null,
"rotate_angle_axis": null,
"scale": null
}
]
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_set_material_params_pbr",
"object_id": "[uuid]",
"color": {
"r": 0.0,
"g": 1.0,
"b": 0.0,
"a": 100.0
},
"metalness": 0.0,
"roughness": 0.0,
"ambient_occlusion": 0.0
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_clone",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "entity_get_all_child_uuids",
"entity_id": "[uuid]"
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "set_object_transform",
"object_id": "[uuid]",
"transforms": [
{
"translate": {
"property": {
"x": 0.0,
"y": 4000.0,
"z": 0.0
},
"set": false,
"is_local": true
},
"rotate_rpy": null,
"rotate_angle_axis": null,
"scale": null
}
]
}
},
{
"cmdId": "[uuid]",
"range": [],
"command": {
"type": "object_set_material_params_pbr",
"object_id": "[uuid]",
"color": {
"r": 0.0,
"g": 0.0,
"b": 1.0,
"a": 100.0
},
"metalness": 0.0,
"roughness": 0.0,
"ambient_occlusion": 0.0 "ambient_occlusion": 0.0
} }
} }

View File

@ -8,6 +8,46 @@ description: Result of parsing import_mesh_clone.kcl
{ {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"outerAttrs": [
{
"commentStart": 0,
"end": 0,
"name": null,
"properties": [
{
"commentStart": 0,
"end": 0,
"key": {
"commentStart": 0,
"end": 0,
"name": "lengthUnit",
"start": 0,
"type": "Identifier"
},
"start": 0,
"type": "ObjectProperty",
"value": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "m",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
}
],
"start": 0,
"type": "Annotation"
}
],
"path": { "path": {
"type": "Foreign", "type": "Foreign",
"path": "../inputs/cube.obj" "path": "../inputs/cube.obj"
@ -17,7 +57,7 @@ description: Result of parsing import_mesh_clone.kcl
"alias": { "alias": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"name": "cube", "name": "yellow",
"start": 0, "start": 0,
"type": "Identifier" "type": "Identifier"
} }
@ -27,25 +67,18 @@ description: Result of parsing import_mesh_clone.kcl
"type": "ImportStatement" "type": "ImportStatement"
}, },
{ {
"commentStart": 0,
"declaration": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"id": { "expression": {
"commentStart": 0, "body": [
"end": 0, {
"name": "model",
"start": 0,
"type": "Identifier"
},
"init": {
"abs_path": false, "abs_path": false,
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"name": { "name": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"name": "cube", "name": "yellow",
"start": 0, "start": 0,
"type": "Identifier" "type": "Identifier"
}, },
@ -54,14 +87,173 @@ description: Result of parsing import_mesh_clone.kcl
"type": "Name", "type": "Name",
"type": "Name" "type": "Name"
}, },
"start": 0, {
"type": "VariableDeclarator" "arguments": [
}, {
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0, "end": 0,
"kind": "const", "name": "x",
"start": 0, "start": 0,
"type": "VariableDeclaration", "type": "Identifier"
"type": "VariableDeclaration" },
"arg": {
"argument": {
"commentStart": 0,
"end": 0,
"raw": "2000",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 2000.0,
"suffix": "None"
}
},
"commentStart": 0,
"end": 0,
"operator": "-",
"start": 0,
"type": "UnaryExpression",
"type": "UnaryExpression"
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "y",
"start": 0,
"type": "Identifier"
},
"arg": {
"argument": {
"commentStart": 0,
"end": 0,
"raw": "2000",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 2000.0,
"suffix": "None"
}
},
"commentStart": 0,
"end": 0,
"operator": "-",
"start": 0,
"type": "UnaryExpression",
"type": "UnaryExpression"
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "translate",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
}
}
],
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeExpression",
"type": "PipeExpression"
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "color",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "\"#ffff00\"",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": "#ffff00"
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "appearance",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "yellow",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
}, },
{ {
"commentStart": 0, "commentStart": 0,
@ -71,7 +263,7 @@ description: Result of parsing import_mesh_clone.kcl
"id": { "id": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"name": "model2", "name": "red",
"start": 0, "start": 0,
"type": "Identifier" "type": "Identifier"
}, },
@ -105,7 +297,7 @@ description: Result of parsing import_mesh_clone.kcl
"name": { "name": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"name": "model", "name": "yellow",
"start": 0, "start": 0,
"type": "Identifier" "type": "Identifier"
}, },
@ -129,12 +321,12 @@ description: Result of parsing import_mesh_clone.kcl
"arg": { "arg": {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,
"raw": "1020", "raw": "4000",
"start": 0, "start": 0,
"type": "Literal", "type": "Literal",
"type": "Literal", "type": "Literal",
"value": { "value": {
"value": 1020.0, "value": 4000.0,
"suffix": "None" "suffix": "None"
} }
} }
@ -160,9 +352,34 @@ description: Result of parsing import_mesh_clone.kcl
"start": 0, "start": 0,
"type": "CallExpressionKw", "type": "CallExpressionKw",
"type": "CallExpressionKw", "type": "CallExpressionKw",
"unlabeled": null "unlabeled": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
}
}
],
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeExpression",
"type": "PipeExpression"
},
"start": 0,
"type": "VariableDeclarator"
},
"end": 0,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
"type": "VariableDeclaration"
}, },
{ {
"commentStart": 0,
"end": 0,
"expression": {
"arguments": [ "arguments": [
{ {
"type": "LabeledArg", "type": "LabeledArg",
@ -182,50 +399,6 @@ description: Result of parsing import_mesh_clone.kcl
"type": "Literal", "type": "Literal",
"value": "#ff0000" "value": "#ff0000"
} }
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "metalness",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "50",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 50.0,
"suffix": "None"
}
}
},
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "roughness",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "50",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 50.0,
"suffix": "None"
}
}
} }
], ],
"callee": { "callee": {
@ -248,7 +421,131 @@ description: Result of parsing import_mesh_clone.kcl
"start": 0, "start": 0,
"type": "CallExpressionKw", "type": "CallExpressionKw",
"type": "CallExpressionKw", "type": "CallExpressionKw",
"unlabeled": null "unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "red",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"declaration": {
"commentStart": 0,
"end": 0,
"id": {
"commentStart": 0,
"end": 0,
"name": "green",
"start": 0,
"type": "Identifier"
},
"init": {
"body": [
{
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "clone",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "yellow",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
{
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "y",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "4000",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4000.0,
"suffix": "None"
}
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "translate",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
}
} }
], ],
"commentStart": 0, "commentStart": 0,
@ -265,6 +562,259 @@ description: Result of parsing import_mesh_clone.kcl
"start": 0, "start": 0,
"type": "VariableDeclaration", "type": "VariableDeclaration",
"type": "VariableDeclaration" "type": "VariableDeclaration"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "color",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "\"#00ff00\"",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": "#00ff00"
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "appearance",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "green",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
},
{
"commentStart": 0,
"declaration": {
"commentStart": 0,
"end": 0,
"id": {
"commentStart": 0,
"end": 0,
"name": "blue",
"start": 0,
"type": "Identifier"
},
"init": {
"body": [
{
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "clone",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "red",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
{
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "y",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "4000",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": {
"value": 4000.0,
"suffix": "None"
}
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "translate",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeSubstitution",
"type": "PipeSubstitution"
}
}
],
"commentStart": 0,
"end": 0,
"start": 0,
"type": "PipeExpression",
"type": "PipeExpression"
},
"start": 0,
"type": "VariableDeclarator"
},
"end": 0,
"kind": "const",
"start": 0,
"type": "VariableDeclaration",
"type": "VariableDeclaration"
},
{
"commentStart": 0,
"end": 0,
"expression": {
"arguments": [
{
"type": "LabeledArg",
"label": {
"commentStart": 0,
"end": 0,
"name": "color",
"start": 0,
"type": "Identifier"
},
"arg": {
"commentStart": 0,
"end": 0,
"raw": "\"#0000ff\"",
"start": 0,
"type": "Literal",
"type": "Literal",
"value": "#0000ff"
}
}
],
"callee": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "appearance",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name"
},
"commentStart": 0,
"end": 0,
"start": 0,
"type": "CallExpressionKw",
"type": "CallExpressionKw",
"unlabeled": {
"abs_path": false,
"commentStart": 0,
"end": 0,
"name": {
"commentStart": 0,
"end": 0,
"name": "blue",
"start": 0,
"type": "Identifier"
},
"path": [],
"start": 0,
"type": "Name",
"type": "Name"
}
},
"start": 0,
"type": "ExpressionStatement",
"type": "ExpressionStatement"
} }
], ],
"commentStart": 0, "commentStart": 0,
@ -282,7 +832,29 @@ description: Result of parsing import_mesh_clone.kcl
} }
} }
], ],
"1": [ "2": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "NonCodeNode",
"value": {
"type": "newLine"
}
}
],
"4": [
{
"commentStart": 0,
"end": 0,
"start": 0,
"type": "NonCodeNode",
"value": {
"type": "newLine"
}
}
],
"6": [
{ {
"commentStart": 0, "commentStart": 0,
"end": 0, "end": 0,

View File

@ -1,10 +0,0 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Error from executing import_mesh_clone.kcl
---
KCL Engine error
× engine: Modeling command failed: websocket closed early
╭────
13 │ )
╰────

View File

@ -1,13 +1,18 @@
import "../inputs/cube.obj" as cube @(lengthUnit = m)
import "../inputs/cube.obj" as yellow
model = cube yellow
|> translate(%, x = -2000, y = -2000)
appearance(yellow, color = "#ffff00")
model2 = clone(model) red = clone(yellow)
|> translate( |> translate(%, x = 4000)
x = 1020, appearance(red, color = "#ff0000")
)
|> appearance( green = clone(yellow)
color = "#ff0000", |> translate(%, y = 4000)
metalness = 50, appearance(green, color = "#00ff00")
roughness = 50
) blue = clone(red)
|> translate(%, y = 4000)
appearance(blue, color = "#0000ff")

View File

@ -25,6 +25,32 @@ description: Operations executed import_mesh_clone.kcl
"labeledArgs": {}, "labeledArgs": {},
"sourceRange": [] "sourceRange": []
}, },
{
"type": "KclStdLibCall",
"name": "clone",
"unlabeledArg": {
"value": {
"type": "ImportedGeometry",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {},
"sourceRange": []
},
{
"type": "KclStdLibCall",
"name": "clone",
"unlabeledArg": {
"value": {
"type": "ImportedGeometry",
"artifact_id": "[uuid]"
},
"sourceRange": []
},
"labeledArgs": {},
"sourceRange": []
},
{ {
"type": "GroupEnd" "type": "GroupEnd"
} }

View File

@ -0,0 +1,31 @@
---
source: kcl-lib/src/simulation_tests.rs
description: Variables in memory after executing import_mesh_clone.kcl
---
{
"blue": {
"type": "ImportedGeometry",
"id": "[uuid]",
"value": [
"cube.obj"
]
},
"green": {
"type": "ImportedGeometry",
"id": "[uuid]",
"value": [
"cube.obj"
]
},
"red": {
"type": "ImportedGeometry",
"id": "[uuid]",
"value": [
"cube.obj"
]
},
"yellow": {
"type": "Module",
"value": 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -2,10 +2,21 @@
source: kcl-lib/src/simulation_tests.rs source: kcl-lib/src/simulation_tests.rs
description: Result of unparsing import_mesh_clone.kcl description: Result of unparsing import_mesh_clone.kcl
--- ---
import "../inputs/cube.obj" as cube @(lengthUnit = m)
import "../inputs/cube.obj" as yellow
model = cube yellow
|> translate(%, x = -2000, y = -2000)
appearance(yellow, color = "#ffff00")
model2 = clone(model) red = clone(yellow)
|> translate(x = 1020) |> translate(%, x = 4000)
|> appearance(color = "#ff0000", metalness = 50, roughness = 50) appearance(red, color = "#ff0000")
green = clone(yellow)
|> translate(%, y = 4000)
appearance(green, color = "#00ff00")
blue = clone(red)
|> translate(%, y = 4000)
appearance(blue, color = "#0000ff")