diff --git a/coverage/glb-machine-manager/machine-type/browser.report.json b/coverage/glb-machine-manager/machine-type/browser.report.json new file mode 100644 index 0000000..8f22145 --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/browser.report.json @@ -0,0 +1,12 @@ +{ + "report_id": "GLB-MGR-E15", + "url": "http://127.0.0.1:5180/", + "status": "verified", + "checks": [ + "dialog selects BC while controller stays AC; switching drops incompatible tilt only; undo/redo restores type and bindings; saved GLB contains BC metadata", + "controller workspace changes do not change draft type; reopening saved machine restores type, calibration and hierarchy in one undoable transaction", + "applying BC design from AC controller changes controller type without altering design draft", + "controller import accepts saved BC GLB from AC workspace and automatically switches to BC with physical zero" + ], + "errors": [] +} diff --git a/coverage/glb-machine-manager/machine-type/controller-import.png b/coverage/glb-machine-manager/machine-type/controller-import.png new file mode 100644 index 0000000..9f72cf9 Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/controller-import.png differ diff --git a/coverage/glb-machine-manager/machine-type/controls.report.json b/coverage/glb-machine-manager/machine-type/controls.report.json new file mode 100644 index 0000000..36becfb --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/controls.report.json @@ -0,0 +1 @@ +{"schema":"axis-control-inventory.v1","status":"verified","documented_controls":134,"duplicate_command_entries_removed":["machine_menu","view_menu","program_pane_load","tool_probe_commands"],"contract":"linuxcnc-axis-web-control-panel-source-logic.md"} diff --git a/coverage/glb-machine-manager/machine-type/dialog-type.png b/coverage/glb-machine-manager/machine-type/dialog-type.png new file mode 100644 index 0000000..2e2410d Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/dialog-type.png differ diff --git a/coverage/glb-machine-manager/machine-type/history.report.json b/coverage/glb-machine-manager/machine-type/history.report.json new file mode 100644 index 0000000..4c46479 --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/history.report.json @@ -0,0 +1 @@ +{"report_id":"GLB-MGR-E14-HISTORY","status":"verified","checks":["undo/redo","duplicate edits ignored","new edit discards redo","30-entry bound","clear preserves draft","machine type change preserves general axes and clears incompatible tilt","undo restores type and bindings"]} diff --git a/coverage/glb-machine-manager/machine-type/mill700/browser.report.json b/coverage/glb-machine-manager/machine-type/mill700/browser.report.json new file mode 100644 index 0000000..0422d7d --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/mill700/browser.report.json @@ -0,0 +1,1958 @@ +{ + "report_id": "GLB-MGR-E13", + "status": "verified", + "url": "http://127.0.0.1:5180/", + "machines": [ + { + "coordinates": "XYZAC", + "checks": [ + "fixed or single DOF", + "direction/sign and parent isolation", + "pivot and child inheritance", + "duplicate axis rejected", + "JSON on scene and real bed", + "GLB roundtrip restores calibration and bindings", + "single-file apply", + "WASM runtime axis mapping", + "live dialog follows actual joints" + ], + "nodeCount": 134, + "samples": [ + { + "tick": 100, + "q": [ + 1.4745156170381795, + 0.7913420683146256, + 0.7737252920532813, + 1.5053392533549568, + 2.258008880032435 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 469.1133610607638, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.804044612048614, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -203.48465342462055, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.843737729190337, + 18.940227031707764, + 1.3653946023046952 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 375.15160773101803 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.051774628756988, + 22.691743109017942, + -7.6750945944726485 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.09145522025303604, + 0, + 0, + 0.9958091898995854 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.058801034062135035, + 0.9982697222660936 + ], + "world": [ + -18.516113758087158, + 9.137450616348518, + -8.404981102412524 + ] + } + } + }, + { + "tick": 205, + "q": [ + 3.0729879121457366, + 1.782000018421558, + 1.712789553547326, + 3.219982073303007, + 4.82997310995451 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 470.7118333558713, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.78805988909754, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -202.49399547451364, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.827753006239263, + 18.940227031707764, + 1.3753011818057645 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 374.212543469524 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.035789905805913, + 22.682352466403003, + -7.665188014971579 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.0765451644067476, + 0, + 0, + 0.9970661150625589 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.03638231839664116, + 0.9993379442951645 + ], + "world": [ + -18.516113758087158, + 8.94604814846549, + -8.411242923560971 + ] + } + } + }, + { + "tick": 315, + "q": [ + 4.644643136314463, + 2.912066387976574, + 2.7733869275658725, + 5.016274551343806, + 7.52441182701571 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 472.28348858004006, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.772343336855847, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -201.3639291049586, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.81203645399757, + 18.940227031707764, + 1.386601845501315 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 373.15194609550537 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.02007335356422, + 22.671746492662816, + -7.653887351276029 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.06090678156716169, + 0, + 0, + 0.9981434586065923 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.012876580148092329, + 0.9999170934050932 + ], + "world": [ + -18.516113758087158, + 8.745425157040543, + -8.41165723318414 + ] + } + } + }, + { + "tick": 425, + "q": [ + 6.10019750698708, + 4.124596958335049, + 3.92325051479404, + 6.812567029384731, + 10.218850544077096 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 473.7390429507127, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.757787793149124, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -200.15139853460013, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.797480910290847, + 18.940227031707764, + 1.3987271512048993 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.0020825082773 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.005517809857498, + 22.660247856790534, + -7.641762045572444 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.04525343273227491, + 0, + 0, + 0.9989755386524464 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.010636276984034002, + 0.9999434332060584 + ], + "world": [ + -18.516113758087158, + 8.544887766612636, + -8.405782594375792 + ] + } + } + }, + { + "tick": 535, + "q": [ + 7.429198580044282, + 5.406174543767128, + 5.171941442872232, + 8.60885950742633, + 12.913289261139493 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 475.06804402376986, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.744497782418552, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -198.86982094916806, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.784190899560276, + 18.940227031707764, + 1.4115429270592201 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 370.75339158019904 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.992227799126926, + 22.647760947509752, + -7.628946269718123 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.029588964238057888, + 0, + 0, + 0.999562150741673 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.03414325379572232, + 0.9994169491359655 + ], + "world": [ + -18.516113758087158, + 8.344633069012817, + -8.39362478083886 + ] + } + } + }, + { + "tick": 640, + "q": [ + 8.570613188909055, + 6.680488566094365, + 6.463568096598044, + 10.323502327375126, + 15.485253491062688 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 476.20945863263466, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.7330836363299, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -197.5955069268408, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.772776753471625, + 18.940227031707764, + 1.4242860672824926 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 369.4617649264733 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.980813653038275, + 22.634844680972495, + -7.616203129494851 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.01462968023530727, + 0, + 0, + 0.9998929805015198 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.05656430649923953, + 0.9983989579473028 + ], + "world": [ + -18.516113758087158, + 8.1539253889101, + -8.376169241154273 + ] + } + } + }, + { + "tick": 750, + "q": [ + 9.624130274954158, + 8.05383206179948, + 7.9275497323669235, + 12.119794805416722, + 18.179692208125083 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 477.26297571867974, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.72254846546945, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -196.2221634311357, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.762241582611175, + 18.940227031707764, + 1.438019502239544 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 367.9977832907044 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.970278482177825, + 22.620204864614806, + -7.6024696945378 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0.001045406700237274, + 0, + 0, + 0.9999994535622663 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.08002227499805284, + 0.9967930755699179 + ], + "world": [ + -18.516113758087158, + 7.9547910764261, + -8.351770840954291 + ] + } + } + }, + { + "tick": 860, + "q": [ + 10.523447652765832, + 9.450109794530164, + 9.509926513492955, + 13.916087283457562, + 20.874130925186343 + ], + "nodes": { + "X": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2", + "localMm": [ + 478.16229309649145, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.713555291691335, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -194.82588569840502, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.75324840883306, + 18.940227031707764, + 1.4519822795668507 + ] + }, + "Z": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 366.4154065095783 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.96128530839971, + 22.604381096803543, + -7.588506917210493 + ] + }, + "A": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0.0167202367587681, + 0, + 0, + 0.9998602070703337 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9c8eeb6d-a8a6-467a-a6b6-eb2cb01b6e1e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.10343600277046493, + 0.9946361110129013 + ], + "world": [ + -18.516113758087158, + 7.756519414637323, + -8.321142349769177 + ] + } + } + } + ], + "liveSample": { + "q": { + "x": 3.8892560571110337, + "y": 6.567145928671595, + "z": -0.4501619147586, + "a": -1.510428739608983, + "b": 0, + "c": 5.14928543398503 + }, + "joints": { + "X": { + "localMm": [ + 476.5281015008366, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8729897207647883, + 0.34002411365509033, + 1.488389492034912 + ] + }, + "Y": { + "localMm": [ + -3.9693117141723633, + -197.7088495642636, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8769590324789607, + 0.14231526409082673, + 1.8940227031707764 + ] + }, + "Z": { + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 369.3754949378299 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8977627224356257, + -0.7617336555869076, + 2.2633981981086064 + ] + }, + "A": { + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + -0.013180595641647447, + 0, + 0, + 0.9999131321762563 + ], + "world": [ + -1.8515222072601318, + -0.20127654075622559, + 0.8832522630691528 + ] + }, + "C": { + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.0449208712162498, + 0.9989905481680861 + ], + "world": [ + -1.8516113758087158, + -0.8374175634466774, + 0.8135484259465424 + ] + } + } + } + }, + { + "coordinates": "XYZBC", + "checks": [ + "fixed or single DOF", + "direction/sign and parent isolation", + "pivot and child inheritance", + "duplicate axis rejected", + "JSON on scene and real bed", + "GLB roundtrip restores calibration and bindings", + "single-file apply", + "WASM runtime axis mapping", + "live dialog follows actual joints" + ], + "nodeCount": 134, + "samples": [ + { + "tick": 175, + "q": [ + 2.687670777434329, + 1.5565193197614768, + 1.2384314238679097, + 2.7300841247464254, + 4.095126187119638 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 470.3265162211599, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.79191306044465, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -202.71947617317372, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.831606177586373, + 18.940227031707764, + 1.3730463748191637 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 374.6869015992034 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -19.039643077153023, + 22.687096047699796, + -7.66744282195818 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.08080707516852918, + 0, + 0.9967297610700243 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.04279002994831684, + 0.9990840872204012 + ], + "world": [ + -18.376847454555293, + 7.979192709084082, + -8.353592157363893 + ] + } + } + }, + { + "tick": 440, + "q": [ + 6.675016478260585, + 4.765274074577913, + 2.7293069123949874, + 7.05751600366313, + 10.586274005494694 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 474.31386192198613, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.752039603436387, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -199.51072141835726, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.79173272057811, + 18.940227031707764, + 1.405133922367328 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 373.1960261106763 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.99976962014476, + 22.672187292814524, + -7.635355274410015 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.04311793779207114, + 0, + 0.9990699892602916 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.013842410016514182, + 0.9999041892526177 + ], + "world": [ + -18.4416309319385, + 7.971184233749943, + -8.353592157363893 + ] + } + } + }, + { + "tick": 665, + "q": [ + 9.668010009729556, + 8.131127259084957, + 3.629057582013586, + 10.731750617839126, + 16.09762592675869 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 477.3068554534551, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.7221096681217, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -196.14486823385022, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.761802785263423, + 18.940227031707764, + 1.4387924542123984 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.2962754410577 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.969839684830074, + 22.663189786118338, + -7.601696742564945 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.011067337782832394, + 0, + 0.999938755141734 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.06189887515293137, + 0.9980824260825364 + ], + "world": [ + -18.496979816532523, + 7.968238701578256, + -8.353592157363893 + ] + } + } + }, + { + "tick": 885, + "q": [ + 12.144646884112692, + 11.911171833709634, + 4.290853302026374, + 14.3243355739212, + 21.486503360881798 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 479.7834923278383, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.697343299377867, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -192.36482365922555, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.73703641651959, + 18.940227031707764, + 1.476592899958645 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.6344797210449 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.94507331608624, + 22.65657182891821, + -7.563896296818699 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0.020282263499086708, + 0, + 0.9997942937361433 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.10874979374867313, + 0.9940691537109584 + ], + "world": [ + -18.551172869589635, + 7.968794067874564, + -8.353592157363893 + ] + } + } + }, + { + "tick": 1090, + "q": [ + 13.992611211270688, + 15.794471094872545, + 4.815535517767739, + 17.671971555723022, + 26.50795733358453 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 481.63145665499627, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.678863656106287, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -188.48152439806265, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.71855677324801, + 18.940227031707764, + 1.5154258925702742 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.10979750530356 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.92659367281466, + 22.651325006760796, + -7.52506330420707 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0.04947708059731684, + 0, + 0.9987752592528344 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.1521920184720191, + 0.9883509445097994 + ], + "world": [ + -18.601548117864162, + 7.97236723546388, + -8.353592157363893 + ] + } + } + }, + { + "tick": 1335, + "q": [ + 14.375941653271123, + 16.53104347189933, + 4.8915124812247495, + 18.327938437297647, + 27.213230728829412 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 482.0147870969967, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.67503035168628, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -187.74495202103586, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.714723468828005, + 18.940227031707764, + 1.522791616340542 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.0338205418465 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.922760368394655, + 22.650565237126226, + -7.517697580436802 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0.05519361876476457, + 0, + 0.9984756704335113 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.15827207288979334, + 0.9873955392562638 + ], + "world": [ + -18.611389976712047, + 7.973411913584062, + -8.353592157363893 + ] + } + } + }, + { + "tick": 1565, + "q": [ + 12.48208141034311, + 12.015309049957578, + 4.283355691796985, + 14.57205416503052, + 20.953423608384202 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 480.1209268540687, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.69396895411556, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -192.2606864429776, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.733662071257285, + 18.940227031707764, + 1.4776342721211244 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 371.6419773312743 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.941698970823936, + 22.656646805020504, + -7.56285492465622 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0.02244352225506769, + 0, + 0.9997481124307194 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.10412422555752833, + 0.9945642994055462 + ], + "world": [ + -18.554906856736093, + 7.9689575735371, + -8.353592157363893 + ] + } + } + }, + { + "tick": 1805, + "q": [ + 9.820320251528758, + 7.811723261601708, + 3.572641477045069, + 10.65287057657662, + 14.421450960961034 + ], + "nodes": { + "X": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2", + "localMm": [ + 477.45916569525434, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.720586565703705, + 14.883894920349121, + 3.4002411365509015 + ] + }, + "Y": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1", + "localMm": [ + -3.9693117141723633, + -196.46427223133347, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.76027968284543, + 18.940227031707764, + 1.435598414237566 + ] + }, + "Z": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/2/1/0", + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 372.3526915460262 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -18.96831658241208, + 22.663753947168026, + -7.604890782539778 + ] + }, + "B": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3", + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.011755651165085382, + 0, + 0.9999308999454336 + ], + "world": [ + -18.51522207260132, + 8.832522630691528, + -2.0127654075622576 + ] + }, + "C": { + "id": "9f2cf262-8c93-4b3f-a3de-a280dba98f7e:scene/0/0/0/3/1", + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0.04729343702164404, + 0.9988810393708951 + ], + "world": [ + -18.495789960307132, + 7.968264635043388, + -8.353592157363893 + ] + } + } + } + ], + "liveSample": { + "q": { + "x": -15.070045339815907, + "y": -1.2782616706728556, + "z": -13.852753749795813, + "a": 0, + "b": -22.000000000000004, + "c": -29 + }, + "joints": { + "X": { + "localMm": [ + 457.56880010390967, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8919490221617155, + 0.34002411365509033, + 1.488389492034912 + ] + }, + "Y": { + "localMm": [ + -3.9693117141723633, + -205.55425716360804, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.8959183338758878, + 0.1344698564914823, + 1.8940227031707764 + ] + }, + "Z": { + "localMm": [ + -20.80368995666504, + -904.0489196777344, + 382.77808677286714 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "world": [ + -1.9167220238325529, + -0.769579063186252, + 2.2768007899436435 + ] + }, + "B": { + "localMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + -0.19080899537654483, + 0, + 0.981627183447664 + ], + "world": [ + -1.8515222072601318, + -0.20127654075622559, + 0.8832522630691528 + ] + }, + "C": { + "localMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + -0.25038000405444144, + 0.9681476403781077 + ], + "world": [ + -1.81922104324613, + -0.8353592157363892, + 0.8030660441556757 + ] + } + } + } + } + ], + "browser_errors": [] +} diff --git a/coverage/glb-machine-manager/machine-type/mill700/xyzac-live.png b/coverage/glb-machine-manager/machine-type/mill700/xyzac-live.png new file mode 100644 index 0000000..68265ea Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/mill700/xyzac-live.png differ diff --git a/coverage/glb-machine-manager/machine-type/mill700/xyzac.json b/coverage/glb-machine-manager/machine-type/mill700/xyzac.json new file mode 100644 index 0000000..a698e90 --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/mill700/xyzac.json @@ -0,0 +1,4108 @@ +{ + "schema": "linuxcnc.joint-model/1", + "coordinates": "XYZAC", + "units": { + "length": "mm", + "angle": "deg", + "gltfLength": "m" + }, + "controller": { + "source": "linuxcnc-wasm.visual.joints", + "axisOrder": [ + "X", + "Y", + "Z", + "A", + "C" + ] + }, + "calibration": { + "cOriginMm": [ + 0, + 0, + 0 + ], + "tiltOffsetMm": [ + 0, + 0, + 0 + ], + "physicalZero": { + "x": 5, + "y": 0, + "z": 7, + "a": 12, + "b": 0, + "c": 9 + } + }, + "nodes": [ + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene", + "parentId": null, + "name": "MILL700-U_1.glb", + "role": "base", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:source-scene", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene", + "name": "AuxScene", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "source-scene" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:source-scene", + "name": "MILL700-U_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0" + }, + "zero": { + "positionMm": [ + -2349.517822265625, + -1341.2762880325317, + 2486.2565994262695 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "mapl14805146fe3i-None348856022", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/0" + }, + "zero": { + "positionMm": [ + -868.2212829589844, + 1555.3476810455322, + -784.3674421310425 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "mapl14805146fe3i-None348856022_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/1" + }, + "zero": { + "positionMm": [ + -157.12809562683105, + 1193.3876276016235, + -794.0124273300171 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "MILL700-A-主轴-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2" + }, + "zero": { + "positionMm": [ + 472.6388454437256, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "X", + "direction": "x", + "sign": 1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "name": "MILL700-", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0" + }, + "zero": { + "positionMm": [ + -31.702756881713867, + -564.4468069076538, + 187.18719482421875 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0", + "name": "平面004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/0" + }, + "zero": { + "positionMm": [ + 69.46694850921631, + 0.13110041618347168, + 468.2943820953369 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0", + "name": "立方体064", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1" + }, + "zero": { + "positionMm": [ + -322.7880001068115, + 0.024276018142700174, + 198.69959354400635 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体025", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/0" + }, + "zero": { + "positionMm": [ + 680.0000667572021, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体026", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/1" + }, + "zero": { + "positionMm": [ + 860.0003719329834, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体027", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/2" + }, + "zero": { + "positionMm": [ + 880.0003528594971, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体028", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/3" + }, + "zero": { + "positionMm": [ + 900.0003337860107, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/4", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体029", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/4" + }, + "zero": { + "positionMm": [ + 779.9999713897705, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/5", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体030", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/5" + }, + "zero": { + "positionMm": [ + 799.9999523162842, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/6", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体031", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/6" + }, + "zero": { + "positionMm": [ + 839.9999141693115, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/7", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体032", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/7" + }, + "zero": { + "positionMm": [ + 819.9999332427979, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/8", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体033", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/8" + }, + "zero": { + "positionMm": [ + 740.0000095367432, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/9", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体034", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/9" + }, + "zero": { + "positionMm": [ + 759.9999904632568, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/10", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体035", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/10" + }, + "zero": { + "positionMm": [ + 720.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/11", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体036", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/11" + }, + "zero": { + "positionMm": [ + 700.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/12", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体053", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/12" + }, + "zero": { + "positionMm": [ + -160.00008583068848, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/13", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体054", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/13" + }, + "zero": { + "positionMm": [ + -180.00006675720215, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/14", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体055", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/14" + }, + "zero": { + "positionMm": [ + -220.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/15", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体056", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/15" + }, + "zero": { + "positionMm": [ + -200.00004768371582, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/16", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体057", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/16" + }, + "zero": { + "positionMm": [ + -79.99992370605469, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/17", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体058", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/17" + }, + "zero": { + "positionMm": [ + -99.99990463256836, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/18", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体059", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/18" + }, + "zero": { + "positionMm": [ + -139.9998664855957, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/19", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体060", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/19" + }, + "zero": { + "positionMm": [ + -119.99988555908203, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/20", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体061", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/20" + }, + "zero": { + "positionMm": [ + -39.999961853027344, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/21", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体062", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/21" + }, + "zero": { + "positionMm": [ + -59.999942779541016, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1/22", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/0/1", + "name": "立方体063", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/22" + }, + "zero": { + "positionMm": [ + -19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "name": "MILL700-A-主轴-JT2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1" + }, + "zero": { + "positionMm": [ + -3.9693117141723633, + -204.27599549293518, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "Y", + "direction": "y", + "sign": 1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1", + "name": "MILL700-A-主轴-JT3", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0" + }, + "zero": { + "positionMm": [ + -20.80368995666504, + -904.0489196777344, + 368.9253330230713 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "Z", + "direction": "z", + "sign": -1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0", + "name": "123", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0" + }, + "zero": { + "positionMm": [ + 0.059604644775390625, + 1.8161535263061523, + -702.0378112792969 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0", + "name": "_3028378857429004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0" + }, + "zero": { + "positionMm": [ + 0.5391836166381836, + -2.054750919342041, + 502.8970241546631 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0/0", + "name": "_3028378857429004_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0/0" + }, + "zero": { + "positionMm": [ + -0.5391836166381836, + 2.054750919342041, + -502.8970241546631 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/0/0", + "name": "_3028378857429004_2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0/1" + }, + "zero": { + "positionMm": [ + -0.49185752868652344, + 1.9202828407287598, + -286.04042530059814 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0", + "name": "MILL700-A-主轴-JT4", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/1" + }, + "zero": { + "positionMm": [ + 1.3986825942993164, + 0.9530782699584961, + -850.0750064849854 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0", + "name": "SHS25C100020_Track_TSXXX-0000058522006", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/2" + }, + "zero": { + "positionMm": [ + 0.07891654968261719, + 167.50484704971313, + -9.09280776977539 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1", + "name": "SHS25C100020_Track_TSXXX-0000058522002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/1" + }, + "zero": { + "positionMm": [ + 3.1614303588867188, + 121.06472253799438, + -268.9887285232544 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/2" + }, + "zero": { + "positionMm": [ + -23.18131923675537, + -708.1259489059448, + 123.15058708190918 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/2" + }, + "zero": { + "positionMm": [ + -7.143378257751465, + -71.1749792098999, + 10.328888893127441 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522001001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/3" + }, + "zero": { + "positionMm": [ + -7.143378257751465, + -71.1749792098999, + 10.328888893127441 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "MILL700-A-工作台-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3" + }, + "zero": { + "positionMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "A", + "direction": "x", + "sign": 1, + "dof": 1, + "type": "revolute", + "unit": "deg", + "frame": "parent" + } + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3", + "name": "MILL700-A-工作台-JT1001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3", + "name": "MILL700-A-工作台-JT2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1" + }, + "zero": { + "positionMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "C", + "direction": "z", + "sign": 1, + "dof": 1, + "type": "revolute", + "unit": "deg", + "frame": "parent" + } + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1", + "name": "MILL700-A--工件托盘", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1/0" + }, + "zero": { + "positionMm": [ + -0.039458274841308594, + 0.02866983413696289, + 60.18102169036865 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1/0", + "name": "MILL700工件", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3", + "name": "托底A", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/2" + }, + "zero": { + "positionMm": [ + -24.169445037841797, + -631.3432455062866, + -370.8224296569824 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/2/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/2", + "name": "MILL700-A-工作台-JT1001_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/2/0" + }, + "zero": { + "positionMm": [ + 24.172663688659668, + 650.3862142562866, + 370.81682682037354 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "MILL700-A-门1-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4" + }, + "zero": { + "positionMm": [ + 1380.0005912780762, + 622.5010752677917, + -767.5008773803711 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4", + "name": "mapl14805146fe3i014", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/0" + }, + "zero": { + "positionMm": [ + 69.13900375366211, + -430.00227212905884, + -264.99879360198975 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4", + "name": "mapl14805146fe3i016", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/1" + }, + "zero": { + "positionMm": [ + -62.04628944396973, + 56.50210380554199, + 775.352954864502 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/4", + "name": "mapl14805146fe3i431", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/2" + }, + "zero": { + "positionMm": [ + -6.041586399078369, + 54.02481555938721, + -313.0190372467041 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "MILL700-A-门2-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5" + }, + "zero": { + "positionMm": [ + 517.0004367828369, + -263.78095149993896, + -744.2798614501953 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5", + "name": "mapl14805146fe3i197", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0" + }, + "zero": { + "positionMm": [ + -78.32932472229004, + 165.7944917678833, + 817.5182342529297 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0", + "name": "_126_807_34061712252_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0", + "name": "mapl14805146fe3i001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/1" + }, + "zero": { + "positionMm": [ + 648.3297348022461, + -211.74824237823486, + -1078.8166522979736 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0", + "name": "mapl14805146fe3i196", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2" + }, + "zero": { + "positionMm": [ + 101.07946395874023, + -114.5554780960083, + -789.954662322998 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/2/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/2", + "name": "_126_807_35301710201", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/2/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/5/0/2", + "name": "_126_807_35301710201_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2/1" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0", + "name": "MILL700-A底座", + "role": "base", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6" + }, + "zero": { + "positionMm": [ + 459.7148895263672, + 906.7631363868713, + -2320.876121520996 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "SHS25C100020_Track_TSXXX-0000058522001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/0" + }, + "zero": { + "positionMm": [ + 39.36731815338135, + 667.2102808952332, + 1206.9398164749146 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "底座002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/1" + }, + "zero": { + "positionMm": [ + 2.282381057739258, + 382.2411298751831, + 456.71534538269043 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "底座009", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/2" + }, + "zero": { + "positionMm": [ + 323.70173931121826, + -1000.0901222229004, + 292.11002588272095 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "底座011", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/3" + }, + "zero": { + "positionMm": [ + -3093.5568809509277, + -2605.290651321411, + -2075.2453804016113 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/4", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "底座012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/4" + }, + "zero": { + "positionMm": [ + 618.5640096664429, + -0.025063753128051758, + 520.3256011009216 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/5", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "底座015", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/5" + }, + "zero": { + "positionMm": [ + 838.29665184021, + -237.21277713775635, + 275.1512825489044 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "显示器001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6" + }, + "zero": { + "positionMm": [ + -682.807445526123, + -1648.0319499969482, + 759.9776983261108 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0" + }, + "zero": { + "positionMm": [ + -0.8423328399658203, + -13.741254806518555, + -113.4251356124878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/0/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/0", + "name": "Mesh_66", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/0/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/0", + "name": "Mesh_66_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0/1" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/1" + }, + "zero": { + "positionMm": [ + -0.8423328399658203, + -13.741254806518555, + -113.4251356124878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/2" + }, + "zero": { + "positionMm": [ + -81.01844787597656, + -285.07375717163086, + -248.1238842010498 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "name": "平面", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/3" + }, + "zero": { + "positionMm": [ + -59.470415115356445, + -12.278079986572266, + 561.9646310806274 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6/4", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/6", + "name": "平面001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/4" + }, + "zero": { + "positionMm": [ + 3.1015872955322266, + -22.612810134887695, + 530.0655364990234 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "移动柜", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7" + }, + "zero": { + "positionMm": [ + -467.17357635498047, + 1571.4397430419922, + 533.7636470794678 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/0" + }, + "zero": { + "positionMm": [ + -21.704435348510742, + 3.5028457641601562, + 45.71419954299927 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/1" + }, + "zero": { + "positionMm": [ + -21.704435348510742, + 3.5028457641601562, + 45.71419954299927 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/2" + }, + "zero": { + "positionMm": [ + 408.51664543151855, + -30.3189754486084, + -459.0965211391449 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910_1001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/3" + }, + "zero": { + "positionMm": [ + 408.51664543151855, + -30.3189754486084, + -459.0965211391449 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6", + "name": "立方体", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8" + }, + "zero": { + "positionMm": [ + 358.4332466125488, + 211.11465990543365, + 1708.8958024978638 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/0", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/0" + }, + "zero": { + "positionMm": [ + 19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/1", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/1" + }, + "zero": { + "positionMm": [ + 59.999942779541016, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/2", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体003", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/2" + }, + "zero": { + "positionMm": [ + 39.999961853027344, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/3", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/3" + }, + "zero": { + "positionMm": [ + 119.99988555908203, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/4", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体005", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/4" + }, + "zero": { + "positionMm": [ + 139.9998664855957, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/5", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体006", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/5" + }, + "zero": { + "positionMm": [ + 99.99990463256836, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/6", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体007", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/6" + }, + "zero": { + "positionMm": [ + 79.99992370605469, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/7", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体008", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/7" + }, + "zero": { + "positionMm": [ + 240.00024795532227, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/8", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体009", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/8" + }, + "zero": { + "positionMm": [ + 260.00022888183594, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/9", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体010", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/9" + }, + "zero": { + "positionMm": [ + 300.0001907348633, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/10", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体011", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/10" + }, + "zero": { + "positionMm": [ + 280.0002098083496, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/11", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/11" + }, + "zero": { + "positionMm": [ + 200.00028610229492, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/12", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体013", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/12" + }, + "zero": { + "positionMm": [ + 220.0002670288086, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/13", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体014", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/13" + }, + "zero": { + "positionMm": [ + 180.00030517578125, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/14", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体015", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/14" + }, + "zero": { + "positionMm": [ + 160.00032424926758, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/15", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体016", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/15" + }, + "zero": { + "positionMm": [ + 320.00017166137695, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/16", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体017", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/16" + }, + "zero": { + "positionMm": [ + 340.0001525878906, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/17", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体018", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/17" + }, + "zero": { + "positionMm": [ + 380.0005912780762, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/18", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体019", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/18" + }, + "zero": { + "positionMm": [ + 360.0001335144043, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/19", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体020", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/19" + }, + "zero": { + "positionMm": [ + 440.000057220459, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/20", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体021", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/20" + }, + "zero": { + "positionMm": [ + 460.00051498413086, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/21", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体022", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/21" + }, + "zero": { + "positionMm": [ + 420.0005531311035, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/22", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体023", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/22" + }, + "zero": { + "positionMm": [ + 400.00009536743164, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/23", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体024", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/23" + }, + "zero": { + "positionMm": [ + -19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/24", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体037", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/24" + }, + "zero": { + "positionMm": [ + -700.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/25", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体038", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/25" + }, + "zero": { + "positionMm": [ + -720.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/26", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体039", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/26" + }, + "zero": { + "positionMm": [ + -759.9999904632568, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/27", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体040", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/27" + }, + "zero": { + "positionMm": [ + -740.0000095367432, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/28", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体041", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/28" + }, + "zero": { + "positionMm": [ + -819.9999332427979, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/29", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体042", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/29" + }, + "zero": { + "positionMm": [ + -839.9999141693115, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/30", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体043", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/30" + }, + "zero": { + "positionMm": [ + -799.9999523162842, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/31", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体044", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/31" + }, + "zero": { + "positionMm": [ + -779.9999713897705, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/32", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体045", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/32" + }, + "zero": { + "positionMm": [ + -940.000057220459, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/33", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体046", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/33" + }, + "zero": { + "positionMm": [ + -959.9997997283936, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/34", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体047", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/34" + }, + "zero": { + "positionMm": [ + -999.9997615814209, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/35", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体048", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/35" + }, + "zero": { + "positionMm": [ + -979.9997806549072, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/36", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体049", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/36" + }, + "zero": { + "positionMm": [ + -900.0000953674316, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/37", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体050", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/37" + }, + "zero": { + "positionMm": [ + -920.0000762939453, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/38", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体051", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/38" + }, + "zero": { + "positionMm": [ + -880.000114440918, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/39", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体052", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/39" + }, + "zero": { + "positionMm": [ + -860.0001335144043, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/40", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体065", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/40" + }, + "zero": { + "positionMm": [ + -1020.0002193450928, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/41", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体066", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/41" + }, + "zero": { + "positionMm": [ + -1079.9999237060547, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/42", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体067", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/42" + }, + "zero": { + "positionMm": [ + -1099.9999046325684, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/43", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体068", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/43" + }, + "zero": { + "positionMm": [ + -1059.999942779541, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/44", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体069", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/44" + }, + "zero": { + "positionMm": [ + -1040.0002002716064, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/45", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体070", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/45" + }, + "zero": { + "positionMm": [ + -1160.0000858306885, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/46", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体071", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/46" + }, + "zero": { + "positionMm": [ + -1180.0000667572021, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/47", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体072", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/47" + }, + "zero": { + "positionMm": [ + -1220.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/48", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体073", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/48" + }, + "zero": { + "positionMm": [ + -1200.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/49", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体074", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/49" + }, + "zero": { + "positionMm": [ + -1140.0001049041748, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8/50", + "parentId": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/6/8", + "name": "立方体075", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/50" + }, + "zero": { + "positionMm": [ + -1119.999885559082, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + } + ], + "axisMap": { + "X": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2", + "Y": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1", + "Z": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/2/1/0", + "A": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3", + "C": "baed2119-99dc-4402-935a-4f1ded76400d:scene/0/3/1" + } +} diff --git a/coverage/glb-machine-manager/machine-type/mill700/xyzbc-live.png b/coverage/glb-machine-manager/machine-type/mill700/xyzbc-live.png new file mode 100644 index 0000000..193edb8 Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/mill700/xyzbc-live.png differ diff --git a/coverage/glb-machine-manager/machine-type/mill700/xyzbc.json b/coverage/glb-machine-manager/machine-type/mill700/xyzbc.json new file mode 100644 index 0000000..e991d31 --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/mill700/xyzbc.json @@ -0,0 +1,4108 @@ +{ + "schema": "linuxcnc.joint-model/1", + "coordinates": "XYZBC", + "units": { + "length": "mm", + "angle": "deg", + "gltfLength": "m" + }, + "controller": { + "source": "linuxcnc-wasm.visual.joints", + "axisOrder": [ + "X", + "Y", + "Z", + "B", + "C" + ] + }, + "calibration": { + "cOriginMm": [ + 0, + 0, + 0 + ], + "tiltOffsetMm": [ + 0, + 0, + 0 + ], + "physicalZero": { + "x": 5, + "y": 0, + "z": 7, + "a": 0, + "b": 12, + "c": 9 + } + }, + "nodes": [ + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene", + "parentId": null, + "name": "MILL700-U_1.glb", + "role": "base", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:source-scene", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene", + "name": "AuxScene", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "source-scene" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:source-scene", + "name": "MILL700-U_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0" + }, + "zero": { + "positionMm": [ + -2349.517822265625, + -1341.2762880325317, + 2486.2565994262695 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "mapl14805146fe3i-None348856022", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/0" + }, + "zero": { + "positionMm": [ + -868.2212829589844, + 1555.3476810455322, + -784.3674421310425 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "mapl14805146fe3i-None348856022_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/1" + }, + "zero": { + "positionMm": [ + -157.12809562683105, + 1193.3876276016235, + -794.0124273300171 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "MILL700-A-主轴-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2" + }, + "zero": { + "positionMm": [ + 472.6388454437256, + 1681.300401687622, + -997.8671073913574 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "X", + "direction": "x", + "sign": 1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "name": "MILL700-", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0" + }, + "zero": { + "positionMm": [ + -31.702756881713867, + -564.4468069076538, + 187.18719482421875 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0", + "name": "平面004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/0" + }, + "zero": { + "positionMm": [ + 69.46694850921631, + 0.13110041618347168, + 468.2943820953369 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0", + "name": "立方体064", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1" + }, + "zero": { + "positionMm": [ + -322.7880001068115, + 0.024276018142700174, + 198.69959354400635 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体025", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/0" + }, + "zero": { + "positionMm": [ + 680.0000667572021, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体026", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/1" + }, + "zero": { + "positionMm": [ + 860.0003719329834, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体027", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/2" + }, + "zero": { + "positionMm": [ + 880.0003528594971, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体028", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/3" + }, + "zero": { + "positionMm": [ + 900.0003337860107, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/4", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体029", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/4" + }, + "zero": { + "positionMm": [ + 779.9999713897705, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/5", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体030", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/5" + }, + "zero": { + "positionMm": [ + 799.9999523162842, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/6", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体031", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/6" + }, + "zero": { + "positionMm": [ + 839.9999141693115, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/7", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体032", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/7" + }, + "zero": { + "positionMm": [ + 819.9999332427979, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/8", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体033", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/8" + }, + "zero": { + "positionMm": [ + 740.0000095367432, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/9", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体034", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/9" + }, + "zero": { + "positionMm": [ + 759.9999904632568, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/10", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体035", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/10" + }, + "zero": { + "positionMm": [ + 720.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/11", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体036", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/11" + }, + "zero": { + "positionMm": [ + 700.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/12", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体053", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/12" + }, + "zero": { + "positionMm": [ + -160.00008583068848, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/13", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体054", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/13" + }, + "zero": { + "positionMm": [ + -180.00006675720215, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/14", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体055", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/14" + }, + "zero": { + "positionMm": [ + -220.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/15", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体056", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/15" + }, + "zero": { + "positionMm": [ + -200.00004768371582, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/16", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体057", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/16" + }, + "zero": { + "positionMm": [ + -79.99992370605469, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/17", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体058", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/17" + }, + "zero": { + "positionMm": [ + -99.99990463256836, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/18", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体059", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/18" + }, + "zero": { + "positionMm": [ + -139.9998664855957, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/19", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体060", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/19" + }, + "zero": { + "positionMm": [ + -119.99988555908203, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/20", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体061", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/20" + }, + "zero": { + "positionMm": [ + -39.999961853027344, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/21", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体062", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/21" + }, + "zero": { + "positionMm": [ + -59.999942779541016, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1/22", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/0/1", + "name": "立方体063", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/0/1/22" + }, + "zero": { + "positionMm": [ + -19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "name": "MILL700-A-主轴-JT2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1" + }, + "zero": { + "positionMm": [ + -3.9693117141723633, + -204.27599549293518, + 405.63321113586426 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "Y", + "direction": "y", + "sign": 1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1", + "name": "MILL700-A-主轴-JT3", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0" + }, + "zero": { + "positionMm": [ + -20.80368995666504, + -904.0489196777344, + 368.9253330230713 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "Z", + "direction": "z", + "sign": -1, + "dof": 1, + "type": "prismatic", + "unit": "mm", + "frame": "parent" + } + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0", + "name": "123", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0" + }, + "zero": { + "positionMm": [ + 0.059604644775390625, + 1.8161535263061523, + -702.0378112792969 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0", + "name": "_3028378857429004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0" + }, + "zero": { + "positionMm": [ + 0.5391836166381836, + -2.054750919342041, + 502.8970241546631 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0/0", + "name": "_3028378857429004_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0/0" + }, + "zero": { + "positionMm": [ + -0.5391836166381836, + 2.054750919342041, + -502.8970241546631 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/0/0", + "name": "_3028378857429004_2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/0/0/1" + }, + "zero": { + "positionMm": [ + -0.49185752868652344, + 1.9202828407287598, + -286.04042530059814 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0", + "name": "MILL700-A-主轴-JT4", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/1" + }, + "zero": { + "positionMm": [ + 1.3986825942993164, + 0.9530782699584961, + -850.0750064849854 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0", + "name": "SHS25C100020_Track_TSXXX-0000058522006", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/0/2" + }, + "zero": { + "positionMm": [ + 0.07891654968261719, + 167.50484704971313, + -9.09280776977539 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1", + "name": "SHS25C100020_Track_TSXXX-0000058522002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/1" + }, + "zero": { + "positionMm": [ + 3.1614303588867188, + 121.06472253799438, + -268.9887285232544 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/1/2" + }, + "zero": { + "positionMm": [ + -23.18131923675537, + -708.1259489059448, + 123.15058708190918 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/2" + }, + "zero": { + "positionMm": [ + -7.143378257751465, + -71.1749792098999, + 10.328888893127441 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "name": "SHS25CQZSS1_Slide25-55_TSXXX-0000058522001001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/2/3" + }, + "zero": { + "positionMm": [ + -7.143378257751465, + -71.1749792098999, + 10.328888893127441 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "MILL700-A-工作台-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3" + }, + "zero": { + "positionMm": [ + 497.99561500549316, + 1139.9997472763062, + -1603.0043363571167 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "B", + "direction": "y", + "sign": 1, + "dof": 1, + "type": "revolute", + "unit": "deg", + "frame": "parent" + } + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3", + "name": "MILL700-A-工作台-JT1001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3", + "name": "MILL700-A-工作台-JT2", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1" + }, + "zero": { + "positionMm": [ + -0.08916854858398438, + -634.0826749801636, + -86.4475965499878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": { + "axis": "C", + "direction": "z", + "sign": 1, + "dof": 1, + "type": "revolute", + "unit": "deg", + "frame": "parent" + } + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1", + "name": "MILL700-A--工件托盘", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1/0" + }, + "zero": { + "positionMm": [ + -0.039458274841308594, + 0.02866983413696289, + 60.18102169036865 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1/0", + "name": "MILL700工件", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/1/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3", + "name": "托底A", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/2" + }, + "zero": { + "positionMm": [ + -24.169445037841797, + -631.3432455062866, + -370.8224296569824 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/2/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/2", + "name": "MILL700-A-工作台-JT1001_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/3/2/0" + }, + "zero": { + "positionMm": [ + 24.172663688659668, + 650.3862142562866, + 370.81682682037354 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "MILL700-A-门1-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4" + }, + "zero": { + "positionMm": [ + 1380.0005912780762, + 622.5010752677917, + -767.5008773803711 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4", + "name": "mapl14805146fe3i014", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/0" + }, + "zero": { + "positionMm": [ + 69.13900375366211, + -430.00227212905884, + -264.99879360198975 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4", + "name": "mapl14805146fe3i016", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/1" + }, + "zero": { + "positionMm": [ + -62.04628944396973, + 56.50210380554199, + 775.352954864502 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/4", + "name": "mapl14805146fe3i431", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/4/2" + }, + "zero": { + "positionMm": [ + -6.041586399078369, + 54.02481555938721, + -313.0190372467041 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "MILL700-A-门2-JT1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5" + }, + "zero": { + "positionMm": [ + 517.0004367828369, + -263.78095149993896, + -744.2798614501953 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5", + "name": "mapl14805146fe3i197", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0" + }, + "zero": { + "positionMm": [ + -78.32932472229004, + 165.7944917678833, + 817.5182342529297 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0", + "name": "_126_807_34061712252_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0", + "name": "mapl14805146fe3i001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/1" + }, + "zero": { + "positionMm": [ + 648.3297348022461, + -211.74824237823486, + -1078.8166522979736 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0", + "name": "mapl14805146fe3i196", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2" + }, + "zero": { + "positionMm": [ + 101.07946395874023, + -114.5554780960083, + -789.954662322998 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/2/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/2", + "name": "_126_807_35301710201", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/2/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/5/0/2", + "name": "_126_807_35301710201_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/5/0/2/1" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0", + "name": "MILL700-A底座", + "role": "base", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6" + }, + "zero": { + "positionMm": [ + 459.7148895263672, + 906.7631363868713, + -2320.876121520996 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "SHS25C100020_Track_TSXXX-0000058522001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/0" + }, + "zero": { + "positionMm": [ + 39.36731815338135, + 667.2102808952332, + 1206.9398164749146 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "底座002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/1" + }, + "zero": { + "positionMm": [ + 2.282381057739258, + 382.2411298751831, + 456.71534538269043 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "底座009", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/2" + }, + "zero": { + "positionMm": [ + 323.70173931121826, + -1000.0901222229004, + 292.11002588272095 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "底座011", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/3" + }, + "zero": { + "positionMm": [ + -3093.5568809509277, + -2605.290651321411, + -2075.2453804016113 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/4", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "底座012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/4" + }, + "zero": { + "positionMm": [ + 618.5640096664429, + -0.025063753128051758, + 520.3256011009216 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/5", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "底座015", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/5" + }, + "zero": { + "positionMm": [ + 838.29665184021, + -237.21277713775635, + 275.1512825489044 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "显示器001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6" + }, + "zero": { + "positionMm": [ + -682.807445526123, + -1648.0319499969482, + 759.9776983261108 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0" + }, + "zero": { + "positionMm": [ + -0.8423328399658203, + -13.741254806518555, + -113.4251356124878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/0/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/0", + "name": "Mesh_66", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0/0" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/0/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/0", + "name": "Mesh_66_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/0/1" + }, + "zero": { + "positionMm": [ + 0, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/1" + }, + "zero": { + "positionMm": [ + -0.8423328399658203, + -13.741254806518555, + -113.4251356124878 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "name": "mapl14805146fe3i-None1061424004_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/2" + }, + "zero": { + "positionMm": [ + -81.01844787597656, + -285.07375717163086, + -248.1238842010498 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "name": "平面", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/3" + }, + "zero": { + "positionMm": [ + -59.470415115356445, + -12.278079986572266, + 561.9646310806274 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6/4", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/6", + "name": "平面001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/6/4" + }, + "zero": { + "positionMm": [ + 3.1015872955322266, + -22.612810134887695, + 530.0655364990234 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "移动柜", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7" + }, + "zero": { + "positionMm": [ + -467.17357635498047, + 1571.4397430419922, + 533.7636470794678 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/0" + }, + "zero": { + "positionMm": [ + -21.704435348510742, + 3.5028457641601562, + 45.71419954299927 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/1" + }, + "zero": { + "positionMm": [ + -21.704435348510742, + 3.5028457641601562, + 45.71419954299927 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910_1", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/2" + }, + "zero": { + "positionMm": [ + 408.51664543151855, + -30.3189754486084, + -459.0965211391449 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/7", + "name": "mapl14805146fe3i-None3286791910_1001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/7/3" + }, + "zero": { + "positionMm": [ + 408.51664543151855, + -30.3189754486084, + -459.0965211391449 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6", + "name": "立方体", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8" + }, + "zero": { + "positionMm": [ + 358.4332466125488, + 211.11465990543365, + 1708.8958024978638 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/0", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体001", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/0" + }, + "zero": { + "positionMm": [ + 19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/1", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体002", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/1" + }, + "zero": { + "positionMm": [ + 59.999942779541016, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/2", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体003", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/2" + }, + "zero": { + "positionMm": [ + 39.999961853027344, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/3", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体004", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/3" + }, + "zero": { + "positionMm": [ + 119.99988555908203, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/4", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体005", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/4" + }, + "zero": { + "positionMm": [ + 139.9998664855957, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/5", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体006", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/5" + }, + "zero": { + "positionMm": [ + 99.99990463256836, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/6", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体007", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/6" + }, + "zero": { + "positionMm": [ + 79.99992370605469, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/7", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体008", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/7" + }, + "zero": { + "positionMm": [ + 240.00024795532227, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/8", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体009", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/8" + }, + "zero": { + "positionMm": [ + 260.00022888183594, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/9", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体010", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/9" + }, + "zero": { + "positionMm": [ + 300.0001907348633, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/10", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体011", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/10" + }, + "zero": { + "positionMm": [ + 280.0002098083496, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/11", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体012", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/11" + }, + "zero": { + "positionMm": [ + 200.00028610229492, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/12", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体013", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/12" + }, + "zero": { + "positionMm": [ + 220.0002670288086, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/13", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体014", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/13" + }, + "zero": { + "positionMm": [ + 180.00030517578125, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/14", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体015", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/14" + }, + "zero": { + "positionMm": [ + 160.00032424926758, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/15", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体016", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/15" + }, + "zero": { + "positionMm": [ + 320.00017166137695, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/16", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体017", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/16" + }, + "zero": { + "positionMm": [ + 340.0001525878906, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/17", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体018", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/17" + }, + "zero": { + "positionMm": [ + 380.0005912780762, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/18", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体019", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/18" + }, + "zero": { + "positionMm": [ + 360.0001335144043, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/19", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体020", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/19" + }, + "zero": { + "positionMm": [ + 440.000057220459, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/20", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体021", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/20" + }, + "zero": { + "positionMm": [ + 460.00051498413086, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/21", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体022", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/21" + }, + "zero": { + "positionMm": [ + 420.0005531311035, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/22", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体023", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/22" + }, + "zero": { + "positionMm": [ + 400.00009536743164, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/23", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体024", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/23" + }, + "zero": { + "positionMm": [ + -19.999980926513672, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/24", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体037", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/24" + }, + "zero": { + "positionMm": [ + -700.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/25", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体038", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/25" + }, + "zero": { + "positionMm": [ + -720.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/26", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体039", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/26" + }, + "zero": { + "positionMm": [ + -759.9999904632568, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/27", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体040", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/27" + }, + "zero": { + "positionMm": [ + -740.0000095367432, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/28", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体041", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/28" + }, + "zero": { + "positionMm": [ + -819.9999332427979, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/29", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体042", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/29" + }, + "zero": { + "positionMm": [ + -839.9999141693115, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/30", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体043", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/30" + }, + "zero": { + "positionMm": [ + -799.9999523162842, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/31", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体044", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/31" + }, + "zero": { + "positionMm": [ + -779.9999713897705, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/32", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体045", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/32" + }, + "zero": { + "positionMm": [ + -940.000057220459, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/33", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体046", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/33" + }, + "zero": { + "positionMm": [ + -959.9997997283936, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/34", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体047", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/34" + }, + "zero": { + "positionMm": [ + -999.9997615814209, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/35", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体048", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/35" + }, + "zero": { + "positionMm": [ + -979.9997806549072, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/36", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体049", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/36" + }, + "zero": { + "positionMm": [ + -900.0000953674316, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/37", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体050", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/37" + }, + "zero": { + "positionMm": [ + -920.0000762939453, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/38", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体051", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/38" + }, + "zero": { + "positionMm": [ + -880.000114440918, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/39", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体052", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/39" + }, + "zero": { + "positionMm": [ + -860.0001335144043, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/40", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体065", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/40" + }, + "zero": { + "positionMm": [ + -1020.0002193450928, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/41", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体066", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/41" + }, + "zero": { + "positionMm": [ + -1079.9999237060547, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/42", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体067", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/42" + }, + "zero": { + "positionMm": [ + -1099.9999046325684, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/43", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体068", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/43" + }, + "zero": { + "positionMm": [ + -1059.999942779541, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/44", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体069", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/44" + }, + "zero": { + "positionMm": [ + -1040.0002002716064, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/45", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体070", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/45" + }, + "zero": { + "positionMm": [ + -1160.0000858306885, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/46", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体071", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/46" + }, + "zero": { + "positionMm": [ + -1180.0000667572021, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/47", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体072", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/47" + }, + "zero": { + "positionMm": [ + -1220.0000286102295, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/48", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体073", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/48" + }, + "zero": { + "positionMm": [ + -1200.0000476837158, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/49", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体074", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/49" + }, + "zero": { + "positionMm": [ + -1140.0001049041748, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + }, + { + "id": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8/50", + "parentId": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/6/8", + "name": "立方体075", + "role": "", + "source": { + "file": "MILL700-U_1.glb", + "hash": "bf37130681cc6462412e52744519516e8ade2a3212dd69153c0b1b3e415bcf66", + "path": "scene/0/6/8/50" + }, + "zero": { + "positionMm": [ + -1119.999885559082, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ], + "scale": [ + 1, + 1, + 1 + ] + }, + "joint": null + } + ], + "axisMap": { + "X": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2", + "Y": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1", + "Z": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/2/1/0", + "B": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3", + "C": "d5b0ad8c-f67e-4366-86bd-f08776eef794:scene/0/3/1" + } +} diff --git a/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzac.glb b/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzac.glb new file mode 100644 index 0000000..d26118b Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzac.glb differ diff --git a/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzbc.glb b/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzbc.glb new file mode 100644 index 0000000..9fb0510 Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/saved-models/MILL700-xyzbc.glb differ diff --git a/coverage/glb-machine-manager/machine-type/saved-models/README.md b/coverage/glb-machine-manager/machine-type/saved-models/README.md new file mode 100644 index 0000000..da1a627 --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/saved-models/README.md @@ -0,0 +1,9 @@ +# 可导入的 MILL700 验收模型 + +这两份 GLB 由三维机床管理器实际保存,均已通过控制面板“导入机床模型”、五轴程序与参数恢复验证。用于演示 AC/BC 文件识别和单自由度映射;由同一个 MILL700 几何资产生成,不代表两台实机的测量标定。 + +- `MILL700-xyzac.glb`:XYZAC,主轴 JT1/JT2/JT3 → XYZ,工作台 JT1/JT2 → A/C。 +- `MILL700-xyzbc.glb`:XYZBC,主轴 JT1/JT2/JT3 → XYZ,工作台 JT1/JT2 → B/C。 +- 两者测试配置:Z 反向;物理零点 X=5、Z=7 mm,倾转轴=12°、C=9°;C 原点/倾转偏置为 0。 +- 使用时:控制面板关机且空闲 → 导入机床模型 → 导入 GLB → 选择文件;机型和关节参数从 GLB 自动读取。 +- 编辑时:三维机床管理 → 导入 GLB 部件 → 单独选择文件,恢复完整设计文档;根据需要核对并修改轴绑定和标定,再保存机床模型 GLB。 diff --git a/coverage/glb-machine-manager/machine-type/test-xyzbc.glb b/coverage/glb-machine-manager/machine-type/test-xyzbc.glb new file mode 100644 index 0000000..c9ec27d Binary files /dev/null and b/coverage/glb-machine-manager/machine-type/test-xyzbc.glb differ diff --git a/coverage/glb-machine-manager/machine-type/workbench-regression.report.json b/coverage/glb-machine-manager/machine-type/workbench-regression.report.json new file mode 100644 index 0000000..bd37c9e --- /dev/null +++ b/coverage/glb-machine-manager/machine-type/workbench-regression.report.json @@ -0,0 +1,14 @@ +{ + "report_id": "GLB-MGR-E14", + "status": "verified", + "url": "http://127.0.0.1:5180/", + "checks": [ + "search expands real nested nodes; axis overview locates selection; binding undo/redo", + "empty input preserves last pose; repeated selection/input does not concatenate; single-axis step and reset", + "TRT forbidden offset blocks export before build; calibration undo/redo", + "view presets and selected fitting; deletion undo restores model with all axis bindings", + "failed batch import leaves existing assembly intact", + "live mode locks edits; desktop, short viewport and narrow viewport keep footer visible without overflow" + ], + "errors": [] +} diff --git a/docs/glb-machine-manager/01-项目功能内容.md b/docs/glb-machine-manager/01-项目功能内容.md index 89e7da6..9d11bd7 100644 --- a/docs/glb-machine-manager/01-项目功能内容.md +++ b/docs/glb-machine-manager/01-项目功能内容.md @@ -54,3 +54,5 @@ 16. MGR-17:每个节点可配置一个 XYZABC 自由度、父坐标轴方向和正负向。配置以 `linuxcnc.joint-model/1` JSON 写入原 userData,包含层级、零姿态、轴索引、物理零点和 RTCP 标定。管理器实时跟随与正式机床共用驱动逻辑;详见 [07-单自由度JSON与实时驱动](07-单自由度JSON与实时驱动.md)。 17. 工程工作台:独立滚动的结构/运动/标定页签,固定预览与底部操作区;层级搜索、轴定位、相机预设;30 步草稿撤销/重做;单轴步进;无效输入保持上一个有效值并禁止应用/导出。 + +18. MGR-19:对话框第一步独立选择设计机床类型 XYZAC/XYZBC;控制面板切换不覆盖设计草稿。机型限制轴绑定、运动验证和标定。保存完整机床 GLB,供控制面板“导入机床模型”自动识别机型并使用。 diff --git a/docs/glb-machine-manager/02-项目程序开发详细步骤.md b/docs/glb-machine-manager/02-项目程序开发详细步骤.md index 42a1dd5..632eb0a 100644 --- a/docs/glb-machine-manager/02-项目程序开发详细步骤.md +++ b/docs/glb-machine-manager/02-项目程序开发详细步骤.md @@ -19,3 +19,5 @@ 14. `MGR-17`:定义单自由度 JSON/Schema;收敛 UI 输入;增加单文件层级应用和 GLB 恢复;接入实际 WASM 关节位置;验证每轴、反向、物理零点、导出往返和锁定行为。 15. `MGR-18`:工作区布局与层级导航;草稿历史/资源生命周期;数值错误状态和机型标定校验;重复选中输入回归;桌面/窄屏/矮屏及 AC/BC 实时驱动验收。 + +16. `MGR-19`:把机型纳入草稿/撤销历史;添加首步机型选择;切换清理不适用倾转绑定;完整模型打开恢复机型;下载前调用控制面板读取器校验;验证从 AC 工作区导入 BC GLB 自动切换及 MILL700 两机型保存/运动闭环。 diff --git a/docs/glb-machine-manager/03-推进台账.md b/docs/glb-machine-manager/03-推进台账.md index 5b8eed1..191792f 100644 --- a/docs/glb-machine-manager/03-推进台账.md +++ b/docs/glb-machine-manager/03-推进台账.md @@ -103,3 +103,11 @@ - E14 工作台浏览器验收通过:搜索、总览定位、撤销/重做、错误输入、标定校验、视图、删除恢复、导入失败保护、实时锁定和 1440/1154/720 视口无溢出。 - 最终 AC/BC 完整回归分别通过,各 8 个动态 tick;线上 E14 工作台回归通过。已发布 `a7233bc`,资源 `index-nddrUCCV.js`。 + +## R13 / 2026-09-21 / 对话框选择机床类型与保存整机 + +- 设计机型从外部控制面板属性改为草稿字段,标题、轴总览、绑定选项、标定与运动输入统一使用所选设计类型。顶部按选择类型→配置结构→验证标定→保存 GLB 引导。 +- AC/BC 切换只清理不适用的 A/B 轴绑定,保留模型层级、XYZ/C 和标定,并提示重新配置、核对;整个切换可撤销/重做。外部工作区切换不再改写草稿。 +- 打开已保存完整机床作为单一文档事务,自动恢复文件中的机型、关节、层级、物理零点、RTCP 参数;原草稿可撤销恢复。普通 GLB 部件导入仍为追加。 +- 保存入口改为“保存机床模型 GLB”,使用 `inspectMachineGlb` 和 32 MiB 限制校验结果,确保标准导入器可读取;成功消息提示去控制面板“导入机床模型”加载。 +- E15 针对跨机型闭环测试通过:在 AC 控制器下设计 BC、切换撤销、保存、重新打开、控制面板标准导入自动识别 BC。MILL700 两机型实测通过,分别 8 个同时五轴运动 tick、浏览器 warning/error=0。保存两份完整 GLB 验收示例;MGR-19 verified。 diff --git a/docs/glb-machine-manager/04-任务矩阵.md b/docs/glb-machine-manager/04-任务矩阵.md index 375305f..c55ba94 100644 --- a/docs/glb-machine-manager/04-任务矩阵.md +++ b/docs/glb-machine-manager/04-任务矩阵.md @@ -21,3 +21,4 @@ |MGR-17 单自由度与运行轴映射|verified|MGR-16|每节点固定或唯一 XYZABC 自由度;单值编辑;JSON 保存到场景/底座;单 GLB 完整应用;导出往返与 AC/BC 实时轴映射验收| |MGR-18 工程化工作台体验|verified|MGR-17|层级搜索与定位、绑定总览、撤销/重做、输入校验、步骤页签、视图预设、单轴步进、实时跟随锁定、响应式布局和失败导入保护通过| +|MGR-19 对话框机型与保存整机|verified|MGR-18|先在对话框选择设计机型;绑定/标定受机型约束;草稿独立/可撤销;保存完整 GLB 可由控制面板导入并自动切换机型| diff --git a/docs/glb-machine-manager/05-验收证据.md b/docs/glb-machine-manager/05-验收证据.md index 7cc9281..bfcb3b1 100644 --- a/docs/glb-machine-manager/05-验收证据.md +++ b/docs/glb-machine-manager/05-验收证据.md @@ -139,3 +139,19 @@ - 最终回归:`workbench/xyzac-regression.report.json`、`xyzbc-regression.report.json` 均 verified,各 8 个运动 tick,含模型 JSON/GLB 往返、轴符号、零点、实时跟随和五轴运动。输入框选中切换使用绘制前同步,重复填值不会拼接。 - 线上 `https://49.232.250.35:58015/` 已发布功能代码 `a7233bc`,资源 `assets/index-nddrUCCV.js`;E14 工作台完整回归 verified,浏览器错误 0。发布证据:`workbench/cloud.report.json`、`workbench/deployment.report.json`。 + +## E15 / R13 / 对话框机型与保存整机 + +- `node scripts/test_machine_manager_type.mjs`:GLB-MGR-E15 verified;在 AC 控制面板下设计 BC、机型切换/撤销/重做、工作区不覆盖草稿、完整机床打开恢复、直接应用及标准 GLB 导入自动切换为 BC。 +- `JOINT_TEST_OUTPUT=.../coverage/glb-machine-manager/machine-type/mill700 SAVE_MACHINE_MODELS=.../coverage/glb-machine-manager/machine-type/saved-models node scripts/test_machine_joint_dof_browser.mjs`:MILL700 AC/BC 各 8 个动态 tick,验证 GLB 保存/重开/导入、标定、轴映射、单自由度及实时跟随,浏览器错误 0。 +- 八部件生产回归、工作台布局/撤销/搜索回归、类型检查、构建、机型历史、控件契约 134 项和双画布检查通过。 +- 保存入口下载前用 `inspectMachineGlb` 校验完整 GLB;所有测试机型通过标准“导入机床模型”。 + +|文件(相对 coverage/glb-machine-manager/machine-type)|SHA-256| +|---|---| +|`browser.report.json`|`222c43f2ef36d28f31171773efe2cbe49eff383e766c5086f18bac5bae62047a`| +|`dialog-type.png`|`c24f8b3fd445cf5e886b8189e13e0830e6fecf341e57499e7cf73528fd803b9d`| +|`controller-import.png`|`071f8d9a9ac4ac85fe64bfcd51f1fb605112515eb4aaa0e00ceacd539347d67b`| +|`mill700/browser.report.json`|`05fb403ef854aba37c1ab64e0334a843d4839a6c2ce559031d25589a68346f3a`| +|`saved-models/MILL700-xyzac.glb`|`25ba366a6550c3a613a63623b8e25216d5a3a6dd2781b69481d80d0bb87033e4`| +|`saved-models/MILL700-xyzbc.glb`|`3b87cb8504815c13127608c513eacb3536e1be1c10f9a58fcd59920939fbe0c1`| diff --git a/docs/glb-machine-manager/06-决策记录.md b/docs/glb-machine-manager/06-决策记录.md index 45d14e8..a0f3f20 100644 --- a/docs/glb-machine-manager/06-决策记录.md +++ b/docs/glb-machine-manager/06-决策记录.md @@ -63,3 +63,7 @@ GLB 树节点 ID 使用导入时的子节点索引路径,不使用可能重复 ## D16 / 草稿可撤销、错误输入不执行 草稿历史只保存配置快照并共享源模型资源,上限 30 步;只有已脱离当前草稿和历史的资产才释放。关闭窗口保留会话草稿,完整持久保存使用导出 GLB,界面明确显示未应用/已应用/已导出状态。非法或空数值只存在于输入框,不驱动模型,不隐式归零;校验状态独立于操作消息显示。实时跟随时配置只读,数据不可用时保持最后姿态且允许退出。 + +## D17 / 设计类型属于机床文档 + +机型保存在 MachineDraft,控制面板当前类型只用于首次创建时的默认值和实时数据匹配。后续面板切换不得覆盖草稿。切换设计类型不自动把 A 轴重新命名为 B:保留通用轴及模型,清除不兼容绑定,提示重新配置,并允许撤销。标定保留并按新机型验证,不静默丢弃。完整机床 GLB 打开为一次替换事务,自动恢复文件机型,原草稿可撤销。保存 GLB 必须先通过标准导入器格式/机型校验;JSON 是辅助参数文件,完整可导入交付物为 GLB。 diff --git a/docs/glb-machine-manager/07-单自由度JSON与实时驱动.md b/docs/glb-machine-manager/07-单自由度JSON与实时驱动.md index ddaf4dd..afda915 100644 --- a/docs/glb-machine-manager/07-单自由度JSON与实时驱动.md +++ b/docs/glb-machine-manager/07-单自由度JSON与实时驱动.md @@ -4,13 +4,13 @@ ## 对话框 -1. 选中层级节点,设置“唯一自由度”:X/Y/Z 是平移,A/B/C 是旋转;固定零件选择“固定(无自由度)”。每个运动节点只有一个自由度,每个数控轴只能绑定一个节点。 +1. 首先在对话框顶部选择设计机床类型 XYZAC/XYZBC(独立于当前控制面板),然后导入模型。选中层级节点,设置“唯一自由度”:X/Y/Z 是平移,A/B/C 是旋转;固定零件选择“固定(无自由度)”。每个运动节点只有一个自由度,每个数控轴只能绑定一个节点。 2. 设置父级坐标系中的 X/Y/Z 运动方向和正负向。AC 模型可用 XYZAC,BC 模型可用 XYZBC;另一倾转轴禁用。 3. 当前节点只有一个“位移/转角”可编辑数值,单位 mm/deg。固定节点不能编辑;已导入的局部位置、姿态作为零姿态保留。旧版六分量自由编辑和自由操纵器已被单自由度输入替代(MGR-17)。 4. 层级运动测试与节点输入共用对应轴值,所有输入均为相对物理零点的运动量,不写数控系统。配置 JSON 和 GLB 保存零姿态、自由度和标定,不将临时测试姿态烘焙进去。 5. “跟随数控系统实时关节位置”使用当前机型的有效 WASM 快照,锁定手动关节输入。控制面板正式模型始终由 WASM 实际关节位置驱动。 6. 绑定齐五个轴后可应用机床、导出 GLB;单个已有层级的 GLB 也可应用。可单独导出 JSON。未完成绑定的 JSON 是草稿,控制器读取时必须通过完整性校验。 -7. 重新导入本工具导出的 GLB 到管理器,可恢复层级、自由度、正负向、C 原点、倾转轴偏置和物理零点。GLB 机型必须与当前工作区相同。 +7. 重新导入本工具导出的 GLB 到管理器,可恢复层级、自由度、正负向、C 原点、倾转轴偏置和物理零点。完整机床 GLB 单独打开时,自动恢复文件机型,原设计草稿可撤销恢复;控制面板“导入机床模型”自动切换到 GLB 指定机型。 ## 字段契约 diff --git a/docs/glb-machine-manager/README.md b/docs/glb-machine-manager/README.md index 29be793..88b9d72 100644 --- a/docs/glb-machine-manager/README.md +++ b/docs/glb-machine-manager/README.md @@ -11,7 +11,7 @@ 现有整机 GLB + 内嵌 URDF 导入能力继续保留。新管理器生成与现有 `linuxcnc.machine/1` 相同的严格结构,再通过已有配置、Worker、WASM 和 Three.js 投影链运行。 -当前状态:MGR-17、MGR-18 已 verified;MGR-01 至 MGR-16 已完成历史验收,MILL700 实测覆盖照明、Z-up、132 节点树、拖放、节点原点、关节局部坐标系、节点相对父级平移旋转、模型删除、轴绑定、XYZ/AC 层级运动和 WebGL 资源降级。最新台账 R12,证据 `GLB-MGR-E01/E02/E05/E07/E08/E09/E10/E12/E13/E14` 位于 `coverage/glb-machine-manager/`。 +当前状态:MGR-19 对话框选择机型/整机保存已 verified;MGR-17、MGR-18 已 verified;MGR-01 至 MGR-16 已完成历史验收,MILL700 实测覆盖照明、Z-up、132 节点树、拖放、节点原点、关节局部坐标系、节点相对父级平移旋转、模型删除、轴绑定、XYZ/AC 层级运动和 WebGL 资源降级。最新台账 R13,证据 `GLB-MGR-E01/E02/E05/E07/E08/E09/E10/E12/E13/E14/E15` 位于 `coverage/glb-machine-manager/`。 文档: diff --git a/docs/linuxcnc-axis-web-control-panel-source-logic.md b/docs/linuxcnc-axis-web-control-panel-source-logic.md index 28a6c93..adb9420 100644 --- a/docs/linuxcnc-axis-web-control-panel-source-logic.md +++ b/docs/linuxcnc-axis-web-control-panel-source-logic.md @@ -1079,3 +1079,7 @@ silently reproduced in the browser. ### MGR-18 machine manager workbench controls `machine-manager-undo`, `machine-manager-redo`, `machine-manager-draft-state`, `machine-tree-search`, `machine-tree-expand`, `machine-tree-collapse`, `machine-manager-validation`, `machine-manager-tab-structure`, `machine-manager-tab-motion`, `machine-manager-tab-calibration`, `machine-view-fit`, `machine-view-selected`, `machine-view-front`, `machine-view-top`, `machine-joint-step-minus`, `machine-joint-step-plus`, `machine-joint-reset`: bounded draft history, searchable hierarchy, axis binding overview, explicit validation, view presets, single-joint step jog and responsive workbench layout. + +### MGR-19 document machine type + +`machine-manager-type`, `machine-manager-type-note`: select XYZAC/XYZBC inside the design dialog before configuring structure. Design type belongs to undoable draft state and is independent of the live controller. Saving validates the GLB through the standard importer; loading a full machine restores type, bindings and calibration, and the control panel switches workspace to match the imported model. diff --git a/scripts/test_axis_control_inventory.mjs b/scripts/test_axis_control_inventory.mjs index 38236b3..eef6fa0 100644 --- a/scripts/test_axis_control_inventory.mjs +++ b/scripts/test_axis_control_inventory.mjs @@ -13,7 +13,7 @@ const [contract, app, panel, preview] = await Promise.all([ const controlIds = [ "menu-file", "menu-file-edit-tool-data", "menu-file-quit", "menu-help", "menu-help-about", "about-close", "toolbar-estop", "toolbar-power", "toolbar-open", "toolbar-load-case", "toolbar-reload", "toolbar-run", "toolbar-step", "toolbar-pause-resume", "toolbar-stop", "toolbar-block-delete", "toolbar-optional-pause", "toolbar-zoom-in", "toolbar-zoom-out", "toolbar-view-z", "toolbar-view-z2", "toolbar-view-x", "toolbar-view-y", "toolbar-view-y2", "toolbar-view-p", "toolbar-rotate", "toolbar-clear-live-plot", - "workspace-case-select", "workspace-load-3d-chips", "workspace-rtcp-programs", "rtcp-program-scope", "rtcp-program-select", "rtcp-program-source", "rtcp-program-load", "rtcp-program-download", "machine-manager-settings", "machine-manager-import", "machine-manager-files", "machine-manager-delete", "machine-manager-role", "machine-manager-parent", "machine-manager-show-origin", "machine-tree-node", "machine-tree-origin", "machine-tree-axis-role", "machine-joint-direction", "machine-joint-sign", "machine-joint-value", "machine-joint-step-minus", "machine-joint-step-plus", "machine-joint-reset", "machine-joint-follow-live", "machine-joint-live-state", "machine-manager-export-json", "machine-manager-undo", "machine-manager-redo", "machine-manager-draft-state", "machine-tree-search", "machine-tree-expand", "machine-tree-collapse", "machine-manager-validation", "machine-test-x", "machine-test-y", "machine-test-z", "machine-test-a", "machine-test-b", "machine-test-c", "machine-test-reset", "machine-test-state", "machine-manager-apply", "machine-manager-export", "machine-manager-tab-structure", "machine-manager-tab-motion", "machine-manager-tab-calibration", "machine-view-fit", "machine-view-selected", "machine-view-front", "machine-view-top", "manual-home-all", "manual-home-joint-select", + "workspace-case-select", "workspace-load-3d-chips", "workspace-rtcp-programs", "rtcp-program-scope", "rtcp-program-select", "rtcp-program-source", "rtcp-program-load", "rtcp-program-download", "machine-manager-settings", "machine-manager-type", "machine-manager-type-note", "machine-manager-import", "machine-manager-files", "machine-manager-delete", "machine-manager-role", "machine-manager-parent", "machine-manager-show-origin", "machine-tree-node", "machine-tree-origin", "machine-tree-axis-role", "machine-joint-direction", "machine-joint-sign", "machine-joint-value", "machine-joint-step-minus", "machine-joint-step-plus", "machine-joint-reset", "machine-joint-follow-live", "machine-joint-live-state", "machine-manager-export-json", "machine-manager-undo", "machine-manager-redo", "machine-manager-draft-state", "machine-tree-search", "machine-tree-expand", "machine-tree-collapse", "machine-manager-validation", "machine-test-x", "machine-test-y", "machine-test-z", "machine-test-a", "machine-test-b", "machine-test-c", "machine-test-reset", "machine-test-state", "machine-manager-apply", "machine-manager-export", "machine-manager-tab-structure", "machine-manager-tab-motion", "machine-manager-tab-calibration", "machine-view-fit", "machine-view-selected", "machine-view-front", "machine-view-top", "manual-home-all", "manual-home-joint-select", "switchkins-0", "switchkins-1", "switchkins-2", "tab-manual", "tab-mdi", "tab-diagnostics", "tab-preview", "tab-dro", "manual-axis-x", "manual-axis-y", "manual-axis-z", "manual-axis-a", "manual-axis-c", diff --git a/scripts/test_machine_joint_dof_browser.mjs b/scripts/test_machine_joint_dof_browser.mjs index 3513eec..60a2cb5 100644 --- a/scripts/test_machine_joint_dof_browser.mjs +++ b/scripts/test_machine_joint_dof_browser.mjs @@ -4,7 +4,7 @@ import { pathToFileURL } from "node:url"; import * as THREE from "../web/react/node_modules/three/build/three.module.js"; const pw = await import(pathToFileURL(process.env.PLAYWRIGHT_MODULE ?? "/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.js")); const browser = await (pw.default ?? pw).chromium.launch({ headless: true, executablePath: "/usr/bin/google-chrome", args: ["--no-sandbox", "--use-angle=swiftshader", "--enable-unsafe-swiftshader"] }); -const output = new URL("../coverage/glb-machine-manager/joint-dof/", import.meta.url); await mkdir(output, { recursive: true }); +const output = process.env.JOINT_TEST_OUTPUT ? pathToFileURL(process.env.JOINT_TEST_OUTPUT.replace(/\/?$/, "/")) : new URL("../coverage/glb-machine-manager/joint-dof/", import.meta.url); await mkdir(output, { recursive: true }); const bytes = await readFile(new URL("../MILL700-U_1.glb", import.meta.url)); const report = { report_id: "GLB-MGR-E13", status: "running", url: process.env.MACHINE_MANAGER_URL ?? "http://127.0.0.1:5180/", machines: [], browser_errors: [] }; const near = (a, b, label) => { assert.equal(a.length, b.length, label); a.forEach((v, i) => assert.ok(Math.abs(v - b[i]) < 2e-6, `${label} ${i}: ${v} vs ${b[i]}`)); }; @@ -17,8 +17,8 @@ try { const preview = page.locator("[data-machine-manager-preview]"); const idle = () => page.waitForFunction(() => document.querySelector("main.axis-app")?.dataset.axisProgramLoading === "false" && document.querySelector("main.axis-app")?.dataset.axisStateSource === "linuxcnc-wasm", null, { timeout: 60000 }); await page.goto(report.url); await idle(); - if (coordinates === "XYZBC") { await c("workspace-case-select").selectOption("linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"); await idle(); } - await c("machine-manager-settings").click(); await c("machine-manager-files").setInputFiles({ name: "MILL700-U_1.glb", mimeType: "model/gltf-binary", buffer: bytes }); + + await c("machine-manager-settings").click(); await c("machine-manager-type").selectOption(coordinates); assert.match(await c("workspace-case-select").inputValue(), /xyzac-trt.ini/); await c("machine-manager-files").setInputFiles({ name: "MILL700-U_1.glb", mimeType: "model/gltf-binary", buffer: bytes }); await page.waitForFunction(() => document.querySelectorAll('[data-axis-control="machine-tree-node"]').length >= 132); assert.equal(await c("machine-joint-value").isDisabled(), true); assert.equal(await c("machine-manager-apply").isDisabled(), true); @@ -52,6 +52,7 @@ try { assert.equal(json.schema, "linuxcnc.joint-model/1"); assert.equal(json.coordinates, coordinates); assert.deepEqual(Object.keys(json.axisMap).sort(), [...coordinates].sort()); assert.equal(json.nodes.filter((n) => n.joint).length, 5); assert.ok(json.nodes.every((n) => n.joint === null || n.joint.dof === 1)); assert.equal(json.nodes.find((n) => n.id === json.axisMap.Z).joint.sign, -1); const glbDownload = page.waitForEvent("download"); await c("machine-manager-export").click(); const glb = await readFile(await (await glbDownload).path()); + if (process.env.SAVE_MACHINE_MODELS) { await mkdir(process.env.SAVE_MACHINE_MODELS, { recursive: true }); await writeFile(`${process.env.SAVE_MACHINE_MODELS}/MILL700-${coordinates.toLowerCase()}.glb`, glb); } const gltf = JSON.parse(glb.toString("utf8", 20, 20 + glb.readUInt32LE(12))); assert.deepEqual(gltf.scenes[0].extras.linuxcncJointModel, json); const bed = gltf.nodes.find((n) => n.name === "MILL700-A底座"); assert.deepEqual(bed.extras.linuxcncJointModel, json); assert.ok(bed.extras.linuxcncMachineGeometry); @@ -64,6 +65,7 @@ try { await page.keyboard.press("Escape"); await c("machine-glb-settings").click(); await c("machine-glb-file").setInputFiles({ name: `managed-${coordinates.toLowerCase()}.glb`, mimeType: "model/gltf-binary", buffer: glb }); await page.waitForFunction(() => document.querySelector(".xyzac-machine-view")?.dataset.machineJointState, null, { timeout: 60000 }); await idle(); await page.keyboard.press("Escape"); console.log(`${coordinates}: standard GLB importer verified`); + assert.match(await c("workspace-case-select").inputValue(), new RegExp(`${coordinates.toLowerCase()}-trt.ini`)); // Apply directly from the restored one-file hierarchy as well. await c("machine-manager-settings").click(); await c("machine-manager-apply").click(); await idle(); assert.match(await page.locator(".machine-manager-footer").textContent(), /已应用/); await page.keyboard.press("Escape"); const program = `M428 diff --git a/scripts/test_machine_manager_browser.mjs b/scripts/test_machine_manager_browser.mjs index 65a3fe6..9fe78be 100644 --- a/scripts/test_machine_manager_browser.mjs +++ b/scripts/test_machine_manager_browser.mjs @@ -64,7 +64,7 @@ try { await page.keyboard.press("Escape"); const xyzbcCase = "linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini"; await control("workspace-case-select").selectOption(xyzbcCase); await page.waitForFunction((path) => document.querySelector('[data-axis-control="workspace-case-select"]')?.value === path && document.querySelector("main.axis-app")?.dataset.axisProgramLoading === "false", xyzbcCase, { timeout: 45000 }); - await control("machine-manager-settings").click(); assert.match(await page.locator(".machine-manager-dialog .machine-dialog-titlebar").textContent(), /XYZBC/); + await control("machine-manager-settings").click(); assert.match(await page.locator(".machine-manager-dialog .machine-dialog-titlebar").textContent(), /XYZAC/); await control("machine-manager-type").selectOption("XYZBC"); await control("machine-manager-tab-structure").click(); await selectRoot(5); await control("machine-tree-axis-role").selectOption("B"); await control("machine-manager-tab-calibration").click(); const bcCalibrations = page.locator(".machine-manager-calibration fieldset.machine-vector"); const bcOrigin = bcCalibrations.filter({ hasText: "C 轴原点" }); await bcOrigin.getByLabel("X", { exact: true }).fill("-18"); await bcOrigin.getByLabel("Y", { exact: true }).fill("14"); await bcOrigin.getByLabel("Z", { exact: true }).fill("12"); diff --git a/scripts/test_machine_manager_history.mjs b/scripts/test_machine_manager_history.mjs index 9e4de3c..3bc0762 100644 --- a/scripts/test_machine_manager_history.mjs +++ b/scripts/test_machine_manager_history.mjs @@ -1,6 +1,6 @@ import assert from 'node:assert/strict'; -import { machineDraftHistory } from '../web/react/src/machine-manager-history.ts'; -const draft = { parts: [], cOriginMm:[0,0,0], tiltOffsetMm:[0,0,0], physicalZero:{x:0,y:0,z:0,a:0,b:0,c:0} }; +import { machineDraftHistory, changeMachineType } from '../web/react/src/machine-manager-history.ts'; +const draft = { coordinates:"XYZAC", parts: [], cOriginMm:[0,0,0], tiltOffsetMm:[0,0,0], physicalZero:{x:0,y:0,z:0,a:0,b:0,c:0} }; let state = { current:draft, past:[], future:[] }; const edit = (n) => ({ type:'edit', change:(d) => ({...d, cOriginMm:[n,0,0]}) }); state = machineDraftHistory(state, edit(1)); state = machineDraftHistory(state,edit(1)); assert.equal(state.past.length,1); @@ -9,4 +9,8 @@ state = machineDraftHistory(state,{type:'redo'}); assert.equal(state.current.cOr state = machineDraftHistory(state,{type:'undo'}); state = machineDraftHistory(state,edit(2)); assert.equal(state.future.length,0); for(let i=3;i<45;i++) state=machineDraftHistory(state,edit(i)); assert.equal(state.past.length,30); const current=state.current; state=machineDraftHistory(state,{type:'clear'}); assert.equal(state.current,current); assert.equal(state.past.length,0); -console.log(JSON.stringify({report_id:'GLB-MGR-E14-HISTORY',status:'verified',checks:['undo/redo','duplicate edits ignored','new edit discards redo','30-entry bound','clear preserves draft']})); + +const ac = { ...draft, parts: [{ id:"p", showOrigin:true, nodeJoints:{ a:{axis:"A",direction:"x",sign:1}, c:{axis:"C",direction:"z",sign:-1}, x:{axis:"X",direction:"x",sign:1} } }] }; +const bc = changeMachineType(ac,"XYZBC"); assert.equal(bc.coordinates,"XYZBC"); assert.equal(bc.parts[0].nodeJoints.a,undefined); assert.deepEqual(bc.parts[0].nodeJoints.c,ac.parts[0].nodeJoints.c); assert.equal(ac.parts[0].nodeJoints.a.axis,"A"); +let types={current:ac,past:[],future:[]};types=machineDraftHistory(types,{type:"edit",change:d=>changeMachineType(d,"XYZBC")});types=machineDraftHistory(types,{type:"undo"});assert.equal(types.current,ac); +console.log(JSON.stringify({report_id:'GLB-MGR-E14-HISTORY',status:'verified',checks:['undo/redo','duplicate edits ignored','new edit discards redo','30-entry bound','clear preserves draft','machine type change preserves general axes and clears incompatible tilt','undo restores type and bindings']})); diff --git a/scripts/test_machine_manager_type.mjs b/scripts/test_machine_manager_type.mjs new file mode 100644 index 0000000..759c620 --- /dev/null +++ b/scripts/test_machine_manager_type.mjs @@ -0,0 +1,51 @@ +import assert from 'node:assert/strict'; +import { readFile, writeFile, mkdir } from 'node:fs/promises'; +import { pathToFileURL } from 'node:url'; +import * as THREE from '../web/react/node_modules/three/build/three.module.js'; +import { GLTFExporter } from '../web/react/node_modules/three/examples/jsm/exporters/GLTFExporter.js'; +globalThis.FileReader = class { readAsArrayBuffer(blob) { blob.arrayBuffer().then((result) => { this.result = result; this.onloadend?.(); }); } readAsDataURL(blob) { blob.arrayBuffer().then((result) => { this.result = `data:${blob.type};base64,${Buffer.from(result).toString('base64')}`; this.onloadend?.(); }); } }; +const scene = new THREE.Scene();scene.name='test-machine'; +const add = (name,parent) => { const n=new THREE.Mesh(new THREE.BoxGeometry(.04,.04,.04),new THREE.MeshStandardMaterial({color:0x75aab2}));n.name=name;n.position.set(.1,.1,.1);parent.add(n);return n; }; +const x=add('joint-X',scene), y=add('joint-Y',x);add('joint-Z',y);const tilt=add('joint-tilt',scene);add('joint-C',tilt); +const bytes=Buffer.from(await new GLTFExporter().parseAsync(scene,{binary:true,trs:true})); +const pw=await import(pathToFileURL(process.env.PLAYWRIGHT_MODULE ?? '/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.js')); +const browser=await (pw.default??pw).chromium.launch({headless:true,executablePath:'/usr/bin/google-chrome',args:['--no-sandbox','--use-angle=swiftshader','--enable-unsafe-swiftshader']}); +const page=await browser.newPage({viewport:{width:1440,height:900}});const c=id=>page.locator(`[data-axis-control="${id}"]`); +const output=new URL('../coverage/glb-machine-manager/machine-type/',import.meta.url);await mkdir(output,{recursive:true}); +const report={report_id:'GLB-MGR-E15',url:process.env.MACHINE_MANAGER_URL??'http://127.0.0.1:5180/',status:'running',checks:[],errors:[]}; +page.on('pageerror',e=>report.errors.push(e.message));page.on('console',m=>{if(['error','warning'].includes(m.type()))report.errors.push(m.text());}); +const idle=()=>page.waitForFunction(()=>document.querySelector('main.axis-app')?.dataset.axisProgramLoading==='false'&&document.querySelector('main.axis-app')?.dataset.axisStateSource==='linuxcnc-wasm'); +const choose=async(name)=>{await c('machine-manager-tab-structure').click();await c('machine-tree-search').fill(name);await c('machine-tree-node').filter({has:page.locator('span').filter({hasText:new RegExp(`^${name}$`)})}).first().click();}; +try{ + await page.goto(report.url);await idle();await c('machine-manager-settings').click(); + assert.equal(await c('machine-manager-type').inputValue(),'XYZAC'); + await c('machine-manager-type').selectOption('XYZBC'); + assert.match(await c('workspace-case-select').inputValue(),/xyzac-trt/); + await c('machine-manager-files').setInputFiles({name:'machine.glb',mimeType:'model/gltf-binary',buffer:bytes}); + for(const [axis,name] of [['X','joint-X'],['Y','joint-Y'],['Z','joint-Z'],['B','joint-tilt'],['C','joint-C']]){await choose(name);await c('machine-tree-axis-role').selectOption(axis);} + assert.equal(await c('machine-manager-export').isEnabled(),true); + await c('machine-manager-type').selectOption('XYZAC');await choose('joint-tilt');assert.equal(await c('machine-tree-axis-role').inputValue(),'');assert.equal(await c('machine-manager-export').isDisabled(),true);assert.match(await c('machine-manager-validation').textContent(),/A/); + await c('machine-manager-undo').click();assert.equal(await c('machine-manager-type').inputValue(),'XYZBC');assert.equal(await c('machine-tree-axis-role').inputValue(),'B'); + await c('machine-manager-redo').click();assert.equal(await c('machine-manager-type').inputValue(),'XYZAC');await c('machine-manager-undo').click(); + await c('machine-manager-tab-calibration').click();await page.locator('fieldset.machine-zero').getByLabel('B',{exact:true}).fill('12'); + const promise=page.waitForEvent('download');await c('machine-manager-export').click();const download=await promise;assert.equal(download.suggestedFilename(),'managed-xyzbc.glb');const saved=await readFile(await download.path());await writeFile(new URL('test-xyzbc.glb',output),saved); + const json=JSON.parse(saved.toString('utf8',20,20+saved.readUInt32LE(12)));assert.equal(json.scenes[0].extras.linuxcncJointModel.coordinates,'XYZBC');assert.equal(json.scenes[0].extras.linuxcncJointModel.calibration.physicalZero.b,12);assert.deepEqual(json.scenes[0].extras.linuxcncJointModel.controller.axisOrder,[...'XYZBC']); + report.checks.push('dialog selects BC while controller stays AC; switching drops incompatible tilt only; undo/redo restores type and bindings; saved GLB contains BC metadata'); + await page.keyboard.press('Escape');await c('workspace-case-select').selectOption('linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini');await idle();await c('workspace-case-select').selectOption('linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini');await idle(); + await c('machine-manager-settings').click();assert.equal(await c('machine-manager-type').inputValue(),'XYZBC');await c('machine-manager-type').selectOption('XYZAC'); + await c('machine-manager-files').setInputFiles({name:'managed-xyzbc.glb',mimeType:'model/gltf-binary',buffer:saved});await page.waitForFunction(()=>document.querySelector('[data-axis-control="machine-manager-type"]')?.value==='XYZBC'); + assert.equal(await page.locator('[data-machine-manager-preview]').getAttribute('data-machine-manager-part-count'),'1');await choose('joint-tilt');assert.equal(await c('machine-tree-axis-role').inputValue(),'B'); + await c('machine-manager-tab-calibration').click();assert.equal(await page.locator('fieldset.machine-zero').getByLabel('B',{exact:true}).inputValue(),'12'); + await c('machine-manager-undo').click();assert.equal(await c('machine-manager-type').inputValue(),'XYZAC');await c('machine-manager-redo').click();assert.equal(await c('machine-manager-type').inputValue(),'XYZBC'); + report.checks.push('controller workspace changes do not change draft type; reopening saved machine restores type, calibration and hierarchy in one undoable transaction'); + await page.screenshot({path:new URL('dialog-type.png',output).pathname}); + await c('machine-manager-apply').click();await page.waitForFunction(()=>document.querySelector('[data-axis-control="workspace-case-select"]')?.value.includes('xyzbc-trt'));await idle();assert.equal(await c('machine-manager-type').inputValue(),'XYZBC'); + await page.keyboard.press('Escape');await c('workspace-case-select').selectOption('linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini');await idle();await c('machine-manager-settings').click(); + report.checks.push('applying BC design from AC controller changes controller type without altering design draft'); + await page.keyboard.press('Escape');await c('machine-glb-settings').click();await c('machine-glb-file').setInputFiles({name:'managed-xyzbc.glb',mimeType:'model/gltf-binary',buffer:saved}); + await page.waitForFunction(()=>document.querySelector('.xyzac-machine-view')?.dataset.machineJointState&&document.querySelector('[data-axis-control="workspace-case-select"]')?.value.includes('xyzbc-trt'));await idle(); + const geometry=JSON.parse(await page.locator('.xyzac-machine-view').getAttribute('data-machine-manager-geometry'));assert.equal(geometry.coordinates,'XYZBC');assert.equal(geometry.physicalZero.b,12); + await page.keyboard.press('Escape');await page.screenshot({path:new URL('controller-import.png',output).pathname}); + report.checks.push('controller import accepts saved BC GLB from AC workspace and automatically switches to BC with physical zero');assert.deepEqual(report.errors,[]);report.status='verified'; +}catch(e){report.status='failed';report.error=e.stack;await page.screenshot({path:new URL('failure.png',output).pathname}).catch(()=>{});throw e;}finally{await writeFile(new URL('browser.report.json',output),JSON.stringify(report,null,2)+'\n');await browser.close();} +console.log(JSON.stringify(report)); diff --git a/web/react/src/MachineManagerPanel.tsx b/web/react/src/MachineManagerPanel.tsx index 60b9f79..b07312b 100644 --- a/web/react/src/MachineManagerPanel.tsx +++ b/web/react/src/MachineManagerPanel.tsx @@ -8,9 +8,9 @@ import { disposeMachineScene, type ImportedMachine } from "./imported-machine"; import { configureMachinePartScene, draftNodeDof, makeJointAssembly, reparentMachineNode, buildManagedMachine, expectedParentRole, loadMachinePart, machinePartTree, MACHINE_PART_ROLES, roleLabel, type MachinePartDraft, type MachinePartRole, type MachineTreeNode, type PhysicalZero } from "./machine-manager"; import { driveJoint, jointZero, defaultDof, isLinear, type JointDof, type CncAxis } from "./machine-joints"; import { projectXyzacVisual, type XyzacVisualSource } from "./xyzac-visual-adapter"; -import { useMachineDraft, draftFingerprint } from "./machine-manager-history"; +import { useMachineDraft, draftFingerprint, changeMachineType } from "./machine-manager-history"; import { MachineNumberInput } from "./MachineManagerInputs"; -import type { Vec3 } from "./machine-urdf"; +import { inspectMachineGlb, MAX_MACHINE_BYTES, type Vec3 } from "./machine-urdf"; type Props = { snapshot?: XyzacVisualSource | null; coordinates: "XYZAC" | "XYZBC"; disabled: boolean; onApply: (machine: ImportedMachine) => Promise }; type TestPose = { x: number; y: number; z: number; a: number; b: number; c: number }; @@ -146,10 +146,10 @@ function TreeNode({ part, node, selected, onSelect, onDrop, extra, query, expans ; } -export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot }: Props) { +export function MachineManagerPanel({ coordinates: controllerCoordinates, disabled, onApply, snapshot }: Props) { const [open, setOpen] = useState(false), [pending, setPending] = useState(false), [message, setMessage] = useState(""); - const { history, draft, edit, undo, redo, clearHistory } = useMachineDraft(); - const { parts, cOriginMm, tiltOffsetMm, physicalZero } = draft; + const { history, draft, edit, undo, redo } = useMachineDraft(controllerCoordinates); + const { coordinates, parts, cOriginMm, tiltOffsetMm, physicalZero } = draft; const setParts = (change: (current: MachinePartDraft[]) => MachinePartDraft[]) => edit((current) => ({ ...current, parts: change(current.parts) })); const setCOriginMm = (value: Vec3) => edit((current) => ({ ...current, cOriginMm: value })); const setTiltOffsetMm = (value: Vec3) => edit((current) => ({ ...current, tiltOffsetMm: value })); @@ -174,7 +174,7 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } useEffect(() => () => { retainedScenes.current.forEach(disposeMachineScene); }, []); const [testPose, setTestPose] = useState({ x: 0, y: 0, z: 0, a: 0, b: 0, c: 0 }); const [motionState, setMotionState] = useState>({}); const motionStateHash = useRef(""); - useEffect(() => { setMessage(""); setTestPose({ x: 0, y: 0, z: 0, a: 0, b: 0, c: 0 }); setFollowLive(false); clearHistory(); }, [coordinates, clearHistory]); + useEffect(() => { setTestPose({ x: 0, y: 0, z: 0, a: 0, b: 0, c: 0 }); setFollowLive(false); }, [coordinates]); useEffect(() => { if (selectedId && !parts.some((part) => part.id === selectedId)) { setSelectedId(parts[0]?.id ?? null); setSelectedNodePath("scene"); } }, [parts, selectedId]); const selected = parts.find((part) => part.id === selectedId) ?? null; const trees = useMemo(() => new Map(parts.map((part) => [part.id, machinePartTree(part)])), [parts]); @@ -190,22 +190,25 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } const loaded = results.flatMap((result) => result.status === "fulfilled" ? [result.value] : []); const failure = results.find((result) => result.status === "rejected"); if (failure?.status === "rejected") { loaded.forEach((source) => disposeMachineScene(source.scene)); throw failure.reason; } - if (loaded.some((source) => source.restoredModel && source.restoredModel.coordinates !== coordinates)) { + const restoredSources = loaded.filter((source) => source.restoredModel); + const restored = restoredSources[0]?.restoredModel; + // A saved machine is opened as one document, not appended to another + // machine. Raw component imports continue to append to this draft. + if (restored && loaded.length !== 1) { loaded.forEach((source) => disposeMachineScene(source.scene)); - throw new Error(`导入机型不同,请先切换到 ${loaded.find((source) => source.restoredModel?.coordinates !== coordinates && source.restoredModel)?.restoredModel?.coordinates}`); + throw new Error("完整机床 GLB 请单独打开;普通部件可批量导入"); } - const restored = loaded.find((source) => source.restoredModel)?.restoredModel; edit((draft) => { - const next = [...draft.parts]; + const next = restored ? [] : [...draft.parts]; for (const source of loaded) { const role = MACHINE_PART_ROLES.find((candidate) => !next.some((part) => part.role === candidate)) ?? ""; const parentRole = role ? expectedParentRole(role) : null; const parentId = parentRole ? next.find((part) => part.role === parentRole)?.id ?? null : null; next.push({ ...source, role, parentId, visible: true, showOrigin: true, originMm: zero3(), translationMm: zero3(), rotationDeg: zero3(), nodeParents: {}, nodeTransforms: {}, nodeJoints: source.restoredJoints ?? {}, nodeRoles: source.restoredRoles ?? {} }); } - return { ...draft, parts: next, ...(restored ? { cOriginMm: restored.calibration.cOriginMm, tiltOffsetMm: restored.calibration.tiltOffsetMm, physicalZero: restored.calibration.physicalZero as PhysicalZero } : {}) }; + return { ...draft, parts: next, ...(restored ? { coordinates: restored.coordinates, cOriginMm: restored.calibration.cOriginMm, tiltOffsetMm: restored.calibration.tiltOffsetMm, physicalZero: restored.calibration.physicalZero as PhysicalZero } : {}) }; }); - setTab("structure"); setQuery(""); setSelectedId(loaded[0].id); setSelectedNodePath("scene"); setMessage(restored ? `已恢复 ${restored.coordinates} 关节配置和物理零点` : `已导入 ${loaded.length} 个部件`); + setTab("structure"); setQuery(""); setSelectedId(loaded[0].id); setSelectedNodePath("scene"); setMessage(restored ? `已打开 ${restored.coordinates} 完整机床,恢复层级、关节和标定;原草稿可撤销恢复` : `已导入 ${loaded.length} 个部件`); } catch (error) { setMessage(error instanceof Error ? error.message : String(error)); } finally { setPending(false); } }; @@ -243,9 +246,12 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } const exportScene = new THREE.Scene(); exportScene.name = machine.scene.name; exportScene.userData = machine.scene.userData; for (const child of machine.scene.children) exportScene.add(child.clone(true)); const bytes = await new GLTFExporter().parseAsync(exportScene, { binary: true, trs: true, onlyVisible: false }); + if (!(bytes instanceof ArrayBuffer) || bytes.byteLength > MAX_MACHINE_BYTES) throw new Error("保存文件超过控制面板支持的 32 MiB,请减小模型后重试"); + const saved = inspectMachineGlb(bytes); + if (saved.structure.coordinates !== coordinates) throw new Error("保存模型的机型与当前配置不一致"); const url = URL.createObjectURL(new Blob([bytes as ArrayBuffer], { type: "model/gltf-binary" })); const link = document.createElement("a"); link.href = url; link.download = machine.filename; link.click(); setTimeout(() => URL.revokeObjectURL(url), 1000); - setExported(signature); setMessage("组合 GLB 已导出,底座和整机场景包含机床标定 userData"); + setExported(signature); setMessage(`已保存 managed-${coordinates.toLowerCase()}.glb,可在控制面板“导入机床模型”中加载,自动识别 ${coordinates} 和轴配置`); } catch (error) { setMessage(error instanceof Error ? error.message : String(error)); } finally { if (machine) disposeMachineScene(machine.scene); setPending(false); } }; @@ -275,7 +281,7 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } const exportJson = () => { if (!validation.model || pending || invalidFields.length) return; const url = URL.createObjectURL(new Blob([JSON.stringify(validation.model, null, 2)], { type: "application/json" })); - const a = document.createElement("a"); a.href = url; a.download = `machine-joints-${coordinates.toLowerCase()}.json`; a.click(); setTimeout(() => URL.revokeObjectURL(url), 1000); setMessage("关节 JSON 已导出;恢复完整模型请使用组合 GLB"); + const a = document.createElement("a"); a.href = url; a.download = `machine-joints-${coordinates.toLowerCase()}.json`; a.click(); setTimeout(() => URL.revokeObjectURL(url), 1000); setMessage("关节 JSON 已导出;恢复完整模型请使用“保存机床模型 GLB”"); }; const poseInput = (axis: keyof TestPose, unit: string) => ; const receiveMotionState = (state: Record) => { const hash = JSON.stringify(state); if (hash !== motionStateHash.current) { motionStateHash.current = hash; setMotionState(state); } }; @@ -286,12 +292,17 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } setOpen(false)}>
+
2 · 结构与关节 → 3 · 验证与标定 → 4 · 保存 GLB{coordinates === "XYZAC" ? "A 绕 X 倾转,C 绕 Z 回转" : "B 绕 Y 倾转,C 绕 Z 回转"} · 控制面板当前 {controllerCoordinates}{coordinates !== controllerCoordinates ? ";应用或导入模型时切换" : ""}
{parts.length} 个模型 · {bindings.filter((b) => coordinates.includes(b.dof.axis)).length}/5 轴已绑定{!parts.length ? "新建机床" : applied === signature ? "已应用当前配置" : exported === signature ? "已导出 · 尚未应用" : "配置尚未应用"}
{[...coordinates].map((axis) => { const binding = bindings.find((b) => b.dof.axis === axis); return ; })}
{([ ["fit", "整机适配"], ["selected", "定位选中"], ["front", "正视"], ["top", "俯视"] ] as const).map(([action, label]) => )}Z ↑ · X 红 / Y 绿 / Z 蓝
{open && } - {!parts.length &&
建立机床的数字装配

导入 GLB → 选择关节 → 绑定数控轴 → 验证运动

支持完整层级 · 单文件不超过 32 MiB
} + {!parts.length &&
建立机床的数字装配

选择机床类型 → 导入 GLB → 绑定关节 → 保存机床模型

支持完整层级 · 单文件不超过 32 MiB
}

左键旋转 · 滚轮缩放 · 右键平移 · 选中关节显示局部坐标系

{([ ["structure", "结构与关节"], ["motion", "运动验证"], ["calibration", "机床标定"] ] as const).map(([id, label], index) => )}
@@ -305,12 +316,12 @@ export function MachineManagerPanel({ coordinates, disabled, onApply, snapshot } } {!selected &&

选择层级节点,配置其唯一自由度。

}
- +
{blockingReason ? `配置检查:${blockingReason}` : "配置检查通过 · 五轴绑定完整"}{disabled && !blockingReason && " · 关机且程序空闲后可应用"}{followLive && " · 实时跟随中,配置编辑已锁定"}{invalidFields.length > 0 && }
-
{message || "关闭对话框保留本次草稿;导出组合 GLB 可保存并在下次导入恢复。"}{message && }
+
{message || "关闭对话框保留本次草稿;保存机床模型 GLB 后,可在控制面板“导入机床模型”中使用。"}{message && }
{ const files = event.target.files ? [...event.target.files] : []; event.target.value = ""; void importFiles(files); }} />
diff --git a/web/react/src/machine-manager-history.ts b/web/react/src/machine-manager-history.ts index afb1865..2cd644f 100644 --- a/web/react/src/machine-manager-history.ts +++ b/web/react/src/machine-manager-history.ts @@ -2,10 +2,10 @@ import { useCallback, useReducer } from "react"; import type { MachinePartDraft, PhysicalZero } from "./machine-manager"; import type { Vec3 } from "./machine-urdf"; -export type MachineDraft = { parts: MachinePartDraft[]; cOriginMm: Vec3; tiltOffsetMm: Vec3; physicalZero: PhysicalZero }; +export type MachineDraft = { coordinates: "XYZAC" | "XYZBC"; parts: MachinePartDraft[]; cOriginMm: Vec3; tiltOffsetMm: Vec3; physicalZero: PhysicalZero }; type History = { current: MachineDraft; past: MachineDraft[]; future: MachineDraft[] }; type Action = { type: "edit"; change: (draft: MachineDraft) => MachineDraft } | { type: "undo" | "redo" | "clear" }; -const initial: MachineDraft = { parts: [], cOriginMm: [0, 0, 0], tiltOffsetMm: [0, 0, 0], physicalZero: { x: 0, y: 0, z: 0, a: 0, b: 0, c: 0 } }; +const initial: MachineDraft = { coordinates: "XYZAC", parts: [], cOriginMm: [0, 0, 0], tiltOffsetMm: [0, 0, 0], physicalZero: { x: 0, y: 0, z: 0, a: 0, b: 0, c: 0 } }; export function machineDraftHistory(state: History, action: Action): History { if (action.type === "clear") return { current: state.current, past: [], future: [] }; if (action.type === "undo") { const current = state.past.at(-1); return current ? { current, past: state.past.slice(0, -1), future: [state.current, ...state.future] } : state; } @@ -15,11 +15,20 @@ export function machineDraftHistory(state: History, action: Action): History { if (current === state.current || (draftFingerprint(current) === draftFingerprint(state.current) && current.parts.every((part, i) => part.showOrigin === state.current.parts[i]?.showOrigin))) return state; return { current, past: [...state.past, state.current].slice(-30), future: [] }; } -export function useMachineDraft() { - const [history, dispatch] = useReducer(machineDraftHistory, { current: initial, past: [], future: [] }); +export function useMachineDraft(coordinates: MachineDraft["coordinates"] = "XYZAC") { + const [history, dispatch] = useReducer(machineDraftHistory, { current: { ...initial, coordinates }, past: [], future: [] }); const edit = useCallback((change: (draft: MachineDraft) => MachineDraft) => dispatch({ type: "edit", change }), []); return { history, draft: history.current, edit, undo: () => dispatch({ type: "undo" }), redo: () => dispatch({ type: "redo" }), clearHistory: useCallback(() => dispatch({ type: "clear" }), []) }; } export function draftFingerprint(draft: MachineDraft) { return JSON.stringify({ ...draft, parts: draft.parts.map(({ id, filename, hash, role, parentId, visible, originMm, translationMm, rotationDeg, nodeParents, nodeRoles, nodeTransforms, nodeJoints }) => ({ id, filename, hash, role, parentId, visible, originMm, translationMm, rotationDeg, nodeParents, nodeRoles, nodeTransforms, nodeJoints })) }); } + +// A different tilt axis requires an explicit new binding: never relabel a physical +// A joint as B or copy its axis direction/calibration silently. +export function changeMachineType(draft: MachineDraft, coordinates: MachineDraft["coordinates"]): MachineDraft { + if (draft.coordinates === coordinates) return draft; + return { ...draft, coordinates, parts: draft.parts.map((part) => ({ ...part, + nodeJoints: Object.fromEntries(Object.entries(part.nodeJoints ?? {}).filter(([, joint]) => coordinates.includes(joint.axis))), + })) }; +} diff --git a/web/react/src/styles.css b/web/react/src/styles.css index cb816f5..5feb344 100644 --- a/web/react/src/styles.css +++ b/web/react/src/styles.css @@ -510,3 +510,10 @@ output { font: 12px ui-monospace, monospace; text-align: right; } .machine-joint-step { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 8px 0; } .machine-joint-step > label { display: flex; align-items: center; gap: 6px; } .machine-joint-step button { padding: 5px 9px; border: 1px solid #9babad; border-radius: 3px; background: #fff; } +.machine-type-step { display: flex; flex: 0 0 auto; align-items: center; gap: 18px; flex-wrap: wrap; padding: 8px 10px; background: #e1efed; border: 1px solid #90b4ad; border-radius: 5px; } +.machine-type-step > label { display: flex; align-items: center; gap: 10px; } +.machine-type-step strong { color: #27585d; white-space: nowrap; } +.machine-type-step select { min-height: 32px; max-width: 100%; } +.machine-type-step > div { display: flex; flex-direction: column; gap: 4px; font-size: 12px; } +.machine-type-step small { color: #536467; } +@media(max-width:850px) { .machine-type-step { gap: 5px; padding: 6px; } .machine-type-step > div > span { display: none; } }