From 47ecb151af51d0c245db3ea034c860ad6cdee6c3 Mon Sep 17 00:00:00 2001
From: Lucio Zambon <lucio.zambon@elettra.eu>
Date: Wed, 24 Apr 2024 13:44:31 +0000
Subject: [PATCH] Add new file

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

diff --git a/components/src/pdu.js b/components/src/pdu.js
new file mode 100644
index 0000000..7476143
--- /dev/null
+++ b/components/src/pdu.js
@@ -0,0 +1,115 @@
+	import * as THREE from 'three';
+
+
+	// PDU
+	export function pdu(width=500, height=100, depth=600) {
+		const pduObject = new THREE.Object3D();
+		const slotObject = new THREE.Object3D();
+		
+	
+		const greenmaterial = new THREE.MeshLambertMaterial({color: 0x00ff11});
+		const greenDarkmaterial = new THREE.MeshLambertMaterial({color: 0x0b5e11});
+		const graymaterial = new THREE.MeshLambertMaterial({color: 0x2e2e2e});
+		const graymaterial2 = new THREE.MeshLambertMaterial({color: 0x7d7d7d});
+		const silvermaterial = new THREE.MeshLambertMaterial({color: 0xf0f0f0});
+		const blackmaterial = new THREE.MeshLambertMaterial({color: 0x000000});
+		const bluematerial = new THREE.MeshLambertMaterial({color: 0x0000ff});
+		const redmaterial = new THREE.MeshLambertMaterial({color: 0xff0000});
+
+		
+		// base
+		const basegeometry = new THREE.BoxGeometry(width, height, depth);
+		const basegeometrymesh = new THREE.Mesh(basegeometry, graymaterial);
+		basegeometrymesh.position.set( 0, 0 ,0);
+		pduObject.add(basegeometrymesh);	
+		
+		// card
+		const cardgeometry = new THREE.BoxGeometry(5, 50, depth);
+		const cardgeometrymesh = new THREE.Mesh(cardgeometry, blackmaterial);
+		cardgeometrymesh.position.set( -250, 25 , 0);
+		pduObject.add(cardgeometrymesh);
+		
+		//slot
+		const led1green = new THREE.BoxGeometry(3, 20, 20);
+		const led1greenmesh = new THREE.Mesh(led1green, graymaterial2);
+		led1greenmesh.position.set( -254, 25 , -280);
+		slotObject.add(led1greenmesh);		
+	
+		
+		//CLONE Cards connector
+
+		const card2 = slotObject.clone();
+		card2.position.set( 0, 0 , 25);
+		pduObject.add(card2);
+		
+		const card3 = slotObject.clone();
+		card3.position.set( 0, 0 , 50);
+		pduObject.add(card3);
+		
+		const card4 = slotObject.clone();
+		card4.position.set( 0, 0 , 75);
+		pduObject.add(card4);	
+		
+		const card5 = slotObject.clone();
+		card5.position.set( 0, 0 , 100);
+		pduObject.add(card5);
+		
+		const card6 = slotObject.clone();
+		card6.position.set( 0, 0 , 125);
+		pduObject.add(card6);
+		
+		const card7 = slotObject.clone();
+		card7.position.set( 0, 0 , 150);
+		pduObject.add(card7);
+		
+		const card8 = slotObject.clone();
+		card8.position.set( 0, 0 , 175);
+		pduObject.add(card8);	
+		
+		const card9 = slotObject.clone();
+		card9.position.set( 0, 0 , 200);
+		pduObject.add(card9);		
+		
+		const card10 = slotObject.clone();
+		card10.position.set( 0, 0 , 225);
+		pduObject.add(card10);		
+		
+		const card11 = slotObject.clone();
+		card11.position.set( 0, 0 , 225);
+		pduObject.add(card11);	
+		
+		const card12 = slotObject.clone();
+		card12.position.set( 0, 0 , 250);
+		pduObject.add(card12);	
+		
+		const card13 = slotObject.clone();
+		card13.position.set( 0, 0 , 275);
+		pduObject.add(card13);
+		
+		const card14 = slotObject.clone();
+		card14.position.set( 0, 0 , 300);
+		pduObject.add(card14);
+		
+		const card15 = slotObject.clone();
+		card15.position.set( 0, 0 , 325);
+		pduObject.add(card15);		
+		
+		// bluebase
+		const livel2geometry = new THREE.BoxGeometry(5, 35, 130);
+		const livel2geometrymesh = new THREE.Mesh(livel2geometry, bluematerial);
+		livel2geometrymesh.position.set( -252, 25 , -233);
+		pduObject.add(livel2geometrymesh);		
+		// redbase
+		const livel1geometry = new THREE.BoxGeometry(5, 35, 125);
+		const livel1geometrymesh = new THREE.Mesh(livel1geometry, redmaterial);
+		livel1geometrymesh.position.set(-252, 25 , -106);
+		pduObject.add(livel1geometrymesh);
+	
+		
+		
+		pduObject.add(slotObject);
+		
+	
+		
+		return pduObject;
+	}
-- 
GitLab