mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-08-07 07:56:30 +02:00
Merge branch 'master' of https://github.com/dirkjankrijnders/NopSCADlib into dirkjankrijnders-master
This commit is contained in:
2
lib.scad
2
lib.scad
@@ -49,6 +49,7 @@ include <vitamins/magnets.scad>
|
||||
include <vitamins/mains_sockets.scad>
|
||||
include <vitamins/modules.scad>
|
||||
include <vitamins/panel_meters.scad>
|
||||
include <vitamins/photo_interrupters.scad>
|
||||
include <vitamins/pillars.scad>
|
||||
include <vitamins/pillow_blocks.scad>
|
||||
include <vitamins/pin_headers.scad>
|
||||
@@ -100,3 +101,4 @@ use <utils/round.scad>
|
||||
use <utils/offset.scad>
|
||||
use <utils/sector.scad>
|
||||
use <utils/thread.scad>
|
||||
use <vitamins/photo_interrupter.scad>
|
28
tests/photo_interrupters.scad
Normal file
28
tests/photo_interrupters.scad
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// NopSCADlib Copyright Chris Palmer 2018
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// This file is part of NopSCADlib.
|
||||
//
|
||||
// NopSCADlib is free software: you can redistribute it and/or modify it under the terms of the
|
||||
// GNU General Public License as published by the Free Software Foundation, either version 3 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// NopSCADlib is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along with NopSCADlib.
|
||||
// If not, see <https://www.gnu.org/licenses/>.
|
||||
//
|
||||
include <../utils/core/core.scad>
|
||||
include <../vitamins/photo_interrupters.scad>
|
||||
|
||||
use <../utils/layout.scad>
|
||||
|
||||
module photo_interrupters()
|
||||
layout([for(l = photo_interrupters) pi_base_length(l)], 5)
|
||||
photo_interrupter(photo_interrupters[$i]);
|
||||
|
||||
photo_interrupters();
|
84
vitamins/photo_interrupter.scad
Normal file
84
vitamins/photo_interrupter.scad
Normal file
@@ -0,0 +1,84 @@
|
||||
include <../utils/core/core.scad>
|
||||
|
||||
function pi_name(type) = type[0];
|
||||
function pi_base_height(type) = type[3];
|
||||
function pi_base_length(type) = type[2];
|
||||
function pi_base_width(type) = type[1];
|
||||
function pi_gap_height(type) = type[4];
|
||||
function pi_gap_width(type) = type[6];
|
||||
function pi_stem_width(type) = type[5];
|
||||
function pi_hole_diameter(type) = type[7];
|
||||
function pi_color(type) = type[8];
|
||||
function pi_pcb(type) = type[9];
|
||||
|
||||
module pi_hole_locations(type) {
|
||||
translate([0, -(pi_base_length(type) - pi_base_width(type)) / 2, 0])
|
||||
children();
|
||||
translate([0, (pi_base_length(type) - pi_base_width(type)) / 2, 0])
|
||||
children();
|
||||
}
|
||||
|
||||
module pi_pcb_hole_locations(pcb) {
|
||||
for (xy = pcb[7]) {
|
||||
translate([xy[0], xy[1], 0])
|
||||
children();
|
||||
}
|
||||
}
|
||||
|
||||
module pi_pcb(type) {
|
||||
pcb = pi_pcb(type);
|
||||
color(pcb[6]) {
|
||||
difference() {
|
||||
union() {
|
||||
translate([0, 0, -pcb[2]]){
|
||||
if (pcb[4]) {
|
||||
hull() {
|
||||
pi_hole_locations(type)
|
||||
cylinder(h=pcb[2], d=pi_base_width(type));
|
||||
}
|
||||
}
|
||||
}
|
||||
translate([pcb[4], 0, -pcb[2]/2]) {
|
||||
cube([pcb[0], pcb[1], pcb[2]], center = true);
|
||||
}
|
||||
}
|
||||
translate([0, 0, -pcb[2]]) {
|
||||
pi_pcb_hole_locations(pcb)
|
||||
cylinder(h=pcb[2]+0.1, d = pcb[8]);
|
||||
pi_hole_locations(type)
|
||||
cylinder(h=pcb[2]+0.1, d=pi_hole_diameter(type));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module photo_interrupter(type) {
|
||||
vitamin(pi_name(type));
|
||||
color(pi_color(type))
|
||||
difference() {
|
||||
union() {
|
||||
hull() {
|
||||
pi_hole_locations(type)
|
||||
cylinder(h = pi_base_height(type), d = pi_base_width(type));
|
||||
}
|
||||
translate([-pi_base_width(type)/2, -(pi_gap_width(type)/2 + pi_stem_width(type)), 0])
|
||||
cube([pi_base_width(type), pi_stem_width(type), pi_gap_height(type) + pi_base_height(type)]);
|
||||
translate([-pi_base_width(type)/2, pi_gap_width(type)/2, 0])
|
||||
cube([pi_base_width(type), pi_stem_width(type), pi_gap_height(type) + pi_base_height(type)]);
|
||||
}
|
||||
pi_hole_locations(type)
|
||||
cylinder(h = pi_base_height(type), d = pi_hole_diameter(type));
|
||||
}
|
||||
pi_pcb(type);
|
||||
}
|
||||
|
||||
module pi_cutout(type) {
|
||||
hull() {
|
||||
pi_hole_locations(type)
|
||||
cylinder(h = pi_base_height(type), d = pi_base_width(type));
|
||||
}
|
||||
translate([-pi_base_width(type)/2, -(pi_gap_width(type)/2 + pi_stem_width(type)), 0])
|
||||
cube([pi_base_width(type), pi_stem_width(type), pi_gap_height(type) + pi_base_height(type)]);
|
||||
translate([-pi_base_width(type)/2, pi_gap_width(type)/2, 0])
|
||||
cube([pi_base_width(type), pi_stem_width(type), pi_gap_height(type) + pi_base_height(type)]);
|
||||
};
|
5
vitamins/photo_interrupters.scad
Normal file
5
vitamins/photo_interrupters.scad
Normal file
@@ -0,0 +1,5 @@
|
||||
PH1 = ["PH1: Photo interrupter", 6.4, 25.9 , 3.5, 8.6, 4.1, 5.9, 3, "black", [22, 20, 1.6, true, 11-3.2, 0, "blue",[[8.3, -7.5], [8.3, 7.5]], 3]];
|
||||
|
||||
photo_interrupters = [PH1];
|
||||
|
||||
use <photo_interrupter.scad>
|
Reference in New Issue
Block a user