diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..634b8be
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,3 @@
+The Ultimate box maker (https://www.thingiverse.com/thing:1264391) by Heartman is licensed under the Creative Commons - Attribution - Non-Commercial license.
+http://creativecommons.org/licenses/by-nc/3.0/
+
diff --git a/README.md b/README.md
index 30b6297..f0a117e 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,4 @@
# Ultimate-Box-Maker
Ultimate Box Maker
+
+This is copied from https://www.thingiverse.com/thing:1264391 under the creative commons license with modifications logged here.
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..1e3301e
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,213 @@
+ .: :,
+,:::::::: ::` ::: :::
+,:::::::: ::` ::: :::
+.,,:::,,, ::`.:, ... .. .:, .:. ..`... ..` .. .:, .. :: .::, .:,`
+ ,:: ::::::: ::, ::::::: `:::::::.,:: ::: ::: .:::::: ::::: :::::: .::::::
+ ,:: :::::::: ::, :::::::: ::::::::.,:: ::: ::: :::,:::, ::::: ::::::, ::::::::
+ ,:: ::: ::: ::, ::: :::`::. :::.,:: ::,`::`::: ::: ::: `::,` ::: :::
+ ,:: ::. ::: ::, ::` :::.:: ::.,:: :::::: ::::::::: ::` :::::: :::::::::
+ ,:: ::. ::: ::, ::` :::.:: ::.,:: .::::: ::::::::: ::` :::::::::::::::
+ ,:: ::. ::: ::, ::` ::: ::: `:::.,:: :::: :::` ,,, ::` .:: :::.::. ,,,
+ ,:: ::. ::: ::, ::` ::: ::::::::.,:: :::: :::::::` ::` ::::::: :::::::.
+ ,:: ::. ::: ::, ::` ::: :::::::`,:: ::. :::::` ::` :::::: :::::.
+ ::, ,:: ``
+ ::::::::
+ ::::::
+ `,,`
+
+
+https://www.thingiverse.com/thing:1264391
+The Ultimate box maker by Heartman is licensed under the Creative Commons - Attribution - Non-Commercial license.
+http://creativecommons.org/licenses/by-nc/3.0/
+
+# Summary
+
+
+The file include now the Panel Maker.
+Check below in the Experimental area to download it.
+
+My first try with OpenScad,
+the box is fully customizable.
+I hope you will enjoy with it, and will show us many boxes made with.
+
+If you play with the Fillet value you will go from the sharp to the round sides box
+If you want a chanfered box, set Resolution to 1.
+
+To export each single piece, just set the other elements to No value.
+The Top and Bottom Shells are the same,
+so it's not necessary to export them two times, except if you use the PCB feet option.
+
+Check the animation below to see how to design your own box.
+
+You can change the text shape with any font listed here .
+
+Have fun ;)
+
+
+
+- Feb 12 2016
+Minor bug fixed on unaligned hole when using more than 2mm thickness.
+- March 01 2016
+Added the decoration/holes options. (Thanks Ettie for your contribution)
+- March 09 2016
+Added PCB feet support, fixed the shell artefact on export mode.
+
+- March 01 2018
+ It Seems, since few month the online customizer doesn't works, some lib missing. it's not under my hands, ask to makerbot/thingiverse staff.
+THE solution is,
+downloading the newest - Development Snapshot - release of Openscad software
+and activate in the Edit>preference>features menu
+and check the "Enable customizer" option.
link:
+OpenScad-Customizer
+
+
+Please, read as well.
+The PCB feet dimensions are all starting from the foot axis center.
+it's not the circuit board size, holes center only(!)
+
+
+
+
+Check below, some animated pictures showing how to use the Ultimate Box maker online.
+
+
+# Print Settings
+
+Printer Brand: RepRap
+Printer: Home made
+Rafts: Doesn't Matter
+Supports: Doesn't Matter
+Resolution: 0.2mm
+Infill: 30%
+
+Notes:
+I printed some boxes horizontally or vertically, both without support.
+
+
+
+
+# How I Designed This
+
+## Overview & Background:
+
+
+The technology called, Stereolithography exists since the 80s.
+It allow you to design anything with a monomer polymerization, by deposition of successive layers.
+It's at the origin of our FDM printers, developed it's been 20 years.
+The STL file format was developed for stereolithography.
+
+Why are we fascinated by this technology?
+Because we are witnesses and participants of an industrial revolution.
+A total change in the economic paradigm that has developed during the 19 and 20 th century.
+We become craftsmen, designers, and take in hand our evolution.
+
+Why am I talking about that?
+I think it's a good introduction to show you a perfect demonstration of what we expect from this technology.
+
+Design and answer to their own needs.
+The proposed application lets you quickly create a case whose use will be defined by the user, the shape and dimensions will be those you have identified and not that the industry proposes / imposes.
+
+## Objective:
+
+
+The student will have two objectives with a project like this one:
+
+ - Create an application that will be used for future projects , and definitively avoid buying boxes not always appropriate to the needs .
+
+- Learn programming by a quasi - recreational way , since entirely graphic and visual .
+
+- Many other knowledge can be transmitted based on the desire of the teacher to deepen a particular aspect of the design .
+
+## Audience
+
+
+I'm not familiar with the foreign school grades,
+in France, it's around 10/12 years old they begin to learn programming.
+So, it can be a nice starting way and support project to learn visually to code.
+
+The presented project was made in two times,
+I did the box in the first time,
+then I dug more, for the Panel Maker.
+
+Like I said in the begining, I was, myself, learning how OpenScad works,
+that will be the same for the students, learning and creating something more complex lesson after lesson. A perfect way to evaluate the level reached.
+
+As an assessment
+
+
+
+## Skill learned
+
+
+- Programmation
+- 3D design
+- 3D printing
+
+## Duration:
+
+
+A project like this can be the string to follow throughout all the school year.
+
+# Show me how it works...
+
+
+Here is a small demonstration how to use the Customizer to have separate pieces box.
+The top and bottom shells are the same, so it's not necessary to make 2 differents stl files.
+If the front Panel is without text, then the back and front panels are the same, so again,
+just export one.
+
+
+right click on the animated pic, and choose "view image" to watch it in full size
+
+
+
+## PCB feet
+
+
+
+right click on the pic, and choose "view image" to watch it in full size
+
+
+
+Enjoy guys, and show us your printed boxes... ;)
+
+# Experimental Area
+
+## With Panel Maker
+
+This release include a panel maker.
+fully working, just for the moment, I didn't find the good way to present it within the online customizer.
+Not easy to make something easy to use...
+
+Anyway, it stay easy to use, through Openscad. with few option, you will be able to create the panel that you need without limitation, or almost...
+
+
+
+
+
+
+To build your own panel, you have 4 tools:
+
+ Cutting shapes
+* Square
+* Circle
+
+ Text label
+* Linear text
+* Circular text
+
+SquareHole (1,20,20,15,10,1); //(On/Off, Xpos,Ypos,Length,Width,Fillet)
+CylinderHole(1,27,40,8); //(On/Off, Xpos, Ypos, Diameter)
+
+LText(1,20,83,"Arial Black",4,"Digital Screen"); //(On/Off, Xpos, Ypos, "Font", Size, "Text")
+CText(1,93,29,"Arial",4,10,180,0,"ABCD"); //(On/Off, Xpos, Ypos, "Font", Size, Diameter, Arc(Deg), Starting Angle(Deg),"Text")
+
+
+right click on the animated pic, and choose "view image" to watch it in full size
+
+
+You can download the animation and read it with the excellent Gifviewer open source freeware, to pause the animation when needed.
+
+Here you can download The Ultimate BOX & PANEL maker.
+I hope you will enjoy with.
+
\ No newline at end of file
diff --git a/attribution_card.html b/attribution_card.html
new file mode 100644
index 0000000..6332ad5
--- /dev/null
+++ b/attribution_card.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
The Ultimate box maker by Heartman
+
Published on January 13, 2016
+
www.thingiverse.com/thing:1264391
+
+
+ Creative Commons - Attribution - Non-Commercial
+
+
+
diff --git a/files/U_Box_V103.scad b/files/U_Box_V103.scad
new file mode 100644
index 0000000..0543484
--- /dev/null
+++ b/files/U_Box_V103.scad
@@ -0,0 +1,363 @@
+
+/*//////////////////////////////////////////////////////////////////
+ - FB Aka Heartman/Hearty 2016 -
+ - http://heartygfx.blogspot.com -
+ - OpenScad Parametric Box -
+ - CC BY-NC 3.0 License -
+////////////////////////////////////////////////////////////////////
+12/02/2016 - Fixed minor bug
+28/02/2016 - Added holes ventilation option
+09/03/2016 - Added PCB feet support, fixed the shell artefact on export mode.
+
+*/////////////////////////// - Info - //////////////////////////////
+
+// All coordinates are starting as integrated circuit pins.
+// From the top view :
+
+// CoordD <--- CoordC
+// ^
+// ^
+// ^
+// CoordA ---> CoordB
+
+
+////////////////////////////////////////////////////////////////////
+
+
+////////// - Paramètres de la boite - Box parameters - /////////////
+
+/* [Box dimensions] */
+// - Longueur - Length
+ Length = 110;
+// - Largeur - Width
+ Width = 90;
+// - Hauteur - Height
+ Height = 30;
+// - Epaisseur - Wall thickness
+ Thick = 2;//[2:5]
+
+/* [Box options] */
+// Pieds PCB - PCB feet (x4)
+ PCBFeet = 0;// [0:No, 1:Yes]
+// - Decorations to ventilation holes
+ Vent = 0;// [0:No, 1:Yes]
+// - Decoration-Holes width (in mm)
+ Vent_width = 1.5;
+// - Text you want
+ txt = "HeartyGFX";
+// - Font size
+ TxtSize = 3;
+// - Font
+ Police ="Arial Black";
+// - Diamètre Coin arrondi - Filet diameter
+ Filet = 2;//[0.1:12]
+// - lissage de l'arrondi - Filet smoothness
+ Resolution = 50;//[1:100]
+// - Tolérance - Tolerance (Panel/rails gap)
+ m = 0.9;
+
+/* [PCB_Feet--the_board_will_not_be_exported) ] */
+//All dimensions are from the center foot axis
+// - Coin bas gauche - Low left corner X position
+PCBPosX = 7;
+// - Coin bas gauche - Low left corner Y position
+PCBPosY = 6;
+// - Longueur PCB - PCB Length
+PCBLength = 70;
+// - Largeur PCB - PCB Width
+PCBWidth = 50;
+// - Heuteur pied - Feet height
+FootHeight = 10;
+// - Diamètre pied - Foot diameter
+FootDia = 8;
+// - Diamètre trou - Hole diameter
+FootHole = 3;
+
+
+/* [STL element to export] */
+//Coque haut - Top shell
+ TShell = 1;// [0:No, 1:Yes]
+//Coque bas- Bottom shell
+ BShell = 1;// [0:No, 1:Yes]
+//Panneau arrière - Back panel
+ BPanel = 1;// [0:No, 1:Yes]
+//Panneau avant - Front panel
+ FPanel = 1;// [0:No, 1:Yes]
+//Texte façade - Front text
+ Text = 1;// [0:No, 1:Yes]
+
+
+
+/* [Hidden] */
+// - Couleur coque - Shell color
+Couleur1 = "Orange";
+// - Couleur panneaux - Panels color
+Couleur2 = "OrangeRed";
+// Thick X 2 - making decorations thicker if it is a vent to make sure they go through shell
+Dec_Thick = Vent ? Thick*2 : Thick;
+// - Depth decoration
+Dec_size = Vent ? Thick*2 : 0.8;
+
+//////////////////// Oversize PCB limitation -Actually disabled - ////////////////////
+//PCBL= PCBLength+PCBPosX>Length-(Thick*2+7) ? Length-(Thick*3+20+PCBPosX) : PCBLength;
+//PCBW= PCBWidth+PCBPosY>Width-(Thick*2+10) ? Width-(Thick*2+12+PCBPosY) : PCBWidth;
+PCBL=PCBLength;
+PCBW=PCBWidth;
+//echo (" PCBWidth = ",PCBW);
+
+
+
+/////////// - Boitier générique bord arrondis - Generic Fileted box - //////////
+
+module RoundBox($a=Length, $b=Width, $c=Height){// Cube bords arrondis
+ $fn=Resolution;
+ translate([0,Filet,Filet]){
+ minkowski (){
+ cube ([$a-(Length/2),$b-(2*Filet),$c-(2*Filet)], center = false);
+ rotate([0,90,0]){
+ cylinder(r=Filet,h=Length/2, center = false);
+ }
+ }
+ }
+ }// End of RoundBox Module
+
+
+////////////////////////////////// - Module Coque/Shell - //////////////////////////////////
+
+module Coque(){//Coque - Shell
+ Thick = Thick*2;
+ difference(){
+ difference(){//sides decoration
+ union(){
+ difference() {//soustraction de la forme centrale - Substraction Fileted box
+
+ difference(){//soustraction cube median - Median cube slicer
+ union() {//union
+ difference(){//Coque
+ RoundBox();
+ translate([Thick/2,Thick/2,Thick/2]){
+ RoundBox($a=Length-Thick, $b=Width-Thick, $c=Height-Thick);
+ }
+ }//Fin diff Coque
+ difference(){//largeur Rails
+ translate([Thick+m,Thick/2,Thick/2]){// Rails
+ RoundBox($a=Length-((2*Thick)+(2*m)), $b=Width-Thick, $c=Height-(Thick*2));
+ }//fin Rails
+ translate([((Thick+m/2)*1.55),Thick/2,Thick/2+0.1]){ // +0.1 added to avoid the artefact
+ RoundBox($a=Length-((Thick*3)+2*m), $b=Width-Thick, $c=Height-Thick);
+ }
+ }//Fin largeur Rails
+ }//Fin union
+ translate([-Thick,-Thick,Height/2]){// Cube à soustraire
+ cube ([Length+100, Width+100, Height], center=false);
+ }
+ }//fin soustraction cube median - End Median cube slicer
+ translate([-Thick/2,Thick,Thick]){// Forme de soustraction centrale
+ RoundBox($a=Length+Thick, $b=Width-Thick*2, $c=Height-Thick);
+ }
+ }
+
+
+ difference(){// Fixation box legs
+ union(){
+ translate([3*Thick +5,Thick,Height/2]){
+ rotate([90,0,0]){
+ $fn=6;
+ cylinder(d=16,Thick/2);
+ }
+ }
+
+ translate([Length-((3*Thick)+5),Thick,Height/2]){
+ rotate([90,0,0]){
+ $fn=6;
+ cylinder(d=16,Thick/2);
+ }
+ }
+
+ }
+ translate([4,Thick+Filet,Height/2-57]){
+ rotate([45,0,0]){
+ cube([Length,40,40]);
+ }
+ }
+ translate([0,-(Thick*1.46),Height/2]){
+ cube([Length,Thick*2,10]);
+ }
+ } //Fin fixation box legs
+ }
+
+ union(){// outbox sides decorations
+ //if(Thick==1){Thick=2;
+ for(i=[0:Thick:Length/4]){
+
+ // Ventilation holes part code submitted by Ettie - Thanks ;)
+ translate([10+i,-Dec_Thick+Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([(Length-10) - i,-Dec_Thick+Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([(Length-10) - i,Width-Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([10+i,Width-Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+
+
+ }// fin de for
+ // }
+ }//fin union decoration
+ }//fin difference decoration
+
+
+ union(){ //sides holes
+ $fn=50;
+ translate([3*Thick+5,20,Height/2+4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([Length-((3*Thick)+5),20,Height/2+4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([3*Thick+5,Width+5,Height/2-4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([Length-((3*Thick)+5),Width+5,Height/2-4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ }//fin de sides holes
+
+ }//fin de difference holes
+}// fin coque
+
+////////////////////////////// - Experiment - ///////////////////////////////////////////
+
+
+///////////////////////////////// - Module Front/Back Panels - //////////////////////////
+
+module Panels(){//Panels
+ color(Couleur2){
+ translate([Thick+m,m/2,m/2]){
+ difference(){
+ translate([0,Thick,Thick]){
+ RoundBox(Length,Width-((Thick*2)+m),Height-((Thick*2)+m));}
+ translate([Thick,-5,0]){
+ cube([Length,Width+10,Height]);}
+ }
+ }
+ }
+}
+
+
+/////////////////////// - Foot with base filet - /////////////////////////////
+module foot(FootDia,FootHole,FootHeight){
+ Filet=2;
+ color("Orange")
+ translate([0,0,Filet-1.5])
+ difference(){
+
+ difference(){
+ //translate ([0,0,-Thick]){
+ cylinder(d=FootDia+Filet,FootHeight-Thick, $fn=100);
+ //}
+ rotate_extrude($fn=100){
+ translate([(FootDia+Filet*2)/2,Filet,0]){
+ minkowski(){
+ square(10);
+ circle(Filet, $fn=100);
+ }
+ }
+ }
+ }
+ cylinder(d=FootHole,FootHeight+1, $fn=100);
+ }
+}// Fin module foot
+
+module Feet(){
+//////////////////// - PCB only visible in the preview mode - /////////////////////
+ translate([3*Thick+2,Thick+5,FootHeight+(Thick/2)-0.5]){
+
+ %square ([PCBL+10,PCBW+10]);
+ translate([PCBL/2,PCBW/2,0.5]){
+ color("Olive")
+ %text("PCB", halign="center", valign="center", font="Arial black");
+ }
+ } // Fin PCB
+
+
+////////////////////////////// - 4 Feet - //////////////////////////////////////////
+ translate([3*Thick+7,Thick+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([(3*Thick)+PCBL+7,Thick+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([(3*Thick)+PCBL+7,(Thick)+PCBW+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([3*Thick+7,(Thick)+PCBW+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+
+} // Fin du module Feet
+
+
+///////////////////////////////////// - Main - ///////////////////////////////////////
+
+if(BPanel==1)
+//Back Panel
+translate ([-m/2,0,0]){
+Panels();
+}
+
+if(FPanel==1)
+//Front Panel
+rotate([0,0,180]){
+ translate([-Length-m/2,-Width,0]){
+ Panels();
+ }
+ }
+
+if(Text==1)
+// Front text
+color(Couleur1){
+ translate([Length-(Thick),Thick*4,(Height-(Thick*4+(TxtSize/2)))]){// x,y,z
+ rotate([90,0,90]){
+ linear_extrude(height = 0.25){
+ text(txt, font = Police, size = TxtSize, valign ="center", halign ="left");
+ }
+ }
+ }
+}
+
+
+if(BShell==1)
+// Coque bas - Bottom shell
+color(Couleur1){
+Coque();
+}
+
+
+if(TShell==1)
+// Coque haut - Top Shell
+color( Couleur1,1){
+ translate([0,Width,Height+0.2]){
+ rotate([0,180,180]){
+ Coque();
+ }
+ }
+}
+
+if (PCBFeet==1)
+// Feet
+translate([PCBPosX,PCBPosY,0]){
+Feet();
+ }
\ No newline at end of file
diff --git a/files/U_Box_V104_Test_Cleaned.scad b/files/U_Box_V104_Test_Cleaned.scad
new file mode 100644
index 0000000..c0be8f5
--- /dev/null
+++ b/files/U_Box_V104_Test_Cleaned.scad
@@ -0,0 +1,425 @@
+
+/*//////////////////////////////////////////////////////////////////
+ - FB Aka Heartman/Hearty 2016 -
+ - http://heartygfx.blogspot.com -
+ - OpenScad Parametric Box -
+ - CC BY-NC 3.0 License -
+////////////////////////////////////////////////////////////////////
+12/02/2016 - Fixed minor bug
+28/02/2016 - Added holes ventilation option
+09/03/2016 - Added PCB feet support, fixed the shell artefact on export mode.
+
+*/////////////////////////// - Info - //////////////////////////////
+
+// All coordinates are starting as integrated circuit pins.
+// From the top view :
+
+// CoordD <--- CoordC
+// ^
+// ^
+// ^
+// CoordA ---> CoordB
+
+
+////////////////////////////////////////////////////////////////////
+
+
+////////// - Paramètres de la boite - Box parameters - /////////////
+
+/* [Box dimensions] */
+// - Longueur - Length
+ Length = 160;
+// - Largeur - Width
+ Width = 170;
+// - Hauteur - Height
+ Height = 100;
+// - Epaisseur - Wall thickness
+ Thick = 2;//[2:5]
+
+/* [Box options] */
+// - Diamètre Coin arrondi - Filet diameter
+ Filet = 2;//[0.1:12]
+// - lissage de l'arrondi - Filet smoothness
+ Resolution = 50;//[1:100]
+// - Tolérance - Tolerance (Panel/rails gap)
+ m = 0.9;
+// Pieds PCB - PCB feet (x4)
+ PCBFeet = 1;// [0:No, 1:Yes]
+// - Decorations to ventilation holes
+ Vent = 1;// [0:No, 1:Yes]
+// - Decoration-Holes width (in mm)
+ Vent_width = 1.5;
+
+
+
+/* [PCB_Feet] */
+//All dimensions are from the center foot axis
+
+// - Coin bas gauche - Low left corner X position
+PCBPosX = 7;
+// - Coin bas gauche - Low left corner Y position
+PCBPosY = 6;
+// - Longueur PCB - PCB Length
+PCBLength = 70;
+// - Largeur PCB - PCB Width
+PCBWidth = 50;
+// - Heuteur pied - Feet height
+FootHeight = 10;
+// - Diamètre pied - Foot diameter
+FootDia = 8;
+// - Diamètre trou - Hole diameter
+FootHole = 3;
+
+
+/* [STL element to export] */
+//Coque haut - Top shell
+TShell = 0;// [0:No, 1:Yes]
+//Coque bas- Bottom shell
+BShell = 1;// [0:No, 1:Yes]
+//Panneau avant - Front panel
+FPanL = 1;// [0:No, 1:Yes]
+//Panneau arrière - Back panel
+BPanL = 1;// [0:No, 1:Yes]
+
+
+
+/* [Hidden] */
+// - Couleur coque - Shell color
+Couleur1 = "Orange";
+// - Couleur panneaux - Panels color
+Couleur2 = "OrangeRed";
+// Thick X 2 - making decorations thicker if it is a vent to make sure they go through shell
+Dec_Thick = Vent ? Thick*2 : Thick;
+// - Depth decoration
+Dec_size = Vent ? Thick*2 : 0.8;
+
+
+
+
+
+/////////// - Boitier générique bord arrondis - Generic rounded box - //////////
+
+module RoundBox($a=Length, $b=Width, $c=Height){// Cube bords arrondis
+ $fn=Resolution;
+ translate([0,Filet,Filet]){
+ minkowski (){
+ cube ([$a-(Length/2),$b-(2*Filet),$c-(2*Filet)], center = false);
+ rotate([0,90,0]){
+ cylinder(r=Filet,h=Length/2, center = false);
+ }
+ }
+ }
+ }// End of RoundBox Module
+
+
+////////////////////////////////// - Module Coque/Shell - //////////////////////////////////
+
+module Coque(){//Coque - Shell
+ Thick = Thick*2;
+ difference(){
+ difference(){//sides decoration
+ union(){
+ difference() {//soustraction de la forme centrale - Substraction Fileted box
+
+ difference(){//soustraction cube median - Median cube slicer
+ union() {//union
+ difference(){//Coque
+ RoundBox();
+ translate([Thick/2,Thick/2,Thick/2]){
+ RoundBox($a=Length-Thick, $b=Width-Thick, $c=Height-Thick);
+ }
+ }//Fin diff Coque
+ difference(){//largeur Rails
+ translate([Thick+m,Thick/2,Thick/2]){// Rails
+ RoundBox($a=Length-((2*Thick)+(2*m)), $b=Width-Thick, $c=Height-(Thick*2));
+ }//fin Rails
+ translate([((Thick+m/2)*1.55),Thick/2,Thick/2+0.1]){ // +0.1 added to avoid the artefact
+ RoundBox($a=Length-((Thick*3)+2*m), $b=Width-Thick, $c=Height-Thick);
+ }
+ }//Fin largeur Rails
+ }//Fin union
+ translate([-Thick,-Thick,Height/2]){// Cube à soustraire
+ cube ([Length+100, Width+100, Height], center=false);
+ }
+ }//fin soustraction cube median - End Median cube slicer
+ translate([-Thick/2,Thick,Thick]){// Forme de soustraction centrale
+ RoundBox($a=Length+Thick, $b=Width-Thick*2, $c=Height-Thick);
+ }
+ }
+
+
+ difference(){// wall fixation box legs
+ union(){
+ translate([3*Thick +5,Thick,Height/2]){
+ rotate([90,0,0]){
+ $fn=6;
+ cylinder(d=16,Thick/2);
+ }
+ }
+
+ translate([Length-((3*Thick)+5),Thick,Height/2]){
+ rotate([90,0,0]){
+ $fn=6;
+ cylinder(d=16,Thick/2);
+ }
+ }
+
+ }
+ translate([4,Thick+Filet,Height/2-57]){
+ rotate([45,0,0]){
+ cube([Length,40,40]);
+ }
+ }
+ translate([0,-(Thick*1.46),Height/2]){
+ cube([Length,Thick*2,10]);
+ }
+ } //Fin fixation box legs
+ }
+
+ union(){// outbox sides decorations
+
+ for(i=[0:Thick:Length/4]){
+
+ // Ventilation holes part code submitted by Ettie - Thanks ;)
+ translate([10+i,-Dec_Thick+Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([(Length-10) - i,-Dec_Thick+Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([(Length-10) - i,Width-Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+ translate([10+i,Width-Dec_size,1]){
+ cube([Vent_width,Dec_Thick,Height/4]);
+ }
+
+
+ }// fin de for
+ // }
+ }//fin union decoration
+ }//fin difference decoration
+
+
+ union(){ //sides holes
+ $fn=50;
+ translate([3*Thick+5,20,Height/2+4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([Length-((3*Thick)+5),20,Height/2+4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([3*Thick+5,Width+5,Height/2-4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ translate([Length-((3*Thick)+5),Width+5,Height/2-4]){
+ rotate([90,0,0]){
+ cylinder(d=2,20);
+ }
+ }
+ }//fin de sides holes
+
+ }//fin de difference holes
+}// fin coque
+
+////////////////////////////// - Experiment - ///////////////////////////////////////////
+
+
+
+
+
+/////////////////////// - Foot with base filet - /////////////////////////////
+module foot(FootDia,FootHole,FootHeight){
+ Filet=2;
+ color(Couleur1)
+ translate([0,0,Filet-1.5])
+ difference(){
+
+ difference(){
+ //translate ([0,0,-Thick]){
+ cylinder(d=FootDia+Filet,FootHeight-Thick, $fn=100);
+ //}
+ rotate_extrude($fn=100){
+ translate([(FootDia+Filet*2)/2,Filet,0]){
+ minkowski(){
+ square(10);
+ circle(Filet, $fn=100);
+ }
+ }
+ }
+ }
+ cylinder(d=FootHole,FootHeight+1, $fn=100);
+ }
+}// Fin module foot
+
+module Feet(){
+//////////////////// - PCB only visible in the preview mode - /////////////////////
+ translate([3*Thick+2,Thick+5,FootHeight+(Thick/2)-0.5]){
+
+ %square ([PCBLength+10,PCBWidth+10]);
+ translate([PCBLength/2,PCBWidth/2,0.5]){
+ color("Olive")
+ %text("PCB", halign="center", valign="center", font="Arial black");
+ }
+ } // Fin PCB
+
+
+////////////////////////////// - 4 Feet - //////////////////////////////////////////
+ translate([3*Thick+7,Thick+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([(3*Thick)+PCBLength+7,Thick+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([(3*Thick)+PCBLength+7,(Thick)+PCBWidth+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+ translate([3*Thick+7,(Thick)+PCBWidth+10,Thick/2]){
+ foot(FootDia,FootHole,FootHeight);
+ }
+
+} // Fin du module Feet
+
+
+
+
+ ////////////////////////////////////////////////////////////////////////
+////////////////////// <- Holes Panel Manager -> ///////////////////////
+////////////////////////////////////////////////////////////////////////
+
+// <- Panel ->
+module Panel(Length,Width,Thick,Filet){
+ scale([0.5,1,1])
+ minkowski(){
+ cube([Thick,Width-(Thick*2+Filet*2+m),Height-(Thick*2+Filet*2+m)]);
+ translate([0,Filet,Filet])
+ rotate([0,90,0])
+ cylinder(r=Filet,h=Thick, $fn=100);
+ }
+}
+
+
+
+// <- Circle hole ->
+// Cx=Cylinder X position | Cy=Cylinder Y position | Cdia= Cylinder dia | Cheight=Cyl height
+module CylinderHole(OnOff,Cx,Cy,Cdia){
+ if(OnOff==1)
+ translate([Cx,Cy,-1])
+ cylinder(d=Cdia,10, $fn=50);
+}
+// <- Square hole ->
+// Sx=Square X position | Sy=Square Y position | Sl= Square Length | Sw=Square Width | Filet = Round corner
+module SquareHole(OnOff,Sx,Sy,Sl,Sw,Filet){
+ if(OnOff==1)
+ minkowski(){
+ translate([Sx+Filet/2,Sy+Filet/2,-1])
+ cube([Sl-Filet,Sw-Filet,10]);
+ cylinder(d=Filet,h=10, $fn=100);
+ }
+}
+
+
+
+// <- Linear text panel ->
+module LText(OnOff,Tx,Ty,Font,Size,Content){
+ if(OnOff==1)
+ translate([Tx,Ty,Thick+.5])
+ linear_extrude(height = 0.5){
+ text(Content, size=Size, font=Font);
+ }
+}
+// <- Circular text panel->
+module CText(OnOff,Tx,Ty,Font,Size,TxtRadius,Angl,Turn,Content){
+ if(OnOff==1) {
+ Angle = -Angl / len(Content);
+ translate([Tx,Ty,Thick+.5])
+ for (i= [0:len(Content)-1] ){
+ rotate([0,0,i*Angle+90+Turn])
+ translate([0,TxtRadius,0]) {
+ linear_extrude(height = 0.5){
+ text(Content[i], font = Font, size = Size, valign ="baseline", halign ="center");
+ }
+ }
+ }
+ }
+}
+////////////////////// <- New module Panel -> //////////////////////
+module FPanL(){
+ difference(){
+ color(Couleur2)
+ Panel(Length,Width,Thick,Filet);
+
+
+ rotate([90,0,90]){
+ color(Couleur2){
+// <- Cutting shapes from here ->
+ SquareHole (1,20,20,15,10,1); //(On/Off, Xpos,Ypos,Length,Width,Filet)
+ SquareHole (1,40,20,15,10,1);
+ SquareHole (1,60,20,15,10,1);
+ CylinderHole(1,27,40,8); //(On/Off, Xpos, Ypos, Diameter)
+ CylinderHole(1,47,40,8);
+ CylinderHole(1,67,40,8);
+ SquareHole (1,20,50,80,30,3);
+ CylinderHole(1,93,30,10);
+ SquareHole (1,120,20,30,60,3);
+// <- To here ->
+ }
+ }
+}
+
+ color(Couleur1){
+ translate ([-.5,0,0])
+ rotate([90,0,90]){
+// <- Adding text from here ->
+ LText(1,20,83,"Arial Black",4,"Digital Screen");//(On/Off, Xpos, Ypos, "Font", Size, "Text")
+ LText(1,120,83,"Arial Black",4,"Level");
+ LText(1,20,11,"Arial Black",6," 1 2 3");
+ CText(1,93,29,"Arial Black",4,10,180,0,"1 . 2 . 3 . 4 . 5 . 6");//(On/Off, Xpos, Ypos, "Font", Size, Diameter, Arc(Deg), Starting Angle(Deg),"Text")
+// <- To here ->
+ }
+ }
+}
+
+
+/////////////////////////// <- Main part -> /////////////////////////
+
+if(TShell==1)
+// Coque haut - Top Shell
+ color( Couleur1,1){
+ translate([0,Width,Height+0.2]){
+ rotate([0,180,180]){
+ Coque();
+ }
+ }
+ }
+
+if(BShell==1)
+// Coque bas - Bottom shell
+ color(Couleur1){
+ Coque();
+ }
+
+// Pied support PCB - PCB feet
+if (PCBFeet==1)
+// Feet
+ translate([PCBPosX,PCBPosY,0]){
+ Feet();
+ }
+
+// Panneau avant - Front panel <<<<<< Text and holes only on this one.
+//rotate([0,-90,-90])
+if(FPanL==1)
+ translate([Length-(Thick*2+m/2),Thick+m/2,Thick+m/2])
+ FPanL();
+
+//Panneau arrière - Back panel
+if(BPanL==1)
+ color(Couleur2)
+ translate([Thick+m/2,Thick+m/2,Thick+m/2])
+ Panel(Length,Width,Thick,Filet);
\ No newline at end of file
diff --git a/images/5c2528d7dc69dc743380f6c7ddb887d5_preview_featured.jpg b/images/5c2528d7dc69dc743380f6c7ddb887d5_preview_featured.jpg
new file mode 100644
index 0000000..ff8e481
Binary files /dev/null and b/images/5c2528d7dc69dc743380f6c7ddb887d5_preview_featured.jpg differ
diff --git a/images/74d1fa52020ccdc66438833ef1dfb658_preview_featured.jpg b/images/74d1fa52020ccdc66438833ef1dfb658_preview_featured.jpg
new file mode 100644
index 0000000..279a51f
Binary files /dev/null and b/images/74d1fa52020ccdc66438833ef1dfb658_preview_featured.jpg differ
diff --git a/images/7efb17c56cb85ef8a36d71741ac642c0_preview_featured.jpg b/images/7efb17c56cb85ef8a36d71741ac642c0_preview_featured.jpg
new file mode 100644
index 0000000..696efba
Binary files /dev/null and b/images/7efb17c56cb85ef8a36d71741ac642c0_preview_featured.jpg differ
diff --git a/images/9b60c601c6d0bcd0837e3c9c51fbf55f_preview_featured.jpg b/images/9b60c601c6d0bcd0837e3c9c51fbf55f_preview_featured.jpg
new file mode 100644
index 0000000..b857199
Binary files /dev/null and b/images/9b60c601c6d0bcd0837e3c9c51fbf55f_preview_featured.jpg differ
diff --git a/images/bd4fbbd9aa4da913eb2d5eac3920107e_preview_featured.jpg b/images/bd4fbbd9aa4da913eb2d5eac3920107e_preview_featured.jpg
new file mode 100644
index 0000000..5d9548f
Binary files /dev/null and b/images/bd4fbbd9aa4da913eb2d5eac3920107e_preview_featured.jpg differ
diff --git a/images/dfdf5ceb28a5a7c63daad8bfc72fc554_preview_featured.jpg b/images/dfdf5ceb28a5a7c63daad8bfc72fc554_preview_featured.jpg
new file mode 100644
index 0000000..ebfd0c5
Binary files /dev/null and b/images/dfdf5ceb28a5a7c63daad8bfc72fc554_preview_featured.jpg differ