mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-23 05:31:31 +02:00
Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c9aad0178e | ||
|
df96551b11 | ||
|
a5a360e0d1 | ||
|
828e5ad36e | ||
|
cedaafed3d | ||
|
0d38d82416 | ||
|
041341b946 | ||
|
70622ba8de |
Binary file not shown.
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 173 KiB |
@@ -2050,6 +2050,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
|||||||
| Module | Description |
|
| Module | Description |
|
||||||
|:--- |:--- |
|
|:--- |:--- |
|
||||||
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
||||||
|
| ```block(size, colour, makes_cutout, cutouts)``` | Draw a coloured cube to represent a random PCB component |
|
||||||
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
||||||
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
||||||
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
||||||
@@ -2174,6 +2175,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
|||||||
| Module | Description |
|
| Module | Description |
|
||||||
|:--- |:--- |
|
|:--- |:--- |
|
||||||
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
| ```barrel_jack(cutout = false)``` | Draw barrel power jack |
|
||||||
|
| ```block(size, colour, makes_cutout, cutouts)``` | Draw a coloured cube to represent a random PCB component |
|
||||||
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
| ```buzzer(height, diameter, colour)``` | Draw PCB buzzer with specified height, diameter and colour |
|
||||||
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
| ```chip(length, width, thickness, colour, cutout = false)``` | Draw a coloured cube to represent a chip, or other rectangular component |
|
||||||
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
| ```flat_flex(cutout = false)``` | Draw flat flexistrip connector as used on RPI0 |
|
||||||
|
@@ -213,7 +213,7 @@ def parse_bom(file = "openscad.log", name = None):
|
|||||||
main.assemblies[stack[-1]].add_part(s)
|
main.assemblies[stack[-1]].add_part(s)
|
||||||
else:
|
else:
|
||||||
if 'ERROR:' in line or 'WARNING:' in line:
|
if 'ERROR:' in line or 'WARNING:' in line:
|
||||||
print(line[:-1])
|
raise Exception(line[:-1])
|
||||||
return main
|
return main
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
@@ -221,53 +221,57 @@ def usage():
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def boms(target = None, assembly = None):
|
def boms(target = None, assembly = None):
|
||||||
bom_dir = set_config(target, usage) + "bom"
|
try:
|
||||||
if assembly:
|
bom_dir = set_config(target, usage) + "bom"
|
||||||
bom_dir += "/accessories"
|
if assembly:
|
||||||
if not os.path.isdir(bom_dir):
|
bom_dir += "/accessories"
|
||||||
|
if not os.path.isdir(bom_dir):
|
||||||
|
os.makedirs(bom_dir)
|
||||||
|
else:
|
||||||
|
assembly = "main_assembly"
|
||||||
|
if os.path.isdir(bom_dir):
|
||||||
|
shutil.rmtree(bom_dir)
|
||||||
|
sleep(0.1)
|
||||||
os.makedirs(bom_dir)
|
os.makedirs(bom_dir)
|
||||||
else:
|
#
|
||||||
assembly = "main_assembly"
|
# Find the scad file that makes the module
|
||||||
if os.path.isdir(bom_dir):
|
#
|
||||||
shutil.rmtree(bom_dir)
|
scad_file = find_scad_file(assembly)
|
||||||
sleep(0.1)
|
if not scad_file:
|
||||||
os.makedirs(bom_dir)
|
raise Exception("can't find source for " + assembly)
|
||||||
#
|
#
|
||||||
# Find the scad file that makes the module
|
# make a file to use the module
|
||||||
#
|
#
|
||||||
scad_file = find_scad_file(assembly)
|
bom_maker_name = source_dir + "/bom.scad"
|
||||||
if not scad_file:
|
with open(bom_maker_name, "w") as f:
|
||||||
raise Exception("can't find source for " + assembly)
|
f.write("use <%s>\n" % scad_file)
|
||||||
#
|
f.write("%s();\n" % assembly);
|
||||||
# make a file to use the module
|
#
|
||||||
#
|
# Run openscad
|
||||||
bom_maker_name = source_dir + "/bom.scad"
|
#
|
||||||
with open(bom_maker_name, "w") as f:
|
openscad.run("-D", "$bom=2", "-D", "$preview=true", "--hardwarnings", "-o", "openscad.echo", "-d", bom_dir + "/bom.deps", bom_maker_name)
|
||||||
f.write("use <%s>\n" % scad_file)
|
os.remove(bom_maker_name)
|
||||||
f.write("%s();\n" % assembly);
|
print("Generating bom ...", end=" ")
|
||||||
#
|
|
||||||
# Run openscad
|
|
||||||
#
|
|
||||||
openscad.run("-D", "$bom=2", "-D", "$preview=true", "--hardwarnings", "-o", "openscad.echo", "-d", bom_dir + "/bom.deps", bom_maker_name)
|
|
||||||
os.remove(bom_maker_name)
|
|
||||||
print("Generating bom ...", end=" ")
|
|
||||||
|
|
||||||
main = parse_bom("openscad.echo", assembly)
|
main = parse_bom("openscad.echo", assembly)
|
||||||
|
|
||||||
if assembly == "main_assembly":
|
if assembly == "main_assembly":
|
||||||
main.print_bom(True, open(bom_dir + "/bom.txt","wt"))
|
main.print_bom(True, open(bom_dir + "/bom.txt","wt"))
|
||||||
|
|
||||||
for ass in main.assemblies:
|
for ass in main.assemblies:
|
||||||
with open(bom_dir + "/" + ass + ".txt", "wt") as f:
|
with open(bom_dir + "/" + ass + ".txt", "wt") as f:
|
||||||
bom = main.assemblies[ass]
|
bom = main.assemblies[ass]
|
||||||
print(bom.make_name(ass) + ":", file=f)
|
print(bom.make_name(ass) + ":", file=f)
|
||||||
bom.print_bom(False, f)
|
bom.print_bom(False, f)
|
||||||
|
|
||||||
data = [main.assemblies[ass].flat_data() for ass in main.ordered_assemblies]
|
data = [main.assemblies[ass].flat_data() for ass in main.ordered_assemblies]
|
||||||
with open(bom_dir + "/bom.json", 'w') as outfile:
|
with open(bom_dir + "/bom.json", 'w') as outfile:
|
||||||
json.dump(data, outfile, indent = 4)
|
json.dump(data, outfile, indent = 4)
|
||||||
|
|
||||||
print("done")
|
print("done")
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 3: usage()
|
if len(sys.argv) > 3: usage()
|
||||||
@@ -286,8 +290,4 @@ if __name__ == '__main__':
|
|||||||
if assembly:
|
if assembly:
|
||||||
if assembly[-9:] != "_assembly": usage()
|
if assembly[-9:] != "_assembly": usage()
|
||||||
|
|
||||||
try:
|
boms(target, assembly)
|
||||||
boms(target, assembly)
|
|
||||||
except Exception as e:
|
|
||||||
print(str(e))
|
|
||||||
sys.exit(1)
|
|
||||||
|
@@ -30,7 +30,7 @@ def usage():
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 2: usage()
|
if len(sys.argv) > 2: usage()
|
||||||
|
|
||||||
if len(sys.argv) > 1:
|
if len(sys.argv) > 1:
|
||||||
target = sys.argv[1]
|
target = sys.argv[1]
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 72 KiB |
Binary file not shown.
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |
@@ -29,7 +29,7 @@ flange_d = 45.5;
|
|||||||
flange_t = 1.5;
|
flange_t = 1.5;
|
||||||
flange_d2 = 32;
|
flange_d2 = 32;
|
||||||
flange_t2 = 2;
|
flange_t2 = 2;
|
||||||
apperture_d = 24.7;
|
aperture_d = 24.7;
|
||||||
hygrometer_hole_r = 21.3;
|
hygrometer_hole_r = 21.3;
|
||||||
slot_w = 5.5;
|
slot_w = 5.5;
|
||||||
|
|
||||||
@@ -55,8 +55,8 @@ module hygrometer() { //! Draw a hygrometer
|
|||||||
rotate_extrude()
|
rotate_extrude()
|
||||||
polygon([
|
polygon([
|
||||||
[0, 0],
|
[0, 0],
|
||||||
[apperture_d / 2, 0],
|
[aperture_d / 2, 0],
|
||||||
[apperture_d / 2, flange_t],
|
[aperture_d / 2, flange_t],
|
||||||
[flange_d2 / 2, flange_t2],
|
[flange_d2 / 2, flange_t2],
|
||||||
[flange_d / 2, flange_t],
|
[flange_d / 2, flange_t],
|
||||||
[flange_d / 2, 0],
|
[flange_d / 2, 0],
|
||||||
@@ -66,21 +66,21 @@ module hygrometer() { //! Draw a hygrometer
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
color("#94A7AB")
|
color("#94A7AB")
|
||||||
cylinder(d = apperture_d, h = eps);
|
cylinder(d = aperture_d, h = eps);
|
||||||
|
|
||||||
color("black")
|
color("black")
|
||||||
linear_extrude(0.2, center = true) {
|
linear_extrude(0.2, center = true) {
|
||||||
translate([0, 3])
|
translate([0, 3])
|
||||||
text("20_4", font = "7 segment", valign = "bottom", halign = "center", size = apperture_d / 6);
|
text("20_4", font = "7 segment", valign = "bottom", halign = "center", size = aperture_d / 6);
|
||||||
|
|
||||||
translate([7, 3])
|
translate([7, 3])
|
||||||
text("C", font = "7 segment", valign = "bottom", halign = "center", size = apperture_d / 8);
|
text("C", font = "7 segment", valign = "bottom", halign = "center", size = aperture_d / 8);
|
||||||
|
|
||||||
translate([-1.9, 0.5])
|
translate([-1.9, 0.5])
|
||||||
text("50", font = "7 segment", valign = "top", halign = "center", size = apperture_d / 2.7);
|
text("50", font = "7 segment", valign = "top", halign = "center", size = aperture_d / 2.7);
|
||||||
|
|
||||||
translate([0, -apperture_d / 6])
|
translate([0, -aperture_d / 6])
|
||||||
text(" %", font = "Arial", valign = "center", halign = "center", size = apperture_d / 6);
|
text(" %", font = "Arial", valign = "center", halign = "center", size = aperture_d / 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
// display size offset pcb size lug size offset hole pitch and size
|
// display size offset pcb size lug size offset hole pitch and size
|
||||||
led_meter = ["led_meter", [22.72, 10.14, 6.3], 0, [22.72, 11.04, 0.96], [30, 4.2], 0, 26, 2.2 / 2, false];
|
led_meter = ["led_meter", [22.72, 10.14, 6.3], 0, [22.72, 11.04, 0.96], [30, 4.2], 0, 26, 2.2 / 2, false];
|
||||||
led_ameter = ["led_ameter", [22.72, 14.05, 7.3], 1, [27.5, 18.54, 1.2], [35, 6.25], 1, 29, 3.0 / 2, [15.5, 1.5, 7.75]];
|
led_ameter = ["led_ameter", [22.72, 14.05, 7.3], 1, [27.5, 18.6, 1.2], [35, 6.25], 1, 29, 3.0 / 2, [15.5, 1.5, 7.75]];
|
||||||
|
|
||||||
led_meters = [led_meter, led_ameter];
|
led_meters = [led_meter, led_ameter];
|
||||||
|
|
||||||
|
@@ -867,51 +867,64 @@ module trimpot10(vertical, cutout = false) { //! Draw a ten turn trimpot
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module block(size, colour, makes_cutout, cutouts) //! Draw a coloured cube to represent a random PCB component
|
||||||
|
if(cutouts) {
|
||||||
|
if(makes_cutout)
|
||||||
|
translate([-50, 0, size.z / 2 - panel_clearance])
|
||||||
|
cube([100, size.y + 2 * panel_clearance, size.z + 2 * panel_clearance], center = true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
color(colour)
|
||||||
|
translate_z(size.z / 2)
|
||||||
|
cube(size, center = true);
|
||||||
|
|
||||||
module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb component from description
|
module pcb_component(comp, cutouts = false, angle = undef) { //! Draw pcb component from description
|
||||||
function show(comp, part) = (comp[3] == part || comp[3] == str("-",part)) && (!cutouts || angle == undef || angle == comp.z);
|
function show(comp, part) = (comp[3] == part || comp[3] == str("-",part)) && (!cutouts || angle == undef || angle == comp.z);
|
||||||
function param(n, default = 0) = len(comp) > n ? comp[n] : default;
|
function param(n, default = 0) = len(comp) > n ? comp[n] : default;
|
||||||
rotate(comp.z) {
|
rotate(comp.z) {
|
||||||
if(show(comp, "2p54header")) pin_header(2p54header, comp[4], comp[5], param(6), cutouts, colour = param(7, undef));
|
// Components that have a cutout parameter go in this section
|
||||||
if(show(comp, "2p54boxhdr")) box_header(2p54header, comp[4], comp[5], param(6), cutouts);
|
if(show(comp, "2p54header")) pin_header(2p54header, comp[4], comp[5], param(6), false, cutouts, colour = param(7, undef));
|
||||||
if(show(comp, "2p54socket")) pin_socket(2p54header, comp[4], comp[5], param(6, false), param(7), param(8, false), cutouts, param(9, undef));
|
if(show(comp, "2p54boxhdr")) box_header(2p54header, comp[4], comp[5], param(6), cutouts);
|
||||||
if(show(comp, "chip")) chip(comp[4], comp[5], comp[6], param(7, grey30), cutouts);
|
if(show(comp, "2p54socket")) pin_socket(2p54header, comp[4], comp[5], param(6, false), param(7), param(8, false), cutouts, param(9, undef));
|
||||||
if(show(comp, "rj45")) rj45(cutouts);
|
if(show(comp, "chip")) chip(comp[4], comp[5], comp[6], param(7, grey30), cutouts);
|
||||||
if(show(comp, "usb_A")) usb_Ax1(cutouts);
|
if(show(comp, "rj45")) rj45(cutouts);
|
||||||
if(show(comp, "usb_Ax2")) usb_Ax2(cutouts);
|
if(show(comp, "usb_A")) usb_Ax1(cutouts);
|
||||||
if(show(comp, "usb_uA")) usb_uA(cutouts);
|
if(show(comp, "usb_Ax2")) usb_Ax2(cutouts);
|
||||||
if(show(comp, "usb_B")) usb_B(cutouts);
|
if(show(comp, "usb_uA")) usb_uA(cutouts);
|
||||||
if(show(comp, "buzzer")) buzzer(param(4, 9), param(5, 12), param(6, grey20));
|
if(show(comp, "usb_B")) usb_B(cutouts);
|
||||||
if(show(comp, "potentiometer")) potentiometer(param(4, 5), param(5, 9));
|
if(show(comp, "jack")) jack(cutouts);
|
||||||
if(show(comp, "jack")) jack(cutouts);
|
if(show(comp, "barrel_jack")) barrel_jack(cutouts);
|
||||||
if(show(comp, "barrel_jack")) barrel_jack(cutouts);
|
if(show(comp, "hdmi")) hdmi(hdmi_full, cutouts);
|
||||||
if(show(comp, "hdmi")) hdmi(hdmi_full, cutouts);
|
if(show(comp, "mini_hdmi")) hdmi(hdmi_mini, cutouts);
|
||||||
if(show(comp, "mini_hdmi")) hdmi(hdmi_mini, cutouts);
|
if(show(comp, "flex")) flex(cutouts);
|
||||||
if(show(comp, "flex")) flex(cutouts);
|
if(show(comp, "flat_flex")) flat_flex(cutouts);
|
||||||
if(show(comp, "flat_flex")) flat_flex(cutouts);
|
if(show(comp, "uSD")) uSD(comp[4], cutouts);
|
||||||
if(show(comp, "D_plug")) if(!cutouts) translate_z(d_pcb_offset(comp[4])) d_plug(comp[4], pcb = true);
|
if(show(comp, "trimpot10")) trimpot10(param(4, false), cutouts);
|
||||||
if(show(comp, "molex_hdr")) if(!cutouts) molex_254(comp[4]);
|
|
||||||
if(show(comp, "jst_xh")) if(!cutouts) jst_xh_header(jst_xh_header, comp[4], param(5, false), param(6, "white"), param(7, undef));
|
|
||||||
if(show(comp, "term254")) if(!cutouts) green_terminal(gt_2p54,comp[4], comp[5], param(6,"lime"));
|
|
||||||
if(show(comp, "gterm")) if(!cutouts) green_terminal(comp[4], comp[5], comp[6], param(7,"lime"));
|
|
||||||
if(show(comp, "gterm35")) if(!cutouts) green_terminal(gt_3p5, comp[4], comp[5], param(6,"lime"));
|
|
||||||
if(show(comp, "gterm508")) if(!cutouts) green_terminal(gt_5p08, comp[4], comp[5], param(6,"lime"));
|
|
||||||
if(show(comp, "gterm635")) if(!cutouts) green_terminal(gt_6p35, comp[4], comp[5], param(6,"lime"));
|
|
||||||
if(show(comp, "term35")) if(!cutouts) terminal_35(comp[4], param(5,"blue"));
|
|
||||||
if(show(comp, "transition")) if(!cutouts) idc_transition(2p54header, comp[4], comp[5]);
|
|
||||||
if(show(comp, "block"))
|
|
||||||
color(comp[7]) if(!cutouts) translate_z(comp[6] / 2) cube([comp[4], comp[5], comp[6]], center = true);
|
|
||||||
else if(comp[8]) translate([-50, 0, comp[6] / 2 - panel_clearance]) cube([100, comp[5] + 2 * panel_clearance, comp[6] + 2 * panel_clearance], center = true);
|
|
||||||
if(show(comp, "button_6mm")) square_button(button_6mm);
|
|
||||||
if(show(comp, "microswitch")) translate_z(microswitch_thickness(comp[4])/2) microswitch(comp[4]);
|
|
||||||
if(show(comp, "pcb")) if(!cutouts) translate_z(comp[4]) pcb(comp[5]);
|
|
||||||
if(show(comp, "standoff")) if(!cutouts) standoff(comp[4], comp[5], comp[6], comp[7]);
|
|
||||||
if(show(comp, "uSD")) uSD(comp[4], cutouts);
|
|
||||||
if(show(comp, "trimpot10")) trimpot10(param(4, false), cutouts);
|
|
||||||
if(show(comp, "led")) led(comp[4], comp[5], 2.6);
|
|
||||||
if(show(comp, "pdip")) pdip(comp[4], comp[5], param(6, false), param(7, inch(0.3)));
|
|
||||||
if(show(comp, "ax_res")) ax_res(comp[4], comp[5], param(6, 5), param(7, 0));
|
|
||||||
if(show(comp, "molex_usb_Ax2")) molex_usb_Ax2(cutouts);
|
if(show(comp, "molex_usb_Ax2")) molex_usb_Ax2(cutouts);
|
||||||
if(show(comp, "smd_led")) smd_led(comp[4], comp[5], cutouts);
|
if(show(comp, "smd_led")) smd_led(comp[4], comp[5], cutouts);
|
||||||
|
if(show(comp, "block")) block(size = [comp[4], comp[5], comp[6]], colour = comp[7], makes_cutout = param(8));
|
||||||
|
if(!cutouts) {
|
||||||
|
// Components that don't have a cutout parameter go in this section
|
||||||
|
if(show(comp, "button_6mm")) square_button(button_6mm);
|
||||||
|
if(show(comp, "microswitch")) translate_z(microswitch_thickness(comp[4])/2) microswitch(comp[4]);
|
||||||
|
if(show(comp, "pcb")) translate_z(comp[4]) pcb(comp[5]);
|
||||||
|
if(show(comp, "standoff")) standoff(comp[4], comp[5], comp[6], comp[7]);
|
||||||
|
if(show(comp, "term254")) green_terminal(gt_2p54,comp[4], comp[5], param(6,"lime"));
|
||||||
|
if(show(comp, "gterm")) green_terminal(comp[4], comp[5], comp[6], param(7,"lime"));
|
||||||
|
if(show(comp, "gterm35")) green_terminal(gt_3p5, comp[4], comp[5], param(6,"lime"));
|
||||||
|
if(show(comp, "gterm508")) green_terminal(gt_5p08, comp[4], comp[5], param(6,"lime"));
|
||||||
|
if(show(comp, "gterm635")) green_terminal(gt_6p35, comp[4], comp[5], param(6,"lime"));
|
||||||
|
if(show(comp, "term35")) terminal_35(comp[4], param(5,"blue"));
|
||||||
|
if(show(comp, "transition")) idc_transition(2p54header, comp[4], comp[5]);
|
||||||
|
if(show(comp, "led")) led(comp[4], comp[5], 2.6);
|
||||||
|
if(show(comp, "pdip")) pdip(comp[4], comp[5], param(6, false), param(7, inch(0.3)));
|
||||||
|
if(show(comp, "ax_res")) ax_res(comp[4], comp[5], param(6, 5), param(7, 0));
|
||||||
|
if(show(comp, "D_plug")) translate_z(d_pcb_offset(comp[4])) d_plug(comp[4], pcb = true);
|
||||||
|
if(show(comp, "molex_hdr")) molex_254(comp[4]);
|
||||||
|
if(show(comp, "jst_xh")) jst_xh_header(jst_xh_header, comp[4], param(5, false), param(6, "white"), param(7, undef));
|
||||||
|
if(show(comp, "potentiometer")) potentiometer(param(4, 5), param(5, 9));
|
||||||
|
if(show(comp, "buzzer")) buzzer(param(4, 9), param(5, 12), param(6, grey20));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -361,8 +361,8 @@ WD2002SJ = ["WD2002SJ", "WD2002SJ Buck Boost DC-DC converter", 78, 47, 1.6, 0, 3
|
|||||||
[ -25.5, 3.1, 0, "trimpot10", true],
|
[ -25.5, 3.1, 0, "trimpot10", true],
|
||||||
[ 30.5, 3.1, 0, "trimpot10", true],
|
[ 30.5, 3.1, 0, "trimpot10", true],
|
||||||
[ 41.5, 3.1, 0, "trimpot10", true],
|
[ 41.5, 3.1, 0, "trimpot10", true],
|
||||||
[ -10.5, 1.5, 0, "smd_led", LED0805, "blue"],
|
[ -10.4, 1.4, 0, "smd_led", LED0805, "blue"],
|
||||||
[ 16, 1.8, 0, "smd_led", LED0805, "red"],
|
[ 15.7, 2.7, 0, "smd_led", LED0805, "red"],
|
||||||
],
|
],
|
||||||
[]];
|
[]];
|
||||||
|
|
||||||
|
@@ -52,7 +52,7 @@ module pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cu
|
|||||||
|
|
||||||
if(cutout)
|
if(cutout)
|
||||||
dogbone_rectangle([cols * pitch + 2 * panel_clearance, rows * pitch + 2 * panel_clearance, 100], center = false);
|
dogbone_rectangle([cols * pitch + 2 * panel_clearance, rows * pitch + 2 * panel_clearance, 100], center = false);
|
||||||
else
|
else {
|
||||||
vitamin(str("pin_header(", type[0], ", ", cols, ", ", rows,
|
vitamin(str("pin_header(", type[0], ", ", cols, ", ", rows,
|
||||||
arg(smt, false, "smt"), arg(right_angle, false, "right_angle"), "): Pin header ", cols, " x ", rows, right_angle ? " right_angle" : ""));
|
arg(smt, false, "smt"), arg(right_angle, false, "right_angle"), "): Pin header ", cols, " x ", rows, right_angle ? " right_angle" : ""));
|
||||||
|
|
||||||
@@ -91,6 +91,7 @@ module pin_header(type, cols = 1, rows = 1, smt = false, right_angle = false, cu
|
|||||||
square([pitch - chamfer, pitch + eps], center = true);
|
square([pitch - chamfer, pitch + eps], center = true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module box_header(type, cols = 1, rows = 1, smt = false, cutout = false) { //! Draw box header
|
module box_header(type, cols = 1, rows = 1, smt = false, cutout = false) { //! Draw box header
|
||||||
@@ -102,7 +103,7 @@ module box_header(type, cols = 1, rows = 1, smt = false, cutout = false) { //! D
|
|||||||
|
|
||||||
if(cutout)
|
if(cutout)
|
||||||
dogbone_rectangle([cols * pitch + 2 * panel_clearance, rows * pitch + 2 * panel_clearance, 100], center = false);
|
dogbone_rectangle([cols * pitch + 2 * panel_clearance, rows * pitch + 2 * panel_clearance, 100], center = false);
|
||||||
else
|
else {
|
||||||
vitamin(str("box_header(", type[0], ", ", cols, ", ", rows, arg(smt, false, "smt"), "): Box header ", cols, " x ", rows));
|
vitamin(str("box_header(", type[0], ", ", cols, ", ", rows, arg(smt, false, "smt"), "): Box header ", cols, " x ", rows));
|
||||||
|
|
||||||
translate_z(smt ? 3.5 - h : 0) {
|
translate_z(smt ? 3.5 - h : 0) {
|
||||||
@@ -125,6 +126,7 @@ module box_header(type, cols = 1, rows = 1, smt = false, cutout = false) { //! D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module idc_transition(type, cols = 5, skip = [], cutout = false) { //! Draw IDC transition header
|
module idc_transition(type, cols = 5, skip = [], cutout = false) { //! Draw IDC transition header
|
||||||
|
Reference in New Issue
Block a user