77 lines
2.9 KiB
OpenSCAD
77 lines
2.9 KiB
OpenSCAD
|
/*
|
||
|
* Logo of Sogeti, Department Cybersecurity
|
||
|
* (c) may apply
|
||
|
*/
|
||
|
|
||
|
// ---START SETTINGS---
|
||
|
CIRCLE_RESOLUTION=36; // The resolution of the circles; strongly influents render time!
|
||
|
THICKNESS=1; // the Z axis measurements, or "thickness"
|
||
|
POINT_POSITION=3.5; // Positioning of the dots
|
||
|
POINT_SIZE=1.5; // diameter of the dots
|
||
|
LINE_WIDTH=0.5; // Width of the dot-connecting lines
|
||
|
DRAW_SUPPORT=true; // Wether or not to draw the support for the inner part; should be enabled for 3D printing
|
||
|
SUPPORT_WIDTH=0.25;
|
||
|
// ---END SETTINGS---
|
||
|
|
||
|
LOW_POINT=-sqrt(pow(POINT_POSITION, 2) - pow(POINT_POSITION/2, 2));
|
||
|
|
||
|
translate([0, -LOW_POINT/3, 0])
|
||
|
union() {
|
||
|
difference() {
|
||
|
// Base background
|
||
|
intersection() {
|
||
|
translate([-POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=10, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=10, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([0, LOW_POINT, 0])
|
||
|
cylinder(h=THICKNESS, d=10, $fn=CIRCLE_RESOLUTION);
|
||
|
}
|
||
|
|
||
|
// dots
|
||
|
translate([-POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([0, LOW_POINT, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
|
||
|
// connecting lines
|
||
|
rotate([0, 0, 0])
|
||
|
translate([-POINT_POSITION/2, -LINE_WIDTH/2, 0])
|
||
|
cube([POINT_POSITION, LINE_WIDTH, THICKNESS]);
|
||
|
|
||
|
translate([POINT_POSITION/4, LOW_POINT/2, 0])
|
||
|
rotate([0, 0, 60])
|
||
|
translate([-POINT_POSITION/2, -LINE_WIDTH/2, 0])
|
||
|
cube([POINT_POSITION, LINE_WIDTH, THICKNESS]);
|
||
|
|
||
|
translate([-POINT_POSITION/4, LOW_POINT/2, 0])
|
||
|
rotate([0, 0, 120])
|
||
|
translate([-POINT_POSITION/2, -LINE_WIDTH/2, 0])
|
||
|
cube([POINT_POSITION, LINE_WIDTH, THICKNESS]);
|
||
|
}
|
||
|
|
||
|
// supports to avoid a floating inner part
|
||
|
if(DRAW_SUPPORT) {
|
||
|
difference() {
|
||
|
// Support cylinders
|
||
|
union() {
|
||
|
translate([-POINT_POSITION/2, 0, THICKNESS/8])
|
||
|
cylinder(h=THICKNESS*3/4, d=POINT_SIZE+SUPPORT_WIDTH, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([POINT_POSITION/2, 0, THICKNESS/8])
|
||
|
cylinder(h=THICKNESS*3/4, d=POINT_SIZE+SUPPORT_WIDTH, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([0, LOW_POINT, THICKNESS/8])
|
||
|
cylinder(h=THICKNESS*3/4, d=POINT_SIZE+SUPPORT_WIDTH, $fn=CIRCLE_RESOLUTION);
|
||
|
}
|
||
|
|
||
|
// dots
|
||
|
translate([-POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([POINT_POSITION/2, 0, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
translate([0, LOW_POINT, 0])
|
||
|
cylinder(h=THICKNESS, d=POINT_SIZE, $fn=CIRCLE_RESOLUTION);
|
||
|
}
|
||
|
}
|
||
|
}
|