From 755810702309fe0b92acc21e7ef92870f0115129 Mon Sep 17 00:00:00 2001
From: Lucio Zambon <lucio.zambon@elettra.eu>
Date: Tue, 21 May 2024 03:29:55 +0000
Subject: [PATCH] Add new file

---
 components/src/camod.js | 155 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 155 insertions(+)
 create mode 100644 components/src/camod.js

diff --git a/components/src/camod.js b/components/src/camod.js
new file mode 100644
index 0000000..ec2b967
--- /dev/null
+++ b/components/src/camod.js
@@ -0,0 +1,155 @@
+	import * as THREE from 'three';
+
+	// camod rack
+	export function camod(width=800, height=2500, depth=800) {
+		const camod = new THREE.Object3D();
+		const camod_rackObject = new THREE.Object3D();
+		const materialGreyDark= new THREE.MeshLambertMaterial({color: 0x9d9d9d});
+		const materialGreyMedium= new THREE.MeshLambertMaterial({color: 0x636363});
+		const materialVeryGreyDark= new THREE.MeshLambertMaterial({color: 0x242424});
+		const silvermaterial = new THREE.MeshLambertMaterial({color: 0xf0f0f0});
+		const greenmaterial = new THREE.MeshLambertMaterial({color: 0x17fc03});
+		const redmaterial = new THREE.MeshLambertMaterial({color: 0xff0000});
+		const yellowmaterial = new THREE.MeshLambertMaterial({color: 0xFBE928});
+		const blackmaterial = new THREE.MeshLambertMaterial({color: 0x000000});	
+
+		//right rack
+		const lrgeometry = new THREE.BoxGeometry(width, height, depth);
+		const lrmesh = new THREE.Mesh(lrgeometry, materialGreyDark);
+		lrmesh.position.set(0 , 0 , 0);
+		camod_rackObject.add(lrmesh);
+
+		//left rack
+		const rrgeometry = new THREE.BoxGeometry(width, height, depth);
+		const rrmesh = new THREE.Mesh(rrgeometry, materialGreyDark);
+		rrmesh.position.set( 0, 0 , -810);
+		camod_rackObject.add(rrmesh);		
+
+		//edge lle
+		const llegeometry = new THREE.BoxGeometry(width-750, height-100, depth-790);
+		const llemesh = new THREE.Mesh(llegeometry, blackmaterial);
+		llemesh.position.set( -377, 0 , -1155);
+		camod_rackObject.add(llemesh);
+
+		//edge lre		
+		const lregeometry = new THREE.BoxGeometry(width-750, height-100, depth-790);
+		const lremesh = new THREE.Mesh(lregeometry, blackmaterial);
+		lremesh.position.set( -377, 0 , -470);
+		camod_rackObject.add(lremesh);		
+
+		//edge rle		
+		const rlegeometry = new THREE.BoxGeometry(width-750, height-100, depth-790);
+		const rlemesh = new THREE.Mesh(rlegeometry, blackmaterial);
+		rlemesh.position.set( -377, 0 , -340);
+		camod_rackObject.add(rlemesh);	
+
+		//edge rre		
+		const rregeometry = new THREE.BoxGeometry(width-750, height-100, depth-790);
+		const rremesh = new THREE.Mesh(rregeometry, blackmaterial);
+		rremesh.position.set( -377, 0 , 345);
+		camod_rackObject.add(rremesh);		
+
+		//edge lue		
+		const luegeometry = new THREE.BoxGeometry(width-750, height-2490, depth-105);
+		const luemesh = new THREE.Mesh(luegeometry, blackmaterial);
+		luemesh.position.set( -377, 1200 , -813);
+		camod_rackObject.add(luemesh);		
+
+		//edge lde		
+		const ldegeometry = new THREE.BoxGeometry(width-750, height-2490, depth-105);
+		const ldemesh = new THREE.Mesh(ldegeometry, blackmaterial);
+		ldemesh.position.set( -377, -1200 , -807);
+		camod_rackObject.add(ldemesh);				
+
+		//edge rue		
+		const ruegeometry = new THREE.BoxGeometry(width-750, height-2490, depth-105);
+		const ruemesh = new THREE.Mesh(ruegeometry, blackmaterial);
+		ruemesh.position.set( -377, 1200 , 0);
+		camod_rackObject.add(ruemesh);			
+		
+		//edge rde		
+		const rdegeometry = new THREE.BoxGeometry(width-750, height-2490, depth-105);
+		const rdemesh = new THREE.Mesh(rdegeometry, blackmaterial);
+		rdemesh.position.set( -377, -1200 , 0);
+		camod_rackObject.add(rdemesh);
+		
+		//triangle warning1
+		const trianglewarning = new THREE.CylinderGeometry(200, 200, 1, 3);
+		const trianglewarningmesh = new THREE.Mesh(trianglewarning, yellowmaterial);
+		trianglewarningmesh.rotateX(Math.PI * 0.5);
+		trianglewarningmesh.rotateY(Math.PI * 1);
+		trianglewarningmesh.rotateZ(Math.PI * 0.5);		
+		trianglewarningmesh.position.set(-401, 700 , 0);		
+		camod_rackObject.add(trianglewarningmesh);
+		
+		//triangle warning black
+		const trianglewarning2 = new THREE.CylinderGeometry(180, 180, 1, 3);
+		const trianglewarning2mesh = new THREE.Mesh(trianglewarning2, blackmaterial);
+		trianglewarning2mesh.rotateX(Math.PI * 0.5);
+		trianglewarning2mesh.rotateY(Math.PI * 1);
+		trianglewarning2mesh.rotateZ(Math.PI * 0.5);		
+		trianglewarning2mesh.position.set(-402, 700 , 0);		
+		camod_rackObject.add(trianglewarning2mesh);		
+		
+		//triangle warning yellow2
+		const trianglewarning3 = new THREE.CylinderGeometry(150, 150, 1, 3);
+		const trianglewarning3mesh = new THREE.Mesh(trianglewarning3, yellowmaterial);
+		trianglewarning3mesh.rotateX(Math.PI * 0.5);
+		trianglewarning3mesh.rotateY(Math.PI * 1);
+		trianglewarning3mesh.rotateZ(Math.PI * 0.5);		
+		trianglewarning3mesh.position.set(-403, 700 , 0);		
+		camod_rackObject.add(trianglewarning3mesh);
+		
+		//ZOT1
+		const zot1geometry = new THREE.BoxGeometry(10, 110, 10);
+		const zot1geometrymesh = new THREE.Mesh(zot1geometry, blackmaterial);
+		zot1geometrymesh.position.set( -404, 750 , -20);
+		zot1geometrymesh.rotateX(Math.PI * 1.65);
+		zot1geometrymesh.rotateY(Math.PI * 1.50);
+		zot1geometrymesh.rotateZ(Math.PI * 1.50);		
+		camod_rackObject.add(zot1geometrymesh);	
+		
+		//ZOT2
+		const zot2geometry = new THREE.BoxGeometry(10, 70, 10);
+		const zot2geometrymesh = new THREE.Mesh(zot2geometry, blackmaterial);
+		zot2geometrymesh.position.set( -404, 715 , -16);
+		zot2geometrymesh.rotateX(Math.PI * 1.85);
+		zot2geometrymesh.rotateY(Math.PI * 1.50);
+		zot2geometrymesh.rotateZ(Math.PI * 1.50);		
+		camod_rackObject.add(zot2geometrymesh);	
+		
+		//ZOT3
+		const zot3geometry = new THREE.BoxGeometry(10, 80, 10);
+		const zot3geometrymesh = new THREE.Mesh(zot3geometry, blackmaterial);
+		zot3geometrymesh.position.set( -404, 697 , -1);
+		zot3geometrymesh.rotateX(Math.PI * 1.65);
+		zot3geometrymesh.rotateY(Math.PI * 1.50);
+		zot3geometrymesh.rotateZ(Math.PI * 1.50);		
+		camod_rackObject.add(zot3geometrymesh);	
+
+		//ZOT TRIANGLE
+		const zottrianglegeometry = new THREE.CylinderGeometry(22, 22, 1, 3);
+		const zottrianglegeometrymesh = new THREE.Mesh(zottrianglegeometry, blackmaterial);
+		zottrianglegeometrymesh.rotateX(Math.PI * 0.95);
+		zottrianglegeometrymesh.rotateY(Math.PI * 1);
+		zottrianglegeometrymesh.rotateZ(Math.PI * 0.5);		
+		zottrianglegeometrymesh.position.set(-405, 660 , -19);		
+		camod_rackObject.add(zottrianglegeometrymesh);		
+
+		//handle1
+		const handle1geometry = new THREE.BoxGeometry(10, 250, 80);
+		const handle1geometrymesh = new THREE.Mesh(handle1geometry, materialVeryGreyDark);
+		handle1geometrymesh.position.set( -401, 100 , -550);
+		camod_rackObject.add(handle1geometrymesh);	
+			
+		//handle2
+		const handle2geometry = new THREE.BoxGeometry(10, 250, 80);
+		const handle2geometrymesh = new THREE.Mesh(handle2geometry, materialVeryGreyDark);
+		handle2geometrymesh.position.set( -401, 100 , -260);
+		camod_rackObject.add(handle2geometrymesh);
+		camod_rackObject.rotateY(Math.PI);
+		camod_rackObject.position.set(400, 1250, 340);
+		camod_rackObject.scale.set(1, 1, 0.94);
+		camod.add(camod_rackObject);	
+		return camod;
+	}
-- 
GitLab