Fixed some assembly views so they work for Huxley.
Idler lever added to Huxley extruder. Extruders now virtual. views.py now allows camera to be specified using $vpt, $vpr and $vpd. make_machine.py now does the accessories as well.
Before Width: | Height: | Size: 199 KiB After Width: | Height: | Size: 203 KiB |
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 138 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 186 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 108 KiB |
@@ -5,11 +5,13 @@ from bom import boms
|
||||
from sheets import sheets
|
||||
from stls import stls
|
||||
from plates import plates
|
||||
from accessories import accessories
|
||||
|
||||
def make_machine(machine):
|
||||
boms(machine)
|
||||
sheets(machine)
|
||||
stls(machine)
|
||||
accessories(machine)
|
||||
plates(machine)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@@ -304,21 +304,19 @@ module direct_block_stl(include_support = true) {
|
||||
}
|
||||
}
|
||||
|
||||
module extruder_motor_assembly(show_connector = true, exploded = exploded) {
|
||||
module direct_motor_assembly(show_connector = true, exploded = exploded) {
|
||||
assembly("extruder_motor_assembly");
|
||||
// motor and gear
|
||||
translate([-motor_x, motor_z - width / 2, motor_y])
|
||||
rotate([90,0,180]) {
|
||||
rotate([0, 0, 180]) {
|
||||
NEMA(motor);
|
||||
|
||||
translate([0, 0, filament_z - hobbed_offset(pulley)])
|
||||
translate([0, 0, filament_z - hobbed_offset(pulley) + exploded * 20])
|
||||
rotate([0, 0, -90])
|
||||
hobbed_pulley_assembly(pulley);
|
||||
}
|
||||
if(show_connector)
|
||||
d_motor_bracket_assembly();
|
||||
}
|
||||
|
||||
end("extruder_motor_assembly");
|
||||
}
|
||||
|
||||
@@ -348,7 +346,7 @@ module direct_idler_lever_stl() {
|
||||
}
|
||||
}
|
||||
}
|
||||
*linear_extrude(height = h4) // release handle
|
||||
linear_extrude(height = h4) // release handle
|
||||
hull() {
|
||||
translate([idler_x - idler_pivot_x, idler_pivot_y - idler_y])
|
||||
circle(w / 2 - 2);
|
||||
@@ -360,9 +358,6 @@ module direct_idler_lever_stl() {
|
||||
translate([0, 0, h2])
|
||||
poly_cylinder(r = ball_bearing_diameter(idler) / 2 + 0.5, h = 10); // bearing socket
|
||||
|
||||
*translate([idler_x - idler_pivot_x - w / 2 - 1, lever_bottom_y - idler_y - 1, h3])
|
||||
cube([w + 2, 2 * (motor_y - motor_screw_offset - lever_bottom_y) + 1, 10]); // miss the bottom motor screw
|
||||
|
||||
rotate([0, 0, 90])
|
||||
nut_trap(2, nut_trap_radius(M4_nut, horizontal = false, snug = false), nut_trap_depth(M4_nut), supported = true); // nut trap for axle
|
||||
|
||||
@@ -382,15 +377,16 @@ module direct_idler_lever_stl() {
|
||||
}
|
||||
|
||||
module direct_idler_assembly() {
|
||||
translate([-idler_x, idler_z - width / 2, idler_y]) {
|
||||
translate([-idler_x, idler_z - width / 2 + exploded * 50, idler_y]) {
|
||||
rotate([90, 0, 0]) {
|
||||
translate([0, 0, idler_z - width])
|
||||
color("lime") render() direct_idler_lever_stl();
|
||||
|
||||
explode([0, 0, 20])
|
||||
ball_bearing(idler)
|
||||
screw(M4_hex_screw, 16);
|
||||
|
||||
translate([0, 0, -ball_bearing_width(idler) / 2])
|
||||
translate([0, 0, -ball_bearing_width(idler) / 2 + exploded * 10])
|
||||
rotate([180, 0, 0])
|
||||
washer(M4_washer);
|
||||
|
||||
@@ -399,7 +395,6 @@ module direct_idler_assembly() {
|
||||
nut(M4_nut, true);
|
||||
}
|
||||
}
|
||||
|
||||
translate([-spring_x, spring_z - width / 2, spring_y])
|
||||
rotate([0, 90, 0])
|
||||
washer(M4_washer)
|
||||
@@ -429,20 +424,30 @@ module direct_assembly(show_connector = true, show_drive = true) {
|
||||
screw(M4_hex_screw, 20);
|
||||
|
||||
// motor
|
||||
translate([0, 0, 50 * exploded])
|
||||
extruder_motor_assembly(show_connector, 0);
|
||||
translate([0, -40 * exploded, 0])
|
||||
translate([-motor_x, motor_z - width / 2, motor_y])
|
||||
rotate([90,0,180])
|
||||
direct_motor_assembly(show_connector, 0);
|
||||
|
||||
translate([-motor_x, -width / 2 + motor_thickness, motor_y]) {
|
||||
// motor screws
|
||||
translate([-motor_x, -width / 2 + motor_thickness, motor_y])
|
||||
rotate([-90, 0, 0])
|
||||
NEMA_screws(motor, 3, 8, M3_pan_screw);
|
||||
}
|
||||
|
||||
// idler axle
|
||||
translate([-idler_pivot_x, width / 2, idler_pivot_y])
|
||||
rotate([-90, 0, 0]) {
|
||||
explode([0, 0, 50])
|
||||
screw_and_washer(M3_cap_screw, 25);
|
||||
translate([0, 0, -(width - motor_thickness)])
|
||||
|
||||
translate([0, 0, -width + motor_thickness])
|
||||
explode([0, 0, 5])
|
||||
washer(M3_washer)
|
||||
explode([0, 0, 2])
|
||||
star_washer(M3_washer)
|
||||
explode([0, 0, 2])
|
||||
nut(M3_nut)
|
||||
explode([0, 0, 2])
|
||||
washer(M3_washer);
|
||||
}
|
||||
//
|
||||
@@ -456,10 +461,9 @@ module direct_assembly(show_connector = true, show_drive = true) {
|
||||
|
||||
translate([-bulkhead_x - bulkhead_depth, spring_z - width / 2, spring_y])
|
||||
rotate([0, 90, 0])
|
||||
explode([0, 0, -5])
|
||||
nut(M4_nut);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Hot end
|
||||
//
|
||||
@@ -487,9 +491,7 @@ module direct_assembly(show_connector = true, show_drive = true) {
|
||||
screw_and_washer(jhead_screw, jhead_screw_length, true);
|
||||
|
||||
translate([jhead_screw_pitch, 0, jhead_nut_pos - jhead_nut_slot / 2 + nut_thickness(screw_nut(jhead_screw)) / 2])
|
||||
explode([ [ 10 * cos(a), 10 * sin(a), 0],
|
||||
[ 10 * sin(a), -10 * cos(a), 0],
|
||||
[-10 * sin(a), 10 * cos(a), 0] ][i])
|
||||
explode( [ 15 * sin(-a), 15 * cos(-a), 0] * [-1,1,-1,1][i])
|
||||
rotate([180, 0, -a + 90])
|
||||
nut(screw_nut(jhead_screw));
|
||||
}
|
||||
@@ -508,6 +510,6 @@ module direct_extruder_stl() {
|
||||
|
||||
|
||||
if(1)
|
||||
direct_assembly(true);
|
||||
direct_assembly(true, true);
|
||||
else
|
||||
direct_extruder_stl();
|
||||
|
26
scad/extruder.scad
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// Mendel90
|
||||
//
|
||||
// GNU GPL v2
|
||||
// nop.head@gmail.com
|
||||
// hydraraptor.blogspot.com
|
||||
//
|
||||
// Virual extruder
|
||||
//
|
||||
include <conf/config.scad>
|
||||
use <wade.scad>
|
||||
use <direct.scad>
|
||||
|
||||
function extruder_connector_offset() = extruder == Wades ? wades_extruder_connector_offset() : direct_extruder_connector_offset();
|
||||
|
||||
module extruder_motor_assembly(show_connector = true, exploded = exploded)
|
||||
if(extruder == Wades)
|
||||
wades_motor_assembly(show_connector, exploded);
|
||||
else
|
||||
direct_motor_assembly(show_connector, exploded);
|
||||
|
||||
module extruder_assembly(show_connector = true, show_drive = true)
|
||||
if(extruder == Wades)
|
||||
wades_assembly(show_connector, show_drive);
|
||||
else
|
||||
direct_assembly(show_connector, show_drive);
|
@@ -19,7 +19,7 @@ use <z-coupling.scad>
|
||||
use <z-motor-bracket.scad>
|
||||
use <z-limit-switch-bracket.scad>
|
||||
use <fan-guard.scad>
|
||||
use <wade.scad>
|
||||
use <extruder.scad>
|
||||
use <cable_clip.scad>
|
||||
use <pcb_spacer.scad>
|
||||
use <ATX_PSU_brackets.scad>
|
||||
|
@@ -9,7 +9,6 @@
|
||||
//
|
||||
include <conf/config.scad>
|
||||
include <positions.scad>
|
||||
use <wade.scad>
|
||||
|
||||
small_bearing = false;
|
||||
|
||||
|
@@ -17,6 +17,7 @@ spring = false; // use two nuts or one nut and a spring
|
||||
|
||||
screw_depth = 5;
|
||||
|
||||
motor = extruder_motor(extruder);
|
||||
motor_y = 28;
|
||||
driven_y = 31.5;
|
||||
motor_min = 26 + 5;
|
||||
@@ -171,10 +172,10 @@ module wades_block_stl() {
|
||||
// holes for motor
|
||||
//
|
||||
translate([motor_x, motor_y, -1]) {
|
||||
slot(r = NEMA_big_hole(NEMA17), l = motor_leeway, h = 10, center = false); // motor hub slot
|
||||
slot(r = NEMA_big_hole(motor), l = motor_leeway, h = 10, center = false); // motor hub slot
|
||||
|
||||
for(x = NEMA_holes(NEMA17)) // motor screw slots
|
||||
for(y = NEMA_holes(NEMA17))
|
||||
for(x = NEMA_holes(motor)) // motor screw slots
|
||||
for(y = NEMA_holes(motor))
|
||||
translate([x,y,0])
|
||||
slot(r = M3_clearance_radius, l = motor_leeway, h = 10, center = false);
|
||||
}
|
||||
@@ -182,7 +183,7 @@ module wades_block_stl() {
|
||||
//
|
||||
// remove fourth motor slot
|
||||
//
|
||||
translate([motor_x - 40 + motor_leeway / 2, motor_y - NEMA_big_hole(NEMA17), -1])
|
||||
translate([motor_x - 40 + motor_leeway / 2, motor_y - NEMA_big_hole(motor), -1])
|
||||
cube([40, 32, 7]);
|
||||
|
||||
translate([motor_x - 40 + motor_leeway / 2 + 6, motor_y, -1])
|
||||
@@ -193,7 +194,7 @@ module wades_block_stl() {
|
||||
translate([11, 0, -1])
|
||||
fillet(4, 30);
|
||||
|
||||
translate([11, motor_y - NEMA_big_hole(NEMA17), -1])
|
||||
translate([11, motor_y - NEMA_big_hole(motor), -1])
|
||||
rotate([0, 0, -90])
|
||||
fillet(4, 30);
|
||||
|
||||
@@ -361,13 +362,11 @@ module wade_idler_assembly() {
|
||||
}
|
||||
}
|
||||
|
||||
module extruder_motor_assembly(show_connector = true, exploded = exploded) {
|
||||
module wades_motor_assembly(show_connector = true, exploded = exploded) {
|
||||
assembly("extruder_motor_assembly");
|
||||
// motor and gear
|
||||
translate([motor_x, motor_y, thickness + eta])
|
||||
rotate([0,180,0]) {
|
||||
rotate([0, 0, 180])
|
||||
NEMA(NEMA17);
|
||||
NEMA(motor);
|
||||
|
||||
translate([0,0, 2.5 + 30 * exploded])
|
||||
rotate([0, 0, 11])
|
||||
@@ -375,7 +374,7 @@ module extruder_motor_assembly(show_connector = true, exploded = exploded) {
|
||||
|
||||
if(show_connector)
|
||||
d_motor_bracket_assembly();
|
||||
}
|
||||
|
||||
end("extruder_motor_assembly");
|
||||
}
|
||||
|
||||
@@ -385,6 +384,9 @@ module wades_assembly(show_connector = true, show_drive = true) {
|
||||
|
||||
assembly("extruder_assembly");
|
||||
|
||||
translate([-filament_x, width / 2, eta])
|
||||
rotate([90,0,0]) {
|
||||
|
||||
color(wades_block_color) render()
|
||||
difference() {
|
||||
wades_block_stl();
|
||||
@@ -423,11 +425,13 @@ module wades_assembly(show_connector = true, show_drive = true) {
|
||||
|
||||
// motor
|
||||
translate([0, 0, 50 * exploded])
|
||||
extruder_motor_assembly(show_connector, 0);
|
||||
translate([motor_x, motor_y, thickness + eta])
|
||||
rotate([0,180,0])
|
||||
wades_motor_assembly(show_connector, 0);
|
||||
|
||||
translate([motor_x, motor_y, 0])
|
||||
rotate([0, 180, -90])
|
||||
NEMA_screws(NEMA17, 3, 10, M3_hex_screw);
|
||||
NEMA_screws(motor, 3, 10, M3_hex_screw);
|
||||
}
|
||||
|
||||
// hobbed bolt and gear
|
||||
@@ -511,7 +515,7 @@ module wades_assembly(show_connector = true, show_drive = true) {
|
||||
nut(screw_nut(jhead_screw));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
end("extruder_assembly");
|
||||
}
|
||||
|
||||
@@ -537,7 +541,6 @@ module wades_big_gear_x5_stl(){
|
||||
|
||||
|
||||
if(1)
|
||||
rotate([90, 0, 0])
|
||||
wades_assembly(true);
|
||||
else
|
||||
if(1)
|
||||
|
@@ -10,10 +10,7 @@
|
||||
|
||||
include <conf/config.scad>
|
||||
use <bearing-holder.scad>
|
||||
use <wade.scad>
|
||||
use <direct.scad>
|
||||
|
||||
function extruder_connector_offset() = extruder == Wades ? wades_extruder_connector_offset() : direct_extruder_connector_offset();
|
||||
use <extruder.scad>
|
||||
|
||||
hole = extruder_hole(extruder);
|
||||
width = hole[1] + 2 * bearing_holder_width(X_bearings);
|
||||
|
@@ -7,19 +7,12 @@
|
||||
//
|
||||
// X carriage, carries the extruder
|
||||
//
|
||||
|
||||
include <x-carriage.scad>
|
||||
|
||||
module x_carriage_assembly(show_extruder = true, show_fan = true) {
|
||||
if(show_extruder) {
|
||||
if(extruder == Wades)
|
||||
translate([75, extruder_width / 2, eta])
|
||||
rotate([-90,0,180])
|
||||
wades_assembly();
|
||||
|
||||
if(extruder == Direct14)
|
||||
rotate([180, 0, 180])
|
||||
direct_assembly();
|
||||
rotate([0, 180, 0])
|
||||
extruder_assembly();
|
||||
|
||||
for(end = [-1, 1])
|
||||
translate([extruder_mount_pitch / 2 * end, 0, nut_trap_thickness])
|
||||
|
@@ -12,7 +12,6 @@ include <conf/config.scad>
|
||||
use <x-carriage.scad>
|
||||
use <pulley.scad>
|
||||
use <ribbon_clamp.scad>
|
||||
use <wade.scad>
|
||||
|
||||
bwall = 2.3;
|
||||
|
||||
|
25
views.py
@@ -4,6 +4,7 @@ import os
|
||||
import sys
|
||||
import shutil
|
||||
import openscad
|
||||
import re
|
||||
from set_machine import *
|
||||
|
||||
|
||||
@@ -28,14 +29,31 @@ def views(machine):
|
||||
scad_name = scad_dir + os.sep + scad
|
||||
png_name = render_dir + os.sep + scad[:-4] + "png"
|
||||
|
||||
dx = None
|
||||
rx = None
|
||||
d = None
|
||||
for line in open(scad_name, "r").readlines():
|
||||
m = re.match(r'\$vpt *= *\[ *(.*) *, *(.*) *, *(.*) *\].*', line[:-1])
|
||||
if m:
|
||||
dx = float(m.group(1))
|
||||
dy = float(m.group(2))
|
||||
dz = float(m.group(3))
|
||||
m = re.match(r'\$vpr *= *\[ *(.*) *, *(.*) *, *(.*) *\].*', line[:-1])
|
||||
if m:
|
||||
rx = float(m.group(1))
|
||||
ry = float(m.group(2))
|
||||
rz = float(m.group(3))
|
||||
m = re.match(r'\$vpd *= * *(.*) *;.*', line[:-1])
|
||||
if m:
|
||||
d = float(m.group(1))
|
||||
words = line.split()
|
||||
if len(words) > 10 and words[0] == "//":
|
||||
if len(words) > 3 and words[0] == "//":
|
||||
cmd = words[1]
|
||||
if cmd == "view" or cmd == "assembled" or cmd == "assembly":
|
||||
w = int(words[2]) * 2
|
||||
h = int(words[3]) * 2
|
||||
|
||||
if len(words) > 10:
|
||||
dx = float(words[4])
|
||||
dy = float(words[5])
|
||||
dz = float(words[6])
|
||||
@@ -45,6 +63,11 @@ def views(machine):
|
||||
rz = float(words[9])
|
||||
|
||||
d = float(words[10])
|
||||
|
||||
if dx == None or rx == None or d == None:
|
||||
print "Missing camera data in " + scad_name
|
||||
sys.exit(1)
|
||||
|
||||
camera = "%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f" % (dx, dy, dz, rx, ry, rz, d)
|
||||
|
||||
exploded = "0"
|
||||
|
@@ -7,9 +7,18 @@
|
||||
//
|
||||
// Bed fan assembly view
|
||||
//
|
||||
// assembly 958 958 -175 101 85 62 0 214 326
|
||||
$vpt = [-99, 147, 85];
|
||||
$vpr = [63, 0, 215];
|
||||
$vpd = 115;
|
||||
//
|
||||
// assembly 958 958
|
||||
//
|
||||
include <../scad/conf/config.scad>
|
||||
include <../scad/positions.scad>
|
||||
|
||||
use <../scad/main.scad>
|
||||
|
||||
translate([-left_stay_x, -fan_y, -fan_z])
|
||||
bed_fan_assembly(show_fan = true);
|
||||
|
||||
$exploded = 1;
|
||||
|
@@ -7,8 +7,14 @@
|
||||
//
|
||||
// Wade's assembly view
|
||||
//
|
||||
// view 929 904 51.73 40.12 18.31 55.00 0.00 26.40 425
|
||||
$vpt = [-21, 23, 11];
|
||||
$vpr = [55, 0, 26];
|
||||
$vpd = 380;
|
||||
//
|
||||
use <../scad/wade.scad>
|
||||
// view 929 904
|
||||
//
|
||||
include <../scad/conf/config.scad>
|
||||
use <../scad/extruder.scad>
|
||||
|
||||
wades_assembly(show_connector = true);
|
||||
rotate(extruder == Wades ? [-90, 0, 0] : [0, 0, 180])
|
||||
extruder_assembly(show_connector = true);
|
||||
|
@@ -7,9 +7,12 @@
|
||||
//
|
||||
// Wade's assembly view
|
||||
//
|
||||
// assembly 929 904 66 39 -6 241 0 38 450
|
||||
// assembly 929 904 -9 39 -19 241 0 38 450
|
||||
//
|
||||
use <../scad/wade.scad>
|
||||
include <../scad/conf/config.scad>
|
||||
use <../scad/extruder.scad>
|
||||
|
||||
rotate(extruder == Wades ? [-90, 0, 0] : [0, 180, 0])
|
||||
extruder_assembly(show_connector = false);
|
||||
|
||||
wades_assembly(show_connector = false);
|
||||
$exploded = 1;
|
||||
|
@@ -7,9 +7,13 @@
|
||||
//
|
||||
// Wade's assembly view
|
||||
//
|
||||
// assembly 910 904 61.89 7.66 0.30 13.70 25.90 348.60 300
|
||||
$vpt = [-10, 6, 3];
|
||||
$vpr = [107, 12, 24];
|
||||
$vpd = 300;
|
||||
//
|
||||
use <../scad/wade.scad>
|
||||
// assembly 910 904
|
||||
//
|
||||
use <../scad/extruder.scad>
|
||||
include <../scad/conf/config.scad>
|
||||
|
||||
wades_assembly(show_connector = !exploded, show_drive = false);
|
||||
extruder_assembly(show_connector = !exploded, show_drive = false);
|
||||
|
@@ -7,12 +7,12 @@
|
||||
//
|
||||
// Wade's motor assembly view
|
||||
//
|
||||
// assembly 1141 965 51.27 13.11 -39.31 57.80 2.10 5.40 350
|
||||
// assembled 1141 965 51.27 13.11 -39.31 57.80 2.10 5.40 250
|
||||
// assembly 1141 965 -24 26 13 226 0 108 350
|
||||
// assembled 1141 965 -24 26 13 226 0 108 250
|
||||
//
|
||||
$exploded = 1;
|
||||
|
||||
use <../scad/wade.scad>
|
||||
use <../scad/extruder.scad>
|
||||
|
||||
rotate([0, 90, -30])
|
||||
extruder_motor_assembly();
|
||||
|
@@ -7,10 +7,18 @@
|
||||
//
|
||||
// Frame front bar detail
|
||||
//
|
||||
// assembly 958 842 171 -154 -26 65.5 0 314 290
|
||||
$vpt = [18, 13, -11];
|
||||
$vpr = [65.5, 0, 314];
|
||||
$vpd = 261;
|
||||
//
|
||||
// assembly 958 842
|
||||
//
|
||||
include <../scad/conf/config.scad>
|
||||
include <../scad/positions.scad>
|
||||
|
||||
use <../scad/main.scad>
|
||||
|
||||
translate([-right_stay_x + fixing_block_height() / 2 + sheet_thickness(frame) / 2, (base_depth / 2 - fixing_block_width() / 2 - base_clearance), 0])
|
||||
frame_assembly();
|
||||
|
||||
$exploded = 1;
|
||||
|