Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • philip.mahouttchi-hosseini/quality-kpi-final
  • boris.dasgupta/quality-kpi
  • hani.husseini/quality-kpi
  • tolga.guelec/quality-kpi
  • eva.schlott/quality-kpi
  • artashes.manukyan/quality-kpi
  • reinhart.tjahjadi/quality-kpi-reinhart-jason-tjahjadi
  • sotiris.giovannis/quality-kpi-giovanns
  • luis.gleich/quality-kpi
  • julius.damm/quality-kpi
  • gaganpreet.singh/quality-kpi
  • felix.fassler/aufgabe-1-felixf
  • benjamin.gross/quality-kpi
  • yixing.tao/quality-kpi-2024
  • louis.randa/quality-kpi
  • konstantinos.boiadjiev/quality-kpi
  • ammon.wuendisch/quality-kpi
  • tarish.kalra/quality-kpi
  • constantin.messingfeld/quality-kpi
  • manuel.kaster/quality-kpi
  • rafi.noordin/quality-kpi-rafinoordin
  • fst-tuda/public/lehre/quality-kpi
  • robert.schaefer1/quality-kpi
  • luca_tobias.nuecker/quality-kpi
  • calvin.weide/quality-kpi
  • maximilian.gross1/quality-kpi
  • christoph.froehlich/quality-kpi
  • young-min.kong/quality-kpi
  • thomas.gruber/quality-kpi
  • dennis.dibbern/quality-kpi
  • luca.sommer/quality-kpi
  • tushar.sharma/quality-kpi
  • philipp.schmidt2/quality-kpi
  • jakob.knoblach/quality-kpi
  • diogo.fernandes_costa/quality-kpi
  • zidane.buermann/quality-kpi
  • elias.rausch/quality-kpi
  • vincent.jestaedt/quality-kpi
  • santiago.ramirez_saldana/quality-kpi
  • jan.wech/quality-kpi
  • noah.michel1/lerneinheit-1-noah-michel
  • bastian.bickel/quality-kpi
  • linus.schuette/quality-kpi
  • henrik.buechs/quality-kpi
  • florian.weiss/quality-kpi
  • julie.kickstein/quality-kpi
  • paul.zuendel/quality-kpi
  • valentin.kaemmerer/quality-kpi
  • erwin.durasow/quality-kpi
  • david.buening/quality-kpi
  • keanu.engel/engel-keanu-auto
  • leo.mensler/quality-kpi
  • tahsin.ahmad/quality-kpi
  • moritz.roth/moritz-roth
  • jonathan.kollmann/quality-kpi
  • noah.waltmann/quality-kpi
  • daniel.burgos/quality-kpi
  • nilay.kuslugil/quality-kpi
  • yvan.ngoune/quality-kpi
  • eric.hahn/quality-kpi
  • andy.zheng/quality-kpi
  • junghyun.seo/quality-kpi
  • fabian.roesch1/quality-kpi
  • ole.quiring/quality-kpi
  • jonas.dietrich/quality-kpi
  • marius.stumpe/quality-kpi
  • maurizio.fell/quality-kpi
  • harry.kristanto/quality-kpi-prakdig-hk
  • paul.bobrinskoy/quality-kpi
  • vladimir.pascari/quality-kpi-vladimir-pascari
  • paul_konrad.braun/quality-kpi
  • leon.dawkins/quality-kpi
  • noel.schwibus/quality-kpi
  • bianca.beer/quality-kpi
  • pascal.pohlenz/quality-kpi
  • martin.cao/quality-kpi
  • malte.kramp/quality-kpi
  • jannik.hoffmann/quality-kpi
  • ishwor.kapri/quality-kpi
  • dhiraj.baral/quality-kpi
  • tobias.erdmann/quality-kpi
  • naveen.mohan/quality-kpi
  • filip.fetzer/quality-kpi
  • jakob.koch/quality-kpi
  • sascha.lamm/quality-kpi
  • lilly.laubenheimer/quality-kpi
  • amen.bouzouraa/quality-kpi
  • louis.senff/quality-kpi
  • francisco.flores/quality-kpi
  • benit.iberhysaj/quality-kpi
  • daniel.vratnjan/quality-kpi
  • henri.sprickmann/quality-kpi
  • tim.ostendorf/quality-kpi
  • maximilian.kopp1/lerneinheit-i-quality-kpi
  • zineb.karri/quality-kpi
  • bryan.lauren/quality-kpi
  • leon.herz/quality-kpi
  • zhibo.zhao/quality-kpi
  • samuel.neidert/quality-kpi
  • jiacheng.wang/quality-kpi
  • lucas.czarnecki/quality-kpi
  • lukas.ripp/quality-kpi
  • nikolai.brueckner/quality-kpi-nikolai-brueckner
  • niklas.ulmer/quality-kpi
  • lea_sophie.heering/quality-kpi
  • julia.kipp/quality-kpi
  • andres.rivera/quality-kpi
  • felix.meyners/quality-kpi
  • paul.sipp/quality-kpi
  • pascal.grym/quality-kpi
  • simon.peters/quality-kpi
  • justus.naewie/quality-kpi
  • alicia.sachs/quality-kpi
  • pascal.schraut/quality-kpi
  • jonas.dissinger/quality-kpi
  • mattheo.beyer/quality-kpi
  • adonay.johannes/quality-kpi
  • konrad.winkhaus/winkhaus-konrad-2809351-64-le-1
  • miko.boml/quality-kpi
  • bob.putz/quality-kpi
  • buesra.akkaya/quality-kpi
  • anton.littmann/quality-kpi
  • julian.volgmann/quality-kpi
  • soner.elbudak/quality-kpi
  • ilhan_mert.dumlupinar/quality-kpi
  • ibrahim.alsaleh/quality-kpi
  • amina.anizi/quality-kpi
  • Philipp.List/quality-kpi
  • greta.kirchhoff/quality-kpi
  • rowie.samuel/quality-kpi
130 results
Show changes
Commits on Source (12)
__pycache__/
\ No newline at end of file
0
0 Name: New Model.ldr
0 Author:
1 71 180 -48 0 1 0 0 0 1 0 0 0 1 56904.dat
1 0 180 -48 0 1 0 0 0 1 0 0 0 1 30699.dat
1 4 260 -57.8657 -50 1 0 0 0 1 0 0 0 1 2730.dat
1 71 180 -48 -30 0 0 1 0 1 0 -1 0 0 32073.dat
1 47 180 -48 -30 1 0 0 0 1 0 0 0 1 3713.dat
1 47 180 -48 -70 1 0 0 0 1 0 0 0 1 3713.dat
1 71 340 -48 0 1 0 0 0 1 0 0 0 1 56904.dat
1 0 340 -48 0 1 0 0 0 1 0 0 0 1 30699.dat
1 71 340 -48 -30 0 0 1 0 1 0 -1 0 0 32073.dat
1 47 340 -48 -30 1 0 0 0 1 0 0 0 1 3713.dat
1 47 340 -48 -70 1 0 0 0 1 0 0 0 1 3713.dat
1 47 220 -128 -70 1 0 0 0 0 1 0 -1 0 40490.dat
1 47 220 -208 -70 0 0 1 0 1 0 -1 0 0 32073.dat
1 47 220 -208 -25 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -35 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -45 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -55 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -85 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -95 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -105 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -208 -115 -1 0 0 0 1 0 0 0 -1 32123.dat
1 47 220 -48 -60 0 0 1 0 -1 0 1 0 0 3673.dat
No preview for this file type
......@@ -22,6 +22,7 @@ Die Ausarbeitung erfolgt im Notebook `ausarbeitung.ipynb`. In diesem ist bereits
## Abgabe
Die Abgabe erfolgt über [moodle](https://moodle.tu-darmstadt.de/mod/assign/view.php?id=1249192). Committen und pushen Sie zunächst Ihre Änderungen auf GitLab und laden Sie von dort Ihr gesamtes Repo als .zip-Datei herunter (ein direkter Download vom JupyterHub ist leider nicht möglich). Benennen Sie die .zip-Datei nach dem folgenden Schema:
<p style="text-align: center;"> &lt;Nachname&gt;_&lt;Vorname&gt;_&lt;MATR-NR&gt;_&lt;GRUPPEN-NR&gt;_le_1.zip</p>
Abgaben, die diese Namenskonvention nicht erfüllen, können in der Bewertung nicht berücksichtigt werden.
Laden Sie diese .zip-Datei in moodle hoch. Insbesondere sollten vorhanden sein:
- Jupyter Notebook mit Erklärungen und Darstellungen von LeoCAD
......
......@@ -5,8 +5,9 @@
"category":"axle",
"price [Euro]":0.001,
"mass [g]":0.66,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073",
"dimension [studs]":5
},
"44294":{
......@@ -15,8 +16,9 @@
"category":"axle",
"price [Euro]":0.01,
"mass [g]":1.05,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=44294#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=44294",
"dimension [studs]":7
},
"3707":{
......@@ -25,8 +27,9 @@
"category":"axle",
"price [Euro]":0.01,
"mass [g]":1.18,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3707#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3707",
"dimension [studs]":8
},
"60485":{
......@@ -35,8 +38,9 @@
"category":"axle",
"price [Euro]":0.01,
"mass [g]":1.3,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":7,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=60485#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=60485",
"dimension [studs]":9
},
"3737":{
......@@ -45,8 +49,9 @@
"category":"axle",
"price [Euro]":0.01,
"mass [g]":1.49,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":7,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3737#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3737",
"dimension [studs]":10
},
"23948":{
......@@ -55,8 +60,9 @@
"category":"axle",
"price [Euro]":0.15,
"mass [g]":1.65,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=23948#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=23948",
"dimension [studs]":11
},
"3708":{
......@@ -65,8 +71,9 @@
"category":"axle",
"price [Euro]":0.02,
"mass [g]":1.82,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":7,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3708#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3708",
"dimension [studs]":12
},
"50451":{
......@@ -75,8 +82,9 @@
"category":"axle",
"price [Euro]":0.75,
"mass [g]":2.37,
"environmental impact [kg CO2e /kg]":11.03,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=50451#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=50451",
"dimension [studs]":16
}
}
\ No newline at end of file
{
"8878-1":{
"item number":"8878-1",
"item description":"Power Functions Rechargeable Battery Box",
"category":"battery",
"price [Euro]":55,
"mass [g]":83.94,
"delivery time [days]":8,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8878-1#T=S&O={%22iconly%22:0}",
"output voltage [V]":7.4,
"dimensions [cm]":"15 x 15 x 3,5"
},
"8881-1":{
"item number":"8881-1",
"item description":"Power Functions Battery Box",
"category":"battery",
"related items":"8882-1, 8883-1, 88003-1",
"price [Euro]":12,
"mass [g]":179.4,
"environmental impact [kg CO2e /kg]":6.95,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8881-1#T=S&O={%22iconly%22:0}",
"output voltage [V]":9.0,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8881-1",
"output voltage [V]":9,
"dimensions [cm]":"8,8 x 6,3 x 3,2"
},
"88000-1":{
"item number":"88000-1",
"item description":"Lego AAA Battery Box",
"category":"battery",
"price [Euro]":30,
"mass [g]":97.24,
"delivery time [days]":6,
"data source":"https://www.brickowl.de/catalog/lego-aaa-battery-box-set-88000",
"output voltage [V]":9.0,
"dimensions [cm]":"15,3 x 15,1 x 3,9"
},
"2847c01":{
"item number":"2847c01",
"item description":"Electric 9V Battery Box",
"category":"battery",
"price [Euro]":2,
"mass [g]":172.7,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=2847c01&name=Electric%209V%20Battery%20Box%204%20x%2014%20x%204%20with%20Red%20Buttons%20and%20Contact%20Plate%20with%20Dark%20Gray%20Base%20(2846%20/%202847c00)&category=%5BElectric,%20Battery%20Box%5D#T=S&O={%22iconly%22:0}",
"output voltage [V]":9.0,
"dimensions [cm]":"11,2 x 3,2 x 3,2"
}
}
}
\ No newline at end of file
......@@ -5,8 +5,9 @@
"category":"frame",
"price [Euro]":2.19,
"mass [g]":12.96,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=39790#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=39790",
"dimension [studs]":"11 x 15 x 1"
},
"32532":{
......@@ -15,8 +16,9 @@
"category":"frame",
"price [Euro]":0.18,
"mass [g]":8.0,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32532#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32532",
"dimension [studs]":"6 x 8 x 1"
},
"32531":{
......@@ -25,8 +27,9 @@
"category":"frame",
"price [Euro]":0.1,
"mass [g]":5.0,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32531&idColor=11#T=C&C=11",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32531",
"dimension [studs]":"4 x 6 x 1"
},
"3700":{
......@@ -35,8 +38,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.82,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3700#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3700",
"dimension [studs]":"1 x 2"
},
"3701":{
......@@ -45,8 +49,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":1.46,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3701#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3701",
"dimension [studs]":"1 x 4 x 1"
},
"3702":{
......@@ -55,8 +60,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":2.85,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3702#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3702",
"dimension [studs]":"1 x 8 x 1"
},
"2730":{
......@@ -65,8 +71,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":3.67,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=2730#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=2730",
"dimension [studs]":"1 x 10 x 1"
},
"3895":{
......@@ -75,8 +82,9 @@
"category":"frame",
"price [Euro]":0.03,
"mass [g]":4.2,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3895#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3895",
"dimension [studs]":"1 x 12 x 1"
},
"32018":{
......@@ -85,8 +93,9 @@
"category":"frame",
"price [Euro]":0.03,
"mass [g]":4.92,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32018#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32018",
"dimension [studs]":"1 x 14 x 1"
},
"3703":{
......@@ -95,8 +104,9 @@
"category":"frame",
"price [Euro]":0.07,
"mass [g]":5.87,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3703#T=C",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3703",
"dimension [studs]":"1 x 16 x 1"
},
"32524":{
......@@ -105,8 +115,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":1.79,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32524&name=Technic,%20Liftarm%20Thick%201%20x%207&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32524",
"dimension [studs]":"1 x 7"
},
"40490":{
......@@ -115,18 +126,20 @@
"category":"frame",
"price [Euro]":0.02,
"mass [g]":2.59,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=40490&name=Technic,%20Liftarm%20Thick%201%20x%209&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=40490",
"dimension [studs]":"1 x 9"
},
"32525":{
"item number":32525,
"64290":{
"item number":64290,
"item description":"Technic, Liftarm Thick 1 x 11",
"category":"frame",
"price [Euro]":0.02,
"mass [g]":2.8,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32525&name=Technic,%20Liftarm%20Thick%201%20x%2011&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32525",
"dimension [studs]":"1 x 11"
},
"41239":{
......@@ -135,8 +148,9 @@
"category":"frame",
"price [Euro]":0.05,
"mass [g]":3.3,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=41239&name=Technic,%20Liftarm%20Thick%201%20x%2013&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=41239",
"dimension [studs]":"1 x 13"
},
"32278":{
......@@ -145,8 +159,9 @@
"category":"frame",
"price [Euro]":0.05,
"mass [g]":4.0,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32278&name=Technic,%20Liftarm%20Thick%201%20x%2015&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32278",
"dimension [studs]":"1 x 15"
},
"3713":{
......@@ -155,8 +170,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.14,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3713&name=Technic%20Bush&category=%5BTechnic%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3713",
"dimension [studs]":1
},
"32123":{
......@@ -165,8 +181,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.01,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=4265c&name=Technic%20Bush%201/2%20Smooth&category=%5BTechnic%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=4265c",
"dimension [studs]":1
},
"3749":{
......@@ -175,48 +192,31 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.22,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3749&name=Technic,%20Axle%20%201L%20with%20Pin%20without%20Friction%20Ridges&category=%5BTechnic,%20Axle%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3749",
"dimension [studs]":"0,75 x 2 x 0,55"
},
"6538":{
"item number":6538,
"item description":"Technic, Axle Connector 2L (Ridged Undetermined Type)",
"category":"frame",
"price [Euro]":0.03,
"mass [g]":0.4,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6538#T=C",
"dimension [studs]":"?"
},
"6536":{
"item number":6536,
"item description":"Technic, Axle and Pin Connector Perpendicular",
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.39,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":7,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6536&name=Technic,%20Axle%20and%20Pin%20Connector%20Perpendicular&category=%5BTechnic,%20Connector%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6536",
"dimension [studs]":"1x 2 x 1"
},
"32138":{
"item number":32138,
"item description":"Technic, Pin Double with Axle Hole",
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.96,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32138&name=Technic,%20Pin%20Double%20with%20Axle%20Hole&category=%5BTechnic,%20Pin%5D#T=S&O={%22iconly%22:0}",
"dimension [studs]":"?"
},
"14720":{
"item number":14720,
"item description":"Technic, Liftarm, Modified H-Shape Thick 3 x 5 Perpendicular",
"category":"frame",
"price [Euro]":0.08,
"mass [g]":2.29,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=14720&name=Technic,%20Liftarm,%20Modified%20H-Shape%20Thick%203%20x%205%20Perpendicular&category=%5BTechnic,%20Liftarm%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=14720",
"dimension [studs]":"3 x 5 x 1"
},
"48989":{
......@@ -225,8 +225,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":1.22,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=48989&name=Technic,%20Pin%20Connector%20Perpendicular%203L%20with%204%20Pins&category=%5BTechnic,%20Connector%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=48989",
"dimension [studs]":"3 x 3 x 1"
},
"55615":{
......@@ -235,8 +236,9 @@
"category":"frame",
"price [Euro]":0.1,
"mass [g]":1.9,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=55615&name=Technic,%20Pin%20Connector%20Perpendicular%203%20x%203%20Bent%20with%204%20Pins&category=%5BTechnic,%20Connector%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=55615",
"dimension [studs]":"4 x 4 x 1"
},
"32556":{
......@@ -245,8 +247,9 @@
"category":"frame",
"price [Euro]":0.1,
"mass [g]":0.25,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32556&name=Technic,%20Pin%203L%20without%20Friction%20Ridges&category=%5BTechnic,%20Pin%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32556",
"dimension [studs]":1
},
"3673":{
......@@ -255,8 +258,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.16,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3673&name=Technic,%20Pin%20without%20Friction%20Ridges&category=%5BTechnic,%20Pin%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3673",
"dimension [studs]":1
},
"32054":{
......@@ -265,8 +269,9 @@
"category":"frame",
"price [Euro]":0.01,
"mass [g]":0.33,
"environmental impact [kg CO2e /kg]":11.93,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32054&name=Technic,%20Pin%203L%20with%20Friction%20Ridges%20and%20Stop%20Bush&category=%5BTechnic,%20Pin%5D#T=S&O={%22iconly%22:0}",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32054",
"dimension [studs]":1
}
}
\ No newline at end of file
{
"3647":{
"item number":3647,
"item description":"Gear 8 Tooth",
"6589":{
"item number":6589,
"item description":"Gear 12 Tooth Bevel",
"category":"gear",
"price [Euro]":0.14,
"mass [g]":0.16,
"price [Euro]":0.01,
"mass [g]":0.29,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":12,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6589"
},
"10928":{
"item number":10928,
"item description":"Gear 8 Tooth with Dual Face",
"category":"gear",
"price [Euro]":0.01,
"mass [g]":0.22,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":11,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3647#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=10928"
},
"94925":{
"item number":94925,
......@@ -14,44 +25,39 @@
"category":"gear",
"price [Euro]":0.2,
"mass [g]":0.7,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":12,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=94925#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=94925"
},
"32269":{
"item number":32269,
"item description":"Gear 20 Tooth",
"18575":{
"item number":18575,
"item description":"Gear 20 Tooth Double Bevel",
"category":"gear",
"price [Euro]":0.36,
"mass [g]":1.4,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":13,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32269#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32269"
},
"3648":{
"item number":3648,
"24505":{
"item number":24505,
"item description":"Gear 24 Tooth",
"category":"gear",
"price [Euro]":0.32,
"mass [g]":1.17,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":11,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3648#T=C"
},
"3650":{
"item number":3650,
"item description":"Gear 24 Tooth Crown",
"category":"gear",
"price [Euro]":0.09,
"mass [g]":1.03,
"delivery time [days]":13,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3650#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3648"
},
"3649":{
"item number":3649,
"34432":{
"item number":34432,
"item description":"Gear 40 Tooth",
"category":"gear",
"price [Euro]":0.81,
"mass [g]":3.76,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":11,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3649#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3649"
},
"32498":{
"item number":32498,
......@@ -59,8 +65,9 @@
"category":"gear",
"price [Euro]":0.88,
"mass [g]":3.5,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":12,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32498#T=C"
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=32498"
},
"6588":{
"item number":6588,
......@@ -68,6 +75,7 @@
"category":"gear",
"price [Euro]":1.63,
"mass [g]":4.5,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":11,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6588#T=C"
},
......@@ -77,6 +85,7 @@
"category":"gear",
"price [Euro]":0.54,
"mass [g]":0.6,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":12,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=4716#T=C"
}
......
......@@ -3,15 +3,15 @@
"item number":"8882-1",
"item description":"Power Functions XL-Motor",
"category":"motor",
"related items":8881,
"related items":"8881-1",
"idle current [mA]":80,
"idle speed [rev per min]":220,
"locking torque [Ncm]":40,
"price [Euro]":30,
"mass [g]":72.85,
"environmental impact [kg CO2e /kg]":15.84,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8882-1&name=Power%20Functions%20XL-Motor&category=%5BPower%20Functions%5D#T=S&O={%22iconly%22:0}",
"compatible battery":8881,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8882-1",
"input voltage [V]":9,
"dimensions [cm]":"13.6 x 12.2 x 3.9"
},
......@@ -19,15 +19,15 @@
"item number":"8883-1",
"item description":"Power Functions M-Motor",
"category":"motor",
"related items":"8881, 8878, 45517, 88000",
"related items":"8881-1",
"idle current [mA]":65,
"idle speed [rev per min]":405,
"locking torque [Ncm]":11,
"price [Euro]":20,
"mass [g]":35.0,
"environmental impact [kg CO2e /kg]":15.84,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8883-1&name=Power%20Functions%20M-Motor&category=%5BPower%20Functions%5D#T=S&O={%22iconly%22:0}",
"compatible battery":"8881, 8878, 45517, 88000",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=8883-1",
"input voltage [V]":9,
"dimensions [cm]":"13.8 x 11.9 x 2.3"
},
......@@ -35,15 +35,15 @@
"item number":"88003-1",
"item description":"Power Functions L-Motor",
"category":"motor",
"related items":"8881, 8878, 88000",
"related items":"8881-1",
"idle current [mA]":120,
"idle speed [rev per min]":390,
"locking torque [Ncm]":18,
"price [Euro]":15,
"mass [g]":48.0,
"environmental impact [kg CO2e /kg]":15.84,
"delivery time [days]":3,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=88003-1&name=Power%20Functions%20L-Motor&category=%5BPower%20Functions%5D#T=S&O={%22iconly%22:0}",
"compatible battery":"8881, 8878, 88000",
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?S=88003-1",
"input voltage [V]":9,
"dimensions [cm]":"13 x 11 x 2.5"
}
......
{
"3482":{
"item number":3482,
"item description":"Wheel with Split Axle Hole",
"category":"rim",
"related items":3483,
"diameter [mm]":17.5,
"price [Euro]":0.01,
"mass [g]":0.88,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3482"
},
"6014":{
"item number":6014,
"item description":"Wheel 11mm D. x 12mm, Hole Round for Wheels Holder Pin",
"category":"rim",
"related items":6015,
"diameter [mm]":11.0,
"price [Euro]":0.0045,
"mass [g]":0.6,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6014a"
},
"18976":{
"item number":18976,
"item description":"Wheel 18mm D. x 12mm with Axle Hole and Stud, Solid Brake Rotor Lines",
"category":"rim",
"related items":30391,
"diameter [mm]":18.0,
"price [Euro]":0.01,
"mass [g]":1.4,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=18976"
},
"56904":{
"item number":56904,
"item description":"Wheel 30mm D. x 14mm",
"category":"rim",
"related items":30699,
"diameter [mm]":30.0,
"price [Euro]":0.01,
"mass [g]":4.1,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904"
},
"56908":{
"item number":56908,
"item description":"Wheel 43.2mm D. x 26mm Technic Racing Small, 6 Pin Holes",
"category":"rim",
"related items":"41897, 61480",
"diameter [mm]":43.2,
"price [Euro]":0.05,
"mass [g]":9.0,
"environmental impact [kg CO2e /kg]":32.06,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=56908"
}
}
\ No newline at end of file
{
"3483":{
"item number":3483,
"item description":"Tire 24mm D. x 8mm Offset Tread - Interior Ridges",
"category":"tire",
"related items":3482,
"inner diameter [mm]":17,
"outer diameter [mm]":24.0,
"price [Euro]":0.0025,
"mass [g]":1.69,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3483"
},
"6015":{
"item number":6015,
"item description":"Tire 21mm D. x 12mm - Offset Tread Small Wide",
"category":"tire",
"related items":6014,
"inner diameter [mm]":11,
"outer diameter [mm]":21.0,
"price [Euro]":0.0004,
"mass [g]":2.0,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=6015"
},
"30391":{
"item number":30391,
"item description":"Tire 30.4 x 14 Offset Tread",
"category":"tire",
"related items":18976,
"inner diameter [mm]":17,
"outer diameter [mm]":30.4,
"price [Euro]":0.0027,
"mass [g]":6.5,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=30391"
},
"30699":{
"item number":30699,
"item description":"Tire 43.2 x 14 Solid",
"category":"tire",
"related items":56904,
"inner diameter [mm]":30,
"outer diameter [mm]":43.2,
"price [Euro]":0.06,
"mass [g]":8.25,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=30699"
},
"41897":{
"item number":41897,
"item description":"Tire 56 x 28 ZR Street",
"category":"tire",
"related items":56908,
"inner diameter [mm]":43,
"outer diameter [mm]":56.0,
"price [Euro]":0.29,
"mass [g]":13.98,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=41897"
},
"61480":{
"item number":61480,
"item description":"Tire 68.7 x 34 R",
"category":"tire",
"related items":56908,
"inner diameter [mm]":43,
"outer diameter [mm]":68.7,
"price [Euro]":0.02,
"mass [g]":20.0,
"environmental impact [kg CO2e /kg]":8.97,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=61480"
}
}
\ No newline at end of file
{
"4265cc01":{
"item number":"4265cc01",
"item description":"wheel 14",
"category":"wheel",
"related items":59895,
"price [Euro]":0.02,
"mass [g]":0.5,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=4265cc01#T=C",
"diameter [mm]":14.0
},
"3482c01":{
"item number":"3482c01",
"item description":"wheel 24",
"category":"wheel",
"related items":3483,
"price [Euro]":0.01,
"mass [g]":3.0,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=3482c01#T=C",
"diameter [mm]":24.0
},
"56904c02":{
"item number":"56904c02",
"item description":"wheel 43,2",
"category":"wheel",
"related items":30699,
"price [Euro]":0.11,
"mass [g]":13.0,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904c02#T=C",
"diameter [mm]":43.2
},
"41896c04":{
"item number":"41896c04",
"item description":"wheel 56",
"category":"wheel",
"related items":41897,
"price [Euro]":0.45,
"mass [g]":23.0,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=41896c04#T=C",
"diameter [mm]":56.0
},
"2903c02":{
"item number":"2903c02",
"item description":"wheel 81,6",
"category":"wheel",
"related items":2902,
"price [Euro]":1.31,
"mass [g]":30.0,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=2903c02#T=C",
"diameter [mm]":81.6
},
"88517c01":{
"item number":"88517c01",
"item description":"wheel 100,6",
"category":"wheel",
"related items":11957,
"price [Euro]":1.25,
"mass [g]":40.0,
"delivery time [days]":5,
"data source":"https://www.bricklink.com/v2/catalog/catalogitem.page?P=88517c02#T=C",
"diameter [mm]":100.6
}
}
\ No newline at end of file
figures/leocad_screenshot_cut.png

364 KiB | W: 0px | H: 0px

figures/leocad_screenshot_cut.png

220 KiB | W: 0px | H: 0px

figures/leocad_screenshot_cut.png
figures/leocad_screenshot_cut.png
figures/leocad_screenshot_cut.png
figures/leocad_screenshot_cut.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
%% Cell type:markdown id:c9328cd1 tags:
# FAIRe Qualitäts-KPIs
%% Cell type:markdown id:2ee8746d tags:
## Einführung
FAIRe Qualitäts-KPIs schaffen eine transparente und nachvollziehbare Entscheidungsgrundlage. In dieser Lerneinheit sollen sie die Methodik erlernen, indem sie LEGO-Autos zusammenbauen, deren Quality KPIs bestimmen und miteinander vergleichen.
### Werkzeug für den Zusammenbau
Der Zusammenbau der Autos erfolgt virtuell. Als Werkzeug steht Ihnen das Modul `classes` zur Verfügung. In diesem sind unterschiedliche Klassen und Methoden implementiert (Objektorientierung). Sie erzeugen jeweils Objekte der Klassen. Ein Objekt ist dabei die virtuelle Abbildung eines realen Bauteiles. Die Eigenschaften des Bauteiles werden über die Eigenschaften des Objektes abgebildet.
### Berechnung der Quality KPIs
KPIs (Key Performance Indikatoren) sind Kenngrößen des Systems. Sie werden über Berechnungsvorschriften bestimmt. Diese Berechnungsvorschriften sind von Ihnen als python-Funktionen im Modul `calculation_rules` zu implementieren.
### Datenblätter
Für den Zusammenbau stehen Ihnen verschiedene Bauteile in unterschiedlichen Ausführungen zur Verfügung. Sie nutzen die Datenblätter, die als `json-Dateien` zur Verfügung gestellt werden, um Ihre Autos zusammenzubauen.
%% Cell type:markdown id:1c702114 tags:
## Eigene Module und Minimalbeispiel
Für die Ausarbeitung nutzen wir zwei eigene Module (Python-Dateien), die im Ordner `functions` gespeichert sind.
Das Modul `calculation_rules` erweitern Sie während der Ausarbeitung. Um die Änderungen zu nutzen, müssen Sie das Notebook neu starten.
Im Modul `classes` befinden sich die komplette Klassen und Funktionen zur Verwendung.
Mit einem Minimalbeispiel wird Ihnen gezeigt, wie sie die Module nutzen.
%% Cell type:markdown id:670118b3 tags:
#### Versuchsaufbau:
Die folgende Abbildung zeigt den Versuchsaufbau des Minimalbeispiels in LeoCAD. Die transparenten Bauteile sind dabei nicht Teil des hier erläuterten Zusammenbaus, können aber mit dem zur Verfügung gestellten Baukasten ergänzt werden:
%% Cell type:markdown id:2f969ed9 tags:
![Tretroller in LeoCAD](figures/leocad_screenshot_cut.png)
![Minimalbeispiel aus LeoCAD](figures/leocad_screenshot_cut.png)
%% Cell type:markdown id:6d3310be tags:
### Modul classes
Enthält `LegoComponent, LegoAssembly, AggregationLayer, KPIEncoder` und die Funktion `print_assembly_tree`.
`LegoComponent` bildet einzelne Komponenten ab, während `LegoAssembly` zusammengesetzte Aggregationsebenen abdeckt, also Bauteil, Baugruppe und System. Zur Unterscheidung dient die Klasse `AggregationLayer`, diese ist für `LegoComponent` immer `Component` (Komponente), muss für `LegoAssembly` entsprechend auf `SYSTEM` (System) , `ASSEMBLY` (Baugruppe) oder `SUBASSEMBLY` (Bauteil) gesetzt werden.
Wir bauen aus Achse, Rahmen und Reifen einen Tretroller zusammen.
%% Cell type:code id:b2778dee tags:
``` python
# import modules
import json
import pprint
from functions import calculation_rules
# Importing all modules one by one to provide an overview
# The next commented line would provide the same result in one line
# from functions.classes import *
from functions.classes import LegoComponent
from functions.classes import LegoAssembly
from functions.classes import AggregationLayer
from functions.classes import KPIEncoder
from functions.classes import print_assembly_tree
# When you are writing code yourself later, you might want to copy
# these imports to avoid rerunning the full notebook after restart
```
%% Cell type:code id:0b1f9aff tags:
``` python
# Create the wheels and axles as single components first
# Look up the specific item you want from the provided json files,
# we can load the full file into a dict
with open("datasheets/axles.json") as json_file:
axles = json.load(json_file)
# Pick a specific axle via its 'item number'
print(axles["32073"])
# Create the component with the dict:
front_axle = LegoComponent("front axle", axles["32073"])
# Both label and the data dict are optional parameters.
# You can view, add or edit properties:
print(front_axle.properties["label"])
front_axle.properties["color"] = "grey"
front_axle.properties["color"] = "light bluish grey"
# Create the second axle
back_axle = LegoComponent()
back_axle.properties["label"] = "back axle"
back_axle.properties.update(axles["32073"])
# Do not use = here, otherwise you'd overwrite existing properties.
# Instead use update to have all entries added to properties
back_axle.properties["color"] = "grey"
back_axle.properties["color"] = "light bluish grey"
# Viewing dicts in one line is not easy to read,
# a better output comes with pretty print (pprint):
pprint.pprint(back_axle.properties)
```
%% Output
{'item number': 32073, 'item description': 'Axle 5 studs', 'category': 'axle', 'price [Euro]': 0.001, 'mass [g]': 0.66, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073#T=S&O={%22iconly%22:0}', 'dimension [studs]': 5}
{'item number': 32073, 'item description': 'Axle 5 studs', 'category': 'axle', 'price [Euro]': 0.001, 'mass [g]': 0.66, 'environmental impact [kg CO2e /kg]': 11.03, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073', 'dimension [studs]': 5}
front axle
{'category': 'axle',
'color': 'grey',
'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073#T=S&O={%22iconly%22:0}',
'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073',
'delivery time [days]': 3,
'dimension [studs]': 5,
'environmental impact [kg CO2e /kg]': 11.03,
'item description': 'Axle 5 studs',
'item number': 32073,
'label': 'back axle',
'mass [g]': 0.66,
'price [Euro]': 0.001}
%% Cell type:code id:b4a8e8c8 tags:
``` python
# Now wheels
with open("datasheets/wheels.json") as json_file:
wheels = json.load(json_file)
# A wheel consists of a rim (Felge) and a tire (Reifen)
with open("datasheets/rims.json") as json_file:
rims = json.load(json_file)
with open("datasheets/tires.json") as json_file:
tires = json.load(json_file)
# Adding the color here already as dict, and the surface as key-value argument.
# Multiple of both parameters are supported, but only in this order.
# front_wheel = LegoComponent(
# 'front wheel', wheels['2903c02'], {'color':'yellow'},winter='true')
front_wheel = LegoComponent(
"front wheel", wheels["2903c02"], surface="rough", paint="glossy"
)
pprint.pprint(front_wheel.properties)
front_rim = LegoComponent("front rim", rims["56904"], surface="rough", paint="glossy")
front_tire = LegoComponent("front tire", tires["30699"], winter=True)
pprint.pprint(front_rim.properties)
# We included a clone function to both Lego classes, so you can easily
# create duplicate objects. Passing the new label is optional
back_wheel = front_wheel.clone("back wheel")
back_rim = front_rim.clone("back rim")
back_tire = front_tire.clone("back tire")
```
%% Output
{'category': 'wheel',
'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=2903c02#T=C',
{'category': 'rim',
'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904',
'delivery time [days]': 5,
'diameter [mm]': 81.6,
'item description': 'wheel 81,6',
'item number': '2903c02',
'label': 'front wheel',
'mass [g]': 30.0,
'diameter [mm]': 30.0,
'environmental impact [kg CO2e /kg]': 32.06,
'item description': 'Wheel 30mm D. x 14mm',
'item number': 56904,
'label': 'front rim',
'mass [g]': 4.1,
'paint': 'glossy',
'price [Euro]': 1.31,
'related items': 2902,
'price [Euro]': 0.01,
'related items': 30699,
'surface': 'rough'}
%% Cell type:code id:25bd06c5 tags:
``` python
# Create subassemblies and add the wheels and axles
# The AggregationLayer must be used, passing the label
# or additional properties is optional
front_wheel_assembly = LegoAssembly(
AggregationLayer.SUBASSEMBLY,
"front wheel assembly",
assembly_method="stick together like lego blocks",
)
# Add LegoComponents to the LegoAssembly, single or as list
front_wheel_assembly.add([front_wheel, front_axle])
front_wheel_assembly.add([front_rim, front_tire])
# You can access the components of an assembly like this:
print(front_wheel_assembly.components[1].properties["label"])
# Assemblies can be cloned as well (including their children),
# but don't forget to adjust labels or you might be stuck with
# a 'front wheel' in your 'back wheel assembly'
# Stick together back wheel parts
back_wheel_assembly = LegoAssembly(
AggregationLayer.SUBASSEMBLY, "back wheel assembly"
)
back_wheel_assembly.add([back_wheel, back_axle])
back_wheel_assembly.add([back_rim, back_tire])
# Now combine wheels and axles
front_axle_assembly = LegoAssembly(
AggregationLayer.ASSEMBLY, "front axle assembly"
)
front_axle_assembly.add([front_wheel_assembly, front_axle])
back_axle_assembly = LegoAssembly(
AggregationLayer.ASSEMBLY, "back axle assembly"
)
back_axle_assembly.add([back_wheel_assembly, back_axle])
```
%% Output
front axle
front tire
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
Cell In[6], line 35
30 front_axle_assembly.add([front_wheel_assembly, front_axle])
32 back_axle_assembly = LegoAssembly(
33 AggregationLayer.ASSEMBLY, "back axle assembly"
34 )
---> 35 back_axle_assembly.add([back_axle_assembly, back_axle])
File c:\Users\Lamm\Documents\02_Areas\Praktikum_Digitalisierung\01_quality-kpi_dev\functions\classes.py:374, in LegoAssembly.add(self, part)
372 elif isinstance(part, list):
373 for p in part:
--> 374 self.add(p)
375 else:
376 raise TypeError(
377 f"Argument should be of types {LegoAssembly.__name__}, "
378 f"{LegoComponent.__name__} or a list of them. "
379 f"Got {type(part).__name__} instead."
380 )
File c:\Users\Lamm\Documents\02_Areas\Praktikum_Digitalisierung\01_quality-kpi_dev\functions\classes.py:369, in LegoAssembly.add(self, part)
356 """
357 Adds either a Lego component, a subassembly or a (mixed) list of them to the
358 current assembly. Uses internal functions add_component() and add_assembly().
(...)
366 instance, or a (mixed) list of them.
367 """
368 if isinstance(part, LegoComponent):
--> 369 self.add_component(part)
370 elif isinstance(part, LegoAssembly):
371 self.add_assembly(part)
File c:\Users\Lamm\Documents\02_Areas\Praktikum_Digitalisierung\01_quality-kpi_dev\functions\classes.py:310, in LegoAssembly.add_component(self, component)
304 if not isinstance(component, LegoComponent):
305 raise TypeError(
306 f"Argument should be of type {LegoComponent.__name__}, "
307 f"got {type(component).__name__} instead."
308 )
--> 310 if self.get_root_assembly().contains_uuid(component._uuid):
311 raise AssertionError(
312 f"This assembly or a subassembly already contains "
313 f"the component with ID "
314 f"{component._uuid}."
315 )
316 component._parent = self
File c:\Users\Lamm\Documents\02_Areas\Praktikum_Digitalisierung\01_quality-kpi_dev\functions\classes.py:439, in LegoAssembly.get_root_assembly(self)
431 """
432 Returns the root LegoAssembly of the current assembly by recursively
433 searching up the tree until the top-most parent (the root) is found.
(...)
436 The root LegoAssembly of the current LegoAssembly instance.
437 """
438 current_assembly = self
--> 439 while current_assembly._parent is not None:
440 current_assembly = current_assembly._parent
441 return current_assembly
KeyboardInterrupt:
%% Cell type:code id:2b6648e1 tags:
``` python
# Create frame component and assemble the system
with open("datasheets/frame.json") as json_file:
frame = json.load(json_file)
scooter_frame = LegoComponent("scooter frame", frame["3703"], {"color": "red"})
# The scooter is our system level assembly, you can choose the AggregationLayer
# But the hiercarchy (SYSTEM > ASSEMBLY > SUBASSEMBLY) must be in order.
# Components can be added to all LegoAssembly objects
scooter = LegoAssembly(
AggregationLayer.SYSTEM,
"scooter",
manufacturer="FST",
comment="Faster! Harder! Scooter!",
)
# add frame and subassemblies
scooter.add([scooter_frame, front_wheel_assembly, back_wheel_assembly])
```
%% Cell type:code id:71324895 tags:
``` python
# Look at the assembly
# We can get all LegoComponents from this assembly.
# If parameter 'max_depth' is set to 0, only direct children will be listed:
print(scooter.get_component_list(max_depth=0))
# If it is set to -1 (default), all LegoComponents are listed:
print(scooter.get_component_list())
```
%% Output
[LegoComponent scooter frame [a90b291e-696c-41c7-b9b8-43d34724b460]]
[LegoComponent scooter frame [a90b291e-696c-41c7-b9b8-43d34724b460], LegoComponent front wheel [b03ce5b5-9c6c-4315-a67b-902c729c3d7b], LegoComponent front axle [64771daf-733a-4a2a-8520-9fa94259e50e], LegoComponent back wheel [8fcb7db9-6fec-4e70-b274-0c4fe403550b], LegoComponent back axle [2ce57b96-64b8-48b1-aac8-b0731adaa93b]]
%% Cell type:markdown id:001f1c77 tags:
### Modul calculation_rules
Um für unser System "Tretroller" einen KPI zu erzeugen, wird die Masse des Systems betrachtet. Die Masse der einzelnen Komponenten ist in den Datenblättern unter `mass [g]` enthalten.
%% Cell type:code id:7b60d0fb tags:
``` python
# test the import
calculation_rules.test_function()
```
%% Output
You called the test function.
%% Cell type:code id:fe4edad6 tags:
``` python
total_mass = calculation_rules.kpi_mass(scooter)
print("Gesamtmasse: ", total_mass, "g")
# Add KPI to system
scooter.properties["mass [g]"] = total_mass
# We can also add the mass to the subassemblies.
# children() returns a dict with a list of added
# components and assemblies.
for a in scooter.children()["assemblies"]:
a_mass = 0
for c in a.get_component_list(-1):
a_mass += c.properties["mass [g]"]
a.properties["mass [g]"] = a_mass
```
%% Output
Gesamtmasse: 67.19 g
%% Cell type:code id:c26b36c8 tags:
``` python
scooter.get_component_list(-1)
```
%% Output
[LegoComponent scooter frame [a90b291e-696c-41c7-b9b8-43d34724b460],
LegoComponent front wheel [b03ce5b5-9c6c-4315-a67b-902c729c3d7b],
LegoComponent front axle [64771daf-733a-4a2a-8520-9fa94259e50e],
LegoComponent back wheel [8fcb7db9-6fec-4e70-b274-0c4fe403550b],
LegoComponent back axle [2ce57b96-64b8-48b1-aac8-b0731adaa93b]]
%% Cell type:code id:4d56419f tags:
``` python
# Look at the full assembly with KPI
# Print the full assembly with all levels
print_assembly_tree(scooter)
```
%% Output
LegoAssembly scooter [86fdda66-adb2-48c0-b6f8-f6c59d488662]
├── LegoAssembly front wheel assembly [e02a87d2-cb0b-4695-b237-9ca17f9611da]
│ ├── LegoComponent front wheel [b03ce5b5-9c6c-4315-a67b-902c729c3d7b]
│ └── LegoComponent front axle [64771daf-733a-4a2a-8520-9fa94259e50e]
├── LegoAssembly back wheel assembly [db5db4c5-36c3-4b90-88eb-299c46a30049]
│ ├── LegoComponent back wheel [8fcb7db9-6fec-4e70-b274-0c4fe403550b]
│ └── LegoComponent back axle [2ce57b96-64b8-48b1-aac8-b0731adaa93b]
└── LegoComponent scooter frame [a90b291e-696c-41c7-b9b8-43d34724b460]
%% Cell type:code id:b31416d3 tags:
``` python
# Dump to json file with to_dict() and KPIEncoder
with open("scooter.json", "w") as fp:
json.dump(scooter.to_dict(), fp, cls=KPIEncoder, indent=4)
# full view is too big for Juypter (try it)
# pprint.pprint(scooter.to_dict())
```
%% Cell type:markdown id:53793ae8 tags:
In dieser exportierten json-Datei ('scooter.json') sind die Werte maschinen- und menschenlesbar hinterlegt.
Zusammen mit der Berechnungsvorschrift in `calculation_rules` ist auch die Entstehung des KPI nachvollziehbar und wiederverwendbar dokumentiert und damit 'FAIR'.
%% Cell type:markdown id:92c77051 tags:
#### Zusätzliche Details
%% Cell type:code id:b91fed73 tags:
``` python
# Each child knows its parent
first_child = scooter.children()["assemblies"][0]
print("Child:", first_child)
print("Parent:", first_child.parent)
# Also we can access the "top" parent
latest_child = first_child.children()["components"][0]
print("Top parent: ", latest_child.get_root_assembly())
# Each part created has a unique identifier (the long number in [])
# Don't try to add the identical part again.
```
%% Output
Child: LegoAssembly front wheel assembly [e02a87d2-cb0b-4695-b237-9ca17f9611da]
Parent: LegoAssembly scooter [86fdda66-adb2-48c0-b6f8-f6c59d488662]
Top parent: LegoAssembly scooter [86fdda66-adb2-48c0-b6f8-f6c59d488662]
......