diff --git a/src/constants.rs b/src/constants.rs index 72ed5a3..0331d20 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -11,7 +11,7 @@ pub const STRUTS: usize = 12; pub const CARDBOARD_WIDTH: f32 = 2.4; /// length of each side of the triangular spar pub const SPAR_SIDE_WIDTH: f32 = 0.75 * IN2MM; -pub const FUSELAGE_GAP: f32 = 2.0 * IN2MM; +pub const FUSELAGE_GAP: f32 = 0.4 * IN2MM; /// a very large number, used to place unknown objects such that they do not intersect pub const INF: f32 = 1000.0; pub const RUDDER_HEIGHT: f32 = 5.0 *IN2MM; diff --git a/src/main.rs b/src/main.rs index 0566fe6..7d83d80 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,6 +35,7 @@ fn main() { let mut wing_transform = scad!(Translate(vec3(0.0,0.0,0.0))); // struts + let mut symetric_spar = scad!(Union); for port in [true,false] { let mut wing = wing(&wing_airfoil, STRUTS/2, WINGSPAN/2.0, CHORD, CHORD * WING_TAPER, SparType::Top); let top_spar = topwing_spar(&wing_airfoil, STRUTS/2, WINGSPAN/2.0, CHORD, CHORD * WING_TAPER); @@ -44,7 +45,8 @@ fn main() { wing.add_child(scad!(NamedColor("red".to_string()); top_spar_neg.clone())); - register_part(scad!(Projection(false); top_spar_neg)); + symetric_spar.add_child(top_spar_neg); + wing = scad!(Translate(vec3(0.0, FUSELAGE_GAP,0.0)); wing); if port { wing = scad!(Mirror(vec3(0.0, 1.0, 0.0)); wing); @@ -52,6 +54,12 @@ fn main() { wing_transform.add_child(wing); } + // fuselage affixment point + symetric_spar.add_child(centered_cube(vec3(CHORD, FUSELAGE_GAP*2.0, 1.0), (false,true,false))); + wing_transform.add_child(symetric_spar.clone()); + register_part(scad!(Projection(false); symetric_spar)); + + // spars @@ -69,17 +77,23 @@ fn main() { // elevator let mut elevator = scad!(Translate(vec3(LENGTH-ELEVATOR_CHORD, 0.0,0.0))); + let mut symetric_spar = scad!(Union); for port in [true,false] { let mut wing = wing(&wing_airfoil, ELEVATOR_STRUTS, ELEVATOR_HEIGHT, ELEVATOR_CHORD, ELEVATOR_CHORD * ELEVATOR_TAPER, SparType::Top); + let top_spar = topwing_spar(&wing_airfoil, ELEVATOR_STRUTS, ELEVATOR_HEIGHT, ELEVATOR_CHORD, ELEVATOR_CHORD * ELEVATOR_TAPER); + let mut top_spar_neg = scad!(Difference; top_spar); + top_spar_neg.add_child(wing.clone()); + symetric_spar.add_child(top_spar_neg.clone()); wing = scad!(Translate(vec3(0.0, FUSELAGE_GAP,0.0)); wing); if port { wing = scad!(Mirror(vec3(0.0, 1.0, 0.0)); wing); } elevator.add_child(wing); } - elevator.add_child(spar(ELEVATOR_HEIGHT*2.0+FUSELAGE_GAP*2.0, true)); scad_file.add_object(elevator); + symetric_spar.add_child(centered_cube(vec3(CHORD, FUSELAGE_GAP*2.0, 1.0), (false,true,false))); + register_part(scad!(Projection(false); symetric_spar)); let cardboard = vec3(0.38, 0.26, 0.26);