mirror of
https://github.com/nophead/NopSCADlib.git
synced 2025-09-16 10:13:49 +02:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
8f282775a4 | ||
|
bf833b0452 | ||
|
52011fd6f7 | ||
|
9da8634769 | ||
|
147ff9b24f |
10
readme.md
10
readme.md
@@ -903,7 +903,7 @@ Parametric green terminal blocks
|
||||
| ```gt_top(type)``` | Depth at the top |
|
||||
| ```gt_tube_h(type)``` | Height of optional tubes around the screws |
|
||||
| ```gt_y_offset(type)``` | Offset of the pins from centre of the depth |
|
||||
| ```gt_y_offset2(type)``` | Offset of the pins screws from the screws |
|
||||
| ```gt_y_offset2(type)``` | Offset of the pins from the screws |
|
||||
|
||||
### Modules
|
||||
| Module | Description |
|
||||
@@ -2029,7 +2029,7 @@ PCBs and perfboard with optional components. The shape can be a rectangle with o
|
||||
| 1 | ```d_plug(DCONN15, pcb = true)``` | D-type 15 way PCB mount plug |
|
||||
| 1 | ```pcb(DuetE)``` | Duet 2 Ethernet electronics |
|
||||
| 1 | ```pcb(Duex2)``` | Duex2 expansion board |
|
||||
| 1 | ```pcb(Duex5)``` | Duex5 expasnion board |
|
||||
| 1 | ```pcb(Duex5)``` | Duex5 expansion board |
|
||||
| 1 | ```pcb(EnviroPlus)``` | Enviro+ |
|
||||
| 1 | ```pcb(ExtruderPCB)``` | Extruder connection PCB |
|
||||
| 1 | ```pcb(Keyes5p1)``` | Keyes5.1 Arduino Uno expansion board |
|
||||
@@ -5171,8 +5171,8 @@ Simple tube or ring
|
||||
---
|
||||
<a name="BOM"></a>
|
||||
## BOM
|
||||
Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing. Assembly instructions can precede the module
|
||||
definition that makes the assembly.
|
||||
Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing.
|
||||
Assembly instructions can precede the module definition that makes the assembly.
|
||||
|
||||
Assembly views shown in the instructions can be large or small and this is deduced by looking at the size of the printed parts involved and if any routed
|
||||
parts are used.
|
||||
@@ -5209,7 +5209,7 @@ The resulting flat BOM is shown but heirachical BOMs are also generated for real
|
||||
| ```pose_hflip(exploded = undef)``` | Pose an STL or assembly for rendering to png by flipping around the Y axis, ```exploded = true for``` just the exploded view or ```false``` for unexploded only. |
|
||||
| ```pose_vflip(exploded = undef)``` | Pose an STL or assembly for rendering to png by flipping around the X axis, ```exploded = true for``` just the exploded view or ```false``` for unexploded only. |
|
||||
| ```stl(name)``` | Name an stl that will appear on the BOM, there needs to a module named ```<name>_stl``` to make it |
|
||||
| ```stl_colour(colour)``` | Colour an stl where it is placed in an assembly |
|
||||
| ```stl_colour(colour = pp1_colour, alpha = 1)``` | Colour an stl where it is placed in an assembly. ```alpha``` can be used to make it appear transparent. |
|
||||
| ```vitamin(description)``` | Describe a vitamin for the BOM entry and precede it with a module call that creates it, eg. "wigit(42): Type 42 widget" |
|
||||
|
||||

|
||||
|
@@ -82,7 +82,7 @@ class BOM:
|
||||
|
||||
def add_part(self, s):
|
||||
args = []
|
||||
match = re.match(r'^(.*?\.stl)\((.*)\)$', s) #look for name.stl(...)
|
||||
match = re.match(r'^(.*?\.stl|.*?\.dxf)\((.*)\)$', s) #look for name.stl(...) or name.dxf(...)
|
||||
if match:
|
||||
s = match.group(1)
|
||||
args = [match.group(2)]
|
||||
@@ -248,7 +248,7 @@ def boms(target = None, assembly = None):
|
||||
#
|
||||
# Run openscad
|
||||
#
|
||||
openscad.run("-D","$bom=2","-D","$preview=true","-o", "openscad.echo", "-d", bom_dir + "/bom.deps", bom_maker_name)
|
||||
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=" ")
|
||||
|
||||
|
@@ -81,7 +81,8 @@ def render(target, type):
|
||||
#
|
||||
if mtime(part_file) > mtime(png_name):
|
||||
png_maker_name = "png.scad"
|
||||
colour = [0, 146/255, 0]
|
||||
pp1 = [0, 146/255, 0]
|
||||
colour = pp1
|
||||
if part in colours:
|
||||
colour = colours[part]
|
||||
if not '[' in colour:
|
||||
@@ -89,7 +90,7 @@ def render(target, type):
|
||||
with open(png_maker_name, "w") as f:
|
||||
f.write('color(%s) import("%s");\n' % (colour, part_file))
|
||||
cam = "--camera=0,0,0,70,0,315,500" if type == 'stl' else "--camera=0,0,0,0,0,0,500"
|
||||
render = "--preview" if type == 'stl' else "--render"
|
||||
render = "--preview" if type == 'stl' or colour != pp1 else "--render"
|
||||
tmp_name = 'tmp.png'
|
||||
openscad.run(colour_scheme, "--projection=p", "--imgsize=4096,4096", cam, render, "--autocenter", "--viewall", "-o", tmp_name, png_maker_name);
|
||||
do_cmd(("magick "+ tmp_name + " -trim -resize 280x280 -background %s -gravity Center -extent 280x280 -bordercolor %s -border 10 %s"
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 150 KiB |
@@ -18,8 +18,8 @@
|
||||
//
|
||||
|
||||
//
|
||||
//! Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing. Assembly instructions can precede the module
|
||||
//! definition that makes the assembly.
|
||||
//! Bill Of Materials generation via echo and the ```bom.py``` script. Also handles exploded assembly views and posing.
|
||||
//! Assembly instructions can precede the module definition that makes the assembly.
|
||||
//!
|
||||
//! Assembly views shown in the instructions can be large or small and this is deduced by looking at the size of the printed parts involved and if any routed
|
||||
//! parts are used.
|
||||
@@ -101,13 +101,13 @@ module assembly(name, big = undef) { //! Name an assembly that will appear on
|
||||
echo(str("~}", name, "_assembly"));
|
||||
}
|
||||
|
||||
module stl_colour(colour) { //! Colour an stl where it is placed in an assembly
|
||||
module stl_colour(colour = pp1_colour, alpha = 1) { //! Colour an stl where it is placed in an assembly. ```alpha``` can be used to make it appear transparent.
|
||||
$stl_colour = colour;
|
||||
color(colour)
|
||||
color(colour, alpha)
|
||||
children();
|
||||
}
|
||||
|
||||
module stl(name) { //! Name an stl that will appear on the BOM, there needs to a module named ```<name>_stl``` to make it
|
||||
module stl(name) { //! Name an stl that will appear on the BOM, there needs to a module named ```<name>_stl``` to make it
|
||||
if(bom_mode()) {
|
||||
colour = is_undef($stl_colour) ? pp1_colour : $stl_colour;
|
||||
echo(str("~", name, ".stl(colour='", colour, "')"));
|
||||
@@ -115,8 +115,12 @@ module stl(name) { //! Name an stl that will appear on the BOM, there needs to a
|
||||
}
|
||||
|
||||
module dxf(name) { //! Name a dxf that will appear on the BOM, there needs to a module named ```<name>_dxf``` to make it
|
||||
if(bom_mode())
|
||||
echo(str("~", name, ".dxf"));
|
||||
if(bom_mode()) {
|
||||
if(is_undef($dxf_colour))
|
||||
echo(str("~", name, ".dxf"));
|
||||
else
|
||||
echo(str("~", name, ".dxf(colour='", $dxf_colour, "')"));
|
||||
}
|
||||
}
|
||||
|
||||
function value_string(value) = is_string(value) ? str("\"", value, "\"") : str(value); //! Convert ```value``` to a string or quote it if it is already a string
|
||||
|
@@ -36,7 +36,7 @@ function gt_front_t(type) = type[10]; //! Thickness of frame around the fr
|
||||
function gt_box_w(type) = type[11]; //! Width inside the cable entry box
|
||||
function gt_box_h(type) = type[12]; //! Height of the cable entry box
|
||||
function gt_y_offset(type) = type[13]; //! Offset of the pins from centre of the depth
|
||||
function gt_y_offset2(type) = type[14]; //! Offset of the pins screws from the screws
|
||||
function gt_y_offset2(type) = type[14]; //! Offset of the pins from the screws
|
||||
function gt_tube_h(type) = type[15]; //! Height of optional tubes around the screws
|
||||
|
||||
module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green terminal blocks, skip can be used to remove pins.
|
||||
@@ -141,37 +141,37 @@ module green_terminal(type, ways, skip = [], colour = "lime") { //! Draw green t
|
||||
}
|
||||
if(!skip)
|
||||
color("silver") {
|
||||
slot_depth = 1;
|
||||
screw_top = height - 0.5;
|
||||
pin_l = 3.3;
|
||||
translate([y2, 0]) {
|
||||
translate_z(screw_top - 2 * slot_depth) // screw head
|
||||
cylinder(r = screw_r, h = slot_depth);
|
||||
slot_depth = 1;
|
||||
screw_top = height - 0.5;
|
||||
pin_l = 3.3;
|
||||
translate([y2, 0]) {
|
||||
translate_z(screw_top - 2 * slot_depth) // screw head
|
||||
cylinder(r = screw_r, h = slot_depth);
|
||||
|
||||
translate_z(screw_top - slot_depth) // screw head
|
||||
linear_extrude(slot_depth)
|
||||
difference() {
|
||||
circle(screw_r);
|
||||
translate_z(screw_top - slot_depth) // screw head
|
||||
linear_extrude(slot_depth)
|
||||
difference() {
|
||||
circle(screw_r);
|
||||
|
||||
square([10, screw_r / 4], center = true);
|
||||
}
|
||||
}
|
||||
translate([box_back, 0, ledge_height / 2]) {
|
||||
rotate([0, 90, 0])
|
||||
linear_extrude(box_front - box_back)
|
||||
difference() {
|
||||
square([box_h2, box_w2], center = true);
|
||||
|
||||
square([box_h2 - 0.1, box_w2 - 0.1], center = true);
|
||||
|
||||
}
|
||||
|
||||
cube([1, box_w2, box_h2], center = true); // terminal back
|
||||
}
|
||||
|
||||
translate_z(-pin_l)
|
||||
cube([0.44, 0.75, pin_l]); // pin
|
||||
square([10, screw_r / 4], center = true);
|
||||
}
|
||||
}
|
||||
translate([box_back, 0, ledge_height / 2]) {
|
||||
rotate([0, 90, 0])
|
||||
linear_extrude(box_front - box_back)
|
||||
difference() {
|
||||
square([box_h2, box_w2], center = true);
|
||||
|
||||
square([box_h2 - 0.1, box_w2 - 0.1], center = true);
|
||||
|
||||
}
|
||||
|
||||
cube([1, box_w2, box_h2], center = true); // terminal back
|
||||
}
|
||||
|
||||
translate_z(-pin_l / 2)
|
||||
cube([0.44, 0.75, pin_l], center = true); // pin
|
||||
}
|
||||
}
|
||||
for(i = [0: ways - 1])
|
||||
translate([0, i * pitch - width / 2 + pitch / 2])
|
||||
|
@@ -177,7 +177,7 @@ Duex2 = ["Duex2", "Duex2 expansion board",
|
||||
],
|
||||
[]];
|
||||
|
||||
Duex5 = ["Duex5", "Duex5 expasnion board",
|
||||
Duex5 = ["Duex5", "Duex5 expansion board",
|
||||
123, 100, 1.6, 0, 4.2, 0, "#2140BE", false, [[-4, 4], [-4, -4], [4, -4],[4, 4]],
|
||||
concat(Duex2[11], [
|
||||
[ 61.5, -81.2, 0, "chip", 10, 10, 2],
|
||||
|
@@ -83,6 +83,7 @@ module render_sheet(type, colour = false) //! Render a sheet in the correct colo
|
||||
render() children();
|
||||
|
||||
module render_2D_sheet(type, colour = false) //! Extrude a 2D sheet template and give it the correct colour
|
||||
color(colour ? colour : sheet_colour(type))
|
||||
linear_extrude(sheet_thickness(type), center = true)
|
||||
children();
|
||||
let($dxf_colour = colour ? colour : sheet_colour(type))
|
||||
color($dxf_colour)
|
||||
linear_extrude(sheet_thickness(type), center = true)
|
||||
children();
|
||||
|
Reference in New Issue
Block a user