@wandelbots/wandelbots-js-react-components 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/package.json +18 -8
  2. package/src/components/3d-viewport/CoordinateSystemTransform.tsx +44 -0
  3. package/src/components/3d-viewport/PresetEnvironment.tsx +78 -0
  4. package/src/components/3d-viewport/SafetyZonesRenderer.tsx +55 -0
  5. package/src/components/LoadingButton.stories.tsx +61 -0
  6. package/src/components/LoadingButton.tsx +19 -0
  7. package/src/components/LoadingCover.tsx +75 -0
  8. package/src/components/ThemeSelect.tsx +49 -0
  9. package/src/components/VelocitySlider.stories.tsx +32 -0
  10. package/src/components/VelocitySlider.tsx +52 -0
  11. package/src/components/jogging/JoggingCartesianAxisControl.stories.tsx +41 -0
  12. package/src/components/jogging/JoggingCartesianAxisControl.tsx +127 -0
  13. package/src/components/jogging/JoggingCartesianTab.tsx +265 -0
  14. package/src/components/jogging/JoggingCartesianValues.tsx +45 -0
  15. package/src/components/jogging/JoggingFreedriveTab.tsx +9 -0
  16. package/src/components/jogging/JoggingJointLimitDetector.tsx +51 -0
  17. package/src/components/jogging/JoggingJointRotationControl.stories.tsx +38 -0
  18. package/src/components/jogging/JoggingJointRotationControl.tsx +197 -0
  19. package/src/components/jogging/JoggingJointTab.tsx +93 -0
  20. package/src/components/jogging/JoggingJointValues.tsx +45 -0
  21. package/src/components/jogging/JoggingOptions.tsx +96 -0
  22. package/src/components/jogging/JoggingPanel.stories.tsx +26 -0
  23. package/src/components/jogging/JoggingPanel.tsx +148 -0
  24. package/src/components/jogging/JoggingStore.tsx +294 -0
  25. package/src/components/jogging/JoggingVelocitySlider.tsx +56 -0
  26. package/src/components/robots/ABB_1200_07_7.tsx +127 -0
  27. package/src/components/robots/AxisConfig.ts +3 -0
  28. package/src/components/robots/DHRobot.tsx +128 -0
  29. package/src/components/robots/FANUC_ARC_Mate_100iD.tsx +187 -0
  30. package/src/components/robots/FANUC_ARC_Mate_120iD.tsx +187 -0
  31. package/src/components/robots/FANUC_CRX10iA.tsx +171 -0
  32. package/src/components/robots/FANUC_CRX25iA.tsx +171 -0
  33. package/src/components/robots/FANUC_CRX25iAL.tsx +182 -0
  34. package/src/components/robots/KUKA_KR210_R2700.tsx +291 -0
  35. package/src/components/robots/KUKA_KR270_R2700.tsx +244 -0
  36. package/src/components/robots/Robot.tsx +42 -0
  37. package/src/components/robots/RobotAnimator.tsx +82 -0
  38. package/src/components/robots/SupportedRobot.tsx +144 -0
  39. package/src/components/robots/UniversalRobots_UR10.tsx +112 -0
  40. package/src/components/robots/UniversalRobots_UR10e.tsx +275 -0
  41. package/src/components/robots/UniversalRobots_UR3.tsx +112 -0
  42. package/src/components/robots/UniversalRobots_UR3e.tsx +112 -0
  43. package/src/components/robots/UniversalRobots_UR5.tsx +111 -0
  44. package/src/components/robots/UniversalRobots_UR5e.tsx +280 -0
  45. package/src/components/robots/Yaskawa_AR1440.tsx +156 -0
  46. package/src/components/robots/Yaskawa_AR1730.tsx +169 -0
  47. package/src/components/robots/Yaskawa_AR2010.tsx +163 -0
  48. package/src/components/robots/Yaskawa_AR3120.tsx +164 -0
  49. package/src/components/robots/Yaskawa_AR900.tsx +125 -0
  50. package/src/components/utils/converters.ts +23 -0
  51. package/src/components/utils/errorHandling.ts +30 -0
  52. package/src/components/utils/hooks.tsx +54 -0
  53. package/src/components/utils/robotTreeQuery.ts +27 -0
  54. package/src/components/wandelscript-editor/WandelscriptEditor.stories.tsx +45 -0
  55. package/src/components/wandelscript-editor/WandelscriptEditor.tsx +114 -0
  56. package/src/components/wandelscript-editor/wandelscript.tmLanguage.ts +62 -0
  57. package/src/declarations.d.ts +10 -0
  58. package/src/i18n/config.ts +27 -0
  59. package/src/i18n/locales/de/translations.json +12 -0
  60. package/src/i18n/locales/en/translations.json +12 -0
  61. package/src/icons/arrowForwardFilled.tsx +7 -0
  62. package/src/icons/axis-x.svg +3 -0
  63. package/src/icons/axis-y.svg +3 -0
  64. package/src/icons/axis-z.svg +3 -0
  65. package/src/icons/expandFilled.tsx +11 -0
  66. package/src/icons/home.tsx +12 -0
  67. package/src/icons/index.ts +6 -0
  68. package/src/icons/infoOutlined.tsx +10 -0
  69. package/src/icons/jogging.svg +3 -0
  70. package/src/icons/robot.svg +3 -0
  71. package/src/icons/robot.tsx +14 -0
  72. package/src/icons/rotation.svg +4 -0
  73. package/src/icons/wbLogo.tsx +21 -0
  74. package/src/index.ts +8 -0
  75. package/src/themes/color.tsx +74 -0
  76. package/src/themes/theme.ts +150 -0
  77. package/src/themes/wbTheme.stories.tsx +64 -0
  78. package/src/themes/wbTheme.ts +186 -0
@@ -0,0 +1,171 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import RobotAnimator from "./RobotAnimator"
5
+ import { animated } from "@react-spring/three"
6
+
7
+ export function FANUC_CRX10iA({
8
+ modelURL,
9
+ rapidlyChangingMotionState,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
16
+
17
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
18
+ jointObjects.forEach(
19
+ (object, index) =>
20
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
21
+ )
22
+ }
23
+
24
+ return (
25
+ <>
26
+ <RobotAnimator
27
+ rapidlyChangingMotionState={rapidlyChangingMotionState}
28
+ robotRootObjectName="Scene"
29
+ onRotationChanged={setRotation}
30
+ />
31
+ <group {...props} dispose={null}>
32
+ <group name="Scene">
33
+ <animated.group name="CRX10iA_J00">
34
+ <animated.group
35
+ name="CRX10iA_J01"
36
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
37
+ >
38
+ <animated.group name="CRX10iA_J02" position={[0.54, 0, 0]}>
39
+ <animated.group
40
+ name="CRX10iA_J03"
41
+ rotation={[-Math.PI / 2, 0, 0]}
42
+ >
43
+ <animated.group
44
+ name="CRX10iA_J04"
45
+ position={[0, -0.54, 0]}
46
+ rotation={[Math.PI / 2, 0, 0]}
47
+ >
48
+ <animated.group
49
+ name="CRX10iA_J05"
50
+ position={[0, 0.15, 0]}
51
+ rotation={[-Math.PI / 2, 0, 0]}
52
+ >
53
+ <group
54
+ name="CRX10iA_FLG"
55
+ position={[0, -0.16, 0]}
56
+ rotation={[-Math.PI, 0, 0]}
57
+ />
58
+ <mesh
59
+ name="CRX10iA_L06"
60
+ castShadow
61
+ receiveShadow
62
+ geometry={nodes.CRX10iA_L06.geometry}
63
+ material={materials.Fanuc_BlackMetal}
64
+ position={[0, -0.16, 0]}
65
+ rotation={[0, 0, -Math.PI / 2]}
66
+ />
67
+ </animated.group>
68
+ <group
69
+ name="CRX10iA_L05"
70
+ position={[0, 0.15, 0]}
71
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
72
+ >
73
+ <mesh
74
+ name="J5CASING_UNIT001"
75
+ castShadow
76
+ receiveShadow
77
+ geometry={nodes.J5CASING_UNIT001.geometry}
78
+ material={materials.Fanuc_WhitePlastic}
79
+ />
80
+ <mesh
81
+ name="J5CASING_UNIT001_1"
82
+ castShadow
83
+ receiveShadow
84
+ geometry={nodes.J5CASING_UNIT001_1.geometry}
85
+ material={materials.Fanuc_Green}
86
+ />
87
+ </group>
88
+ </animated.group>
89
+ <group
90
+ name="CRX10iA_L04"
91
+ position={[0, -0.54, 0]}
92
+ rotation={[0, 0, -Math.PI / 2]}
93
+ >
94
+ <mesh
95
+ name="NAME_LABEL_CRX_10iA"
96
+ castShadow
97
+ receiveShadow
98
+ geometry={nodes.NAME_LABEL_CRX_10iA.geometry}
99
+ material={materials.Fanuc_RedPlastic}
100
+ />
101
+ <mesh
102
+ name="NAME_LABEL_CRX_10iA_1"
103
+ castShadow
104
+ receiveShadow
105
+ geometry={nodes.NAME_LABEL_CRX_10iA_1.geometry}
106
+ material={materials.Fanuc_BlackPlastic}
107
+ />
108
+ <mesh
109
+ name="NAME_LABEL_CRX_10iA_2"
110
+ castShadow
111
+ receiveShadow
112
+ geometry={nodes.NAME_LABEL_CRX_10iA_2.geometry}
113
+ material={materials.Fanuc_WhitePlastic}
114
+ />
115
+ </group>
116
+ </animated.group>
117
+ <mesh
118
+ name="CRX10iA_L03"
119
+ castShadow
120
+ receiveShadow
121
+ geometry={nodes.CRX10iA_L03.geometry}
122
+ material={materials.Fanuc_WhitePlastic}
123
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
124
+ />
125
+ </animated.group>
126
+ <mesh
127
+ name="CRX10iA_L02"
128
+ castShadow
129
+ receiveShadow
130
+ geometry={nodes.CRX10iA_L02.geometry}
131
+ material={materials.Fanuc_WhitePlastic}
132
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
133
+ />
134
+ </animated.group>
135
+ <group name="CRX10iA_L01" position={[0, -0.117, 0]}>
136
+ <mesh
137
+ name="J2BASE_UNIT001"
138
+ castShadow
139
+ receiveShadow
140
+ geometry={nodes.J2BASE_UNIT001.geometry}
141
+ material={materials.Fanuc_Green}
142
+ />
143
+ <mesh
144
+ name="J2BASE_UNIT001_1"
145
+ castShadow
146
+ receiveShadow
147
+ geometry={nodes.J2BASE_UNIT001_1.geometry}
148
+ material={materials.Fanuc_WhitePlastic}
149
+ />
150
+ <mesh
151
+ name="J2BASE_UNIT001_2"
152
+ castShadow
153
+ receiveShadow
154
+ geometry={nodes.J2BASE_UNIT001_2.geometry}
155
+ material={materials.Fanuc_GreenLED}
156
+ />
157
+ </group>
158
+ </animated.group>
159
+ <mesh
160
+ name="CRX10iA_L00"
161
+ castShadow
162
+ receiveShadow
163
+ geometry={nodes.CRX10iA_L00.geometry}
164
+ material={materials.Fanuc_BlackMetal}
165
+ position={[0, -0.245, 0]}
166
+ />
167
+ </group>
168
+ </group>
169
+ </>
170
+ )
171
+ }
@@ -0,0 +1,171 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import { animated } from "@react-spring/three"
5
+ import RobotAnimator from "./RobotAnimator"
6
+
7
+ export function FANUC_CRX25iA({
8
+ modelURL,
9
+ rapidlyChangingMotionState,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
16
+
17
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
18
+ jointObjects.forEach(
19
+ (object, index) =>
20
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
21
+ )
22
+ }
23
+
24
+ return (
25
+ <>
26
+ <RobotAnimator
27
+ rapidlyChangingMotionState={rapidlyChangingMotionState}
28
+ robotRootObjectName="Scene"
29
+ onRotationChanged={setRotation}
30
+ />
31
+ <group {...props} dispose={null}>
32
+ <group name="Scene" position={[0, -0.37, 0]}>
33
+ <group name="CRX25iA_L00">
34
+ <mesh
35
+ name="J1BASE_NetGen_Coarse"
36
+ castShadow
37
+ receiveShadow
38
+ geometry={nodes.J1BASE_NetGen_Coarse.geometry}
39
+ material={materials.Fanuc_BlackMetal}
40
+ />
41
+ <mesh
42
+ name="J1BASE_NetGen_Coarse_1"
43
+ castShadow
44
+ receiveShadow
45
+ geometry={nodes.J1BASE_NetGen_Coarse_1.geometry}
46
+ material={materials.Fanuc_GreenPlastic}
47
+ />
48
+ </group>
49
+ <animated.group name="CRX25iA_J00">
50
+ <animated.group
51
+ name="CRX25iA_J01"
52
+ position={[0, 0.37, 0]}
53
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
54
+ >
55
+ <animated.group name="CRX25iA_J02" position={[0.95, 0, 0]}>
56
+ <animated.group
57
+ name="CRX25iA_J03"
58
+ rotation={[-Math.PI / 2, 0, 0]}
59
+ >
60
+ <animated.group
61
+ name="CRX25iA_J04"
62
+ position={[0, -0.75, 0]}
63
+ rotation={[Math.PI / 2, 0, 0]}
64
+ >
65
+ <animated.group
66
+ name="CRX25iA_J05"
67
+ position={[0, 0.185, 0]}
68
+ rotation={[-Math.PI / 2, 0, 0]}
69
+ >
70
+ <group
71
+ name="CRX25iA_FLG"
72
+ position={[0, -0.18, 0]}
73
+ rotation={[-Math.PI, 0, 0]}
74
+ />
75
+ <mesh
76
+ name="CRX25iA_L06"
77
+ castShadow
78
+ receiveShadow
79
+ geometry={nodes.CRX25iA_L06.geometry}
80
+ material={materials.Fanuc_BlackMetal}
81
+ position={[0, -0.18, 0]}
82
+ />
83
+ </animated.group>
84
+ <group name="CRX25iA_L05" position={[0, 0.185, 0]}>
85
+ <mesh
86
+ name="J6CASING_NetGen_Coarse"
87
+ castShadow
88
+ receiveShadow
89
+ geometry={nodes.J6CASING_NetGen_Coarse.geometry}
90
+ material={materials.Fanuc_WhitePlastic}
91
+ />
92
+ <mesh
93
+ name="J6CASING_NetGen_Coarse_1"
94
+ castShadow
95
+ receiveShadow
96
+ geometry={nodes.J6CASING_NetGen_Coarse_1.geometry}
97
+ material={materials.Fanuc_GreenPlastic}
98
+ />
99
+ </group>
100
+ </animated.group>
101
+ <group name="CRX25iA_L04" position={[0, -0.75, 0]}>
102
+ <mesh
103
+ name="J3ARM_NetGen_Coarse"
104
+ castShadow
105
+ receiveShadow
106
+ geometry={nodes.J3ARM_NetGen_Coarse.geometry}
107
+ material={materials.Fanuc_WhitePlastic}
108
+ />
109
+ <mesh
110
+ name="J3ARM_NetGen_Coarse_1"
111
+ castShadow
112
+ receiveShadow
113
+ geometry={nodes.J3ARM_NetGen_Coarse_1.geometry}
114
+ material={materials.Fanuc_RedPlastic}
115
+ />
116
+ <mesh
117
+ name="J3ARM_NetGen_Coarse_2"
118
+ castShadow
119
+ receiveShadow
120
+ geometry={nodes.J3ARM_NetGen_Coarse_2.geometry}
121
+ material={materials.Fanuc_BlackPlastic}
122
+ />
123
+ </group>
124
+ </animated.group>
125
+ <group name="CRX25iA_L03">
126
+ <mesh
127
+ name="J3CASING_NetGen_Coarse"
128
+ castShadow
129
+ receiveShadow
130
+ geometry={nodes.J3CASING_NetGen_Coarse.geometry}
131
+ material={materials.Fanuc_WhitePlastic}
132
+ />
133
+ <mesh
134
+ name="J3CASING_NetGen_Coarse_1"
135
+ castShadow
136
+ receiveShadow
137
+ geometry={nodes.J3CASING_NetGen_Coarse_1.geometry}
138
+ material={materials.Fanuc_GreenPlastic}
139
+ />
140
+ </group>
141
+ </animated.group>
142
+ <mesh
143
+ name="CRX25iA_L02"
144
+ castShadow
145
+ receiveShadow
146
+ geometry={nodes.CRX25iA_L02.geometry}
147
+ material={materials.Fanuc_WhitePlastic}
148
+ />
149
+ </animated.group>
150
+ <group name="CRX25iA_L01" position={[0, 0.18, 0]}>
151
+ <mesh
152
+ name="J2BASE_NetGen_Coarse"
153
+ castShadow
154
+ receiveShadow
155
+ geometry={nodes.J2BASE_NetGen_Coarse.geometry}
156
+ material={materials.Fanuc_WhitePlastic}
157
+ />
158
+ <mesh
159
+ name="J2BASE_NetGen_Coarse_1"
160
+ castShadow
161
+ receiveShadow
162
+ geometry={nodes.J2BASE_NetGen_Coarse_1.geometry}
163
+ material={materials.Fanuc_GreenLED}
164
+ />
165
+ </group>
166
+ </animated.group>
167
+ </group>
168
+ </group>
169
+ </>
170
+ )
171
+ }
@@ -0,0 +1,182 @@
1
+ import { useGLTF } from "@react-three/drei"
2
+ import type * as THREE from "three"
3
+ import type { RobotProps } from "./SupportedRobot"
4
+ import { animated } from "@react-spring/three"
5
+ import RobotAnimator from "./RobotAnimator"
6
+
7
+ export function FANUC_CRX25iAL({
8
+ modelURL,
9
+ rapidlyChangingMotionState,
10
+ ...props
11
+ }: RobotProps) {
12
+ const gltf = useGLTF(modelURL) as any
13
+ const nodes = gltf.nodes
14
+ const materials = gltf.materials
15
+ const rotationOffsets = [0, Math.PI / 2, 0, 0, 0, 0]
16
+
17
+ function setRotation(jointObjects: THREE.Object3D[], jointValues: number[]) {
18
+ jointObjects.forEach(
19
+ (object, index) =>
20
+ (object.rotation.y = jointValues[index]! + rotationOffsets[index]!),
21
+ )
22
+ }
23
+
24
+ return (
25
+ <>
26
+ <RobotAnimator
27
+ rapidlyChangingMotionState={rapidlyChangingMotionState}
28
+ robotRootObjectName="Scene"
29
+ onRotationChanged={setRotation}
30
+ />
31
+ <group {...props} dispose={null}>
32
+ <group name="Scene">
33
+ <animated.group name="CRX10iA_J00">
34
+ <animated.group
35
+ name="CRX10iA_J01"
36
+ position={[0, 0.245, 0]}
37
+ rotation={[Math.PI / 2, Math.PI / 2, 0]}
38
+ >
39
+ <animated.group name="CRX10iA_J02" position={[0.71, 0, 0]}>
40
+ <animated.group
41
+ name="CRX10iA_J03"
42
+ rotation={[-Math.PI / 2, 0, 0]}
43
+ >
44
+ <animated.group
45
+ name="CRX10iA_J04"
46
+ position={[0, -0.54, 0]}
47
+ rotation={[Math.PI / 2, 0, 0]}
48
+ >
49
+ <animated.group
50
+ name="CRX10iA_J05"
51
+ position={[0, 0.15, 0]}
52
+ rotation={[-Math.PI / 2, 0, 0]}
53
+ >
54
+ <group
55
+ name="CRX10iA_FLG"
56
+ position={[0, -0.16, 0]}
57
+ rotation={[-Math.PI, 0, 0]}
58
+ />
59
+ <mesh
60
+ name="CRX10iA_L06"
61
+ castShadow
62
+ receiveShadow
63
+ geometry={nodes.CRX10iA_L06.geometry}
64
+ material={materials["Fanuc_BlackMetal.001"]}
65
+ position={[0, -0.16, 0]}
66
+ rotation={[0, 0, -Math.PI / 2]}
67
+ />
68
+ </animated.group>
69
+ <group
70
+ name="CRX10iA_L05"
71
+ position={[0, 0.15, 0]}
72
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
73
+ >
74
+ <mesh
75
+ name="J5CASING_UNIT001"
76
+ castShadow
77
+ receiveShadow
78
+ geometry={nodes.J5CASING_UNIT001.geometry}
79
+ material={materials["Fanuc_WhitePlastic.001"]}
80
+ />
81
+ <mesh
82
+ name="J5CASING_UNIT001_1"
83
+ castShadow
84
+ receiveShadow
85
+ geometry={nodes.J5CASING_UNIT001_1.geometry}
86
+ material={materials["Fanuc_Green.001"]}
87
+ />
88
+ </group>
89
+ </animated.group>
90
+ <group
91
+ name="CRX10iA_L04"
92
+ position={[0, -0.54, 0]}
93
+ rotation={[0, 0, -Math.PI / 2]}
94
+ >
95
+ <mesh
96
+ name="NAME_LABEL_CRX_10iA_L001"
97
+ castShadow
98
+ receiveShadow
99
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001.geometry}
100
+ material={materials["Fanuc_WhitePlastic.001"]}
101
+ />
102
+ <mesh
103
+ name="NAME_LABEL_CRX_10iA_L001_1"
104
+ castShadow
105
+ receiveShadow
106
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001_1.geometry}
107
+ material={materials["Fanuc_RedPlastic.001"]}
108
+ />
109
+ <mesh
110
+ name="NAME_LABEL_CRX_10iA_L001_2"
111
+ castShadow
112
+ receiveShadow
113
+ geometry={nodes.NAME_LABEL_CRX_10iA_L001_2.geometry}
114
+ material={materials["Fanuc_BlackPlastic.001"]}
115
+ />
116
+ </group>
117
+ </animated.group>
118
+ <group
119
+ name="CRX10iA_L03"
120
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
121
+ >
122
+ <mesh
123
+ name="J3CASING_UNIT001"
124
+ castShadow
125
+ receiveShadow
126
+ geometry={nodes.J3CASING_UNIT001.geometry}
127
+ material={materials["Fanuc_WhitePlastic.001"]}
128
+ />
129
+ <mesh
130
+ name="J3CASING_UNIT001_1"
131
+ castShadow
132
+ receiveShadow
133
+ geometry={nodes.J3CASING_UNIT001_1.geometry}
134
+ material={materials["Fanuc_Green.001"]}
135
+ />
136
+ </group>
137
+ </animated.group>
138
+ <mesh
139
+ name="CRX10iA_L02"
140
+ castShadow
141
+ receiveShadow
142
+ geometry={nodes.CRX10iA_L02.geometry}
143
+ material={materials["Fanuc_WhitePlastic.001"]}
144
+ rotation={[-Math.PI / 2, 0, -Math.PI / 2]}
145
+ />
146
+ </animated.group>
147
+ <group name="CRX10iA_L01" position={[0, 0.128, 0]}>
148
+ <mesh
149
+ name="J2BASE_UNIT001"
150
+ castShadow
151
+ receiveShadow
152
+ geometry={nodes.J2BASE_UNIT001.geometry}
153
+ material={materials["Fanuc_WhitePlastic.001"]}
154
+ />
155
+ <mesh
156
+ name="J2BASE_UNIT001_1"
157
+ castShadow
158
+ receiveShadow
159
+ geometry={nodes.J2BASE_UNIT001_1.geometry}
160
+ material={materials["Fanuc_Green.001"]}
161
+ />
162
+ <mesh
163
+ name="J2BASE_UNIT001_2"
164
+ castShadow
165
+ receiveShadow
166
+ geometry={nodes.J2BASE_UNIT001_2.geometry}
167
+ material={materials["Fanuc_GreenLED.001"]}
168
+ />
169
+ </group>
170
+ </animated.group>
171
+ <mesh
172
+ name="CRX10iA_L00"
173
+ castShadow
174
+ receiveShadow
175
+ geometry={nodes.CRX10iA_L00.geometry}
176
+ material={materials["Fanuc_BlackMetal.001"]}
177
+ />
178
+ </group>
179
+ </group>
180
+ </>
181
+ )
182
+ }