|
|
@@ -0,0 +1,96 @@
|
|
|
+include <../config/vesa.scad>
|
|
|
+
|
|
|
+module vesa_hinge_mounting_shape() {
|
|
|
+ radius = vesa_hinge_screw / 2;
|
|
|
+
|
|
|
+ move_x = vesa_hinge_height / 2 - vesa_hinge_screw;
|
|
|
+ move_y = vesa_hinge_height / 2 + vesa_hinge_thickness + vesa_hinge_screw;
|
|
|
+
|
|
|
+ translate([move_x, 0]) {
|
|
|
+ circle(r = radius);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([-move_x, 0]) {
|
|
|
+ circle(r = radius);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([0, move_y]) {
|
|
|
+ circle(r = radius);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([0, -move_y]) {
|
|
|
+ circle(r = radius);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+module vesa_hinge_object() {
|
|
|
+ module bottom_base_object() {
|
|
|
+ move_x = vesa_hinge_height / 2 - vesa_hinge_screw;
|
|
|
+ move_y = vesa_hinge_height / 2 + vesa_hinge_thickness + vesa_hinge_screw;
|
|
|
+
|
|
|
+ linear_extrude(height = vesa_hinge_thickness) {
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ translate([move_x, move_y]) {
|
|
|
+ circle(r = vesa_hinge_screw);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([-move_x, move_y]) {
|
|
|
+ circle(r = vesa_hinge_screw);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([-move_x, -move_y]) {
|
|
|
+ circle(r = vesa_hinge_screw);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([move_x, -move_y]) {
|
|
|
+ circle(r = vesa_hinge_screw);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ vesa_hinge_mounting_shape();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ module hanging_object() {
|
|
|
+ rotate([90, 0, 0]) {
|
|
|
+ linear_extrude(height = vesa_hinge_thickness, center = true) {
|
|
|
+ radius = vesa_hinge_depth / 2;
|
|
|
+
|
|
|
+ difference() {
|
|
|
+ hull() {
|
|
|
+ translate([0, radius]) {
|
|
|
+ circle(r = radius);
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([0, radius / 2]) {
|
|
|
+ square([radius * 2, radius], center = true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([0, radius]) {
|
|
|
+ circle(r = vesa_hinge_screw / 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ move_y = vesa_hinge_depth / 2 + vesa_hinge_thickness / 2;
|
|
|
+ move_z = vesa_hinge_thickness;
|
|
|
+
|
|
|
+ translate([0, move_y, move_z]) {
|
|
|
+ hanging_object();
|
|
|
+ }
|
|
|
+
|
|
|
+ translate([0, -move_y, move_z]) {
|
|
|
+ hanging_object();
|
|
|
+ }
|
|
|
+
|
|
|
+ bottom_base_object();
|
|
|
+}
|
|
|
+
|
|
|
+module vesa_object() {
|
|
|
+ vesa_hinge_object();
|
|
|
+}
|