project wing spar
This is known bad, I couldn't get hulls betweens segments to work properly. There are likely negative tolerances along the struts
This commit is contained in:
parent
cd3580477a
commit
2f00aaec57
1 changed files with 17 additions and 12 deletions
29
src/main.rs
29
src/main.rs
|
@ -38,8 +38,8 @@ fn main() {
|
||||||
for port in [true,false] {
|
for port in [true,false] {
|
||||||
let mut wing = wing(&wing_airfoil, STRUTS/2, WINGSPAN/2.0, CHORD, CHORD * WING_TAPER, SparType::Top);
|
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);
|
let top_spar = topwing_spar(&wing_airfoil, STRUTS/2, WINGSPAN/2.0, CHORD, CHORD * WING_TAPER);
|
||||||
|
register_part(scad!(Projection(false); top_spar));
|
||||||
wing = scad!(Translate(vec3(0.0, FUSELAGE_GAP,0.0)); wing);
|
wing = scad!(Translate(vec3(0.0, FUSELAGE_GAP,0.0)); wing);
|
||||||
wing.add_child(top_spar);
|
|
||||||
if port {
|
if port {
|
||||||
wing = scad!(Mirror(vec3(0.0, 1.0, 0.0)); wing);
|
wing = scad!(Mirror(vec3(0.0, 1.0, 0.0)); wing);
|
||||||
}
|
}
|
||||||
|
@ -119,10 +119,10 @@ fn strut(airfoil: &Airfoil, chord: f32, width: f32, spar: &SparType) -> ScadObje
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
extrude_strut(shape, strut_hole, width, chord)
|
extrude_strut(shape, strut_hole, width, chord, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extrude_strut(shape: ScadObject, strut_hole: ScadObject, width: f32, chord: f32) -> ScadObject {
|
fn extrude_strut(shape: ScadObject, strut_hole: ScadObject, width: f32, chord: f32, register:bool) -> ScadObject {
|
||||||
let mut strut_shape = scad!(Difference);
|
let mut strut_shape = scad!(Difference);
|
||||||
strut_shape.add_child(shape);
|
strut_shape.add_child(shape);
|
||||||
strut_shape.add_child(strut_hole);
|
strut_shape.add_child(strut_hole);
|
||||||
|
@ -137,7 +137,9 @@ fn extrude_strut(shape: ScadObject, strut_hole: ScadObject, width: f32, chord: f
|
||||||
|
|
||||||
let unit: Vector3<f32> = Vector3::new(1.0, 1.0, 1.0);
|
let unit: Vector3<f32> = Vector3::new(1.0, 1.0, 1.0);
|
||||||
let scaled = scad!(Scale(unit * chord); shape);
|
let scaled = scad!(Scale(unit * chord); shape);
|
||||||
register_part(scaled.clone());
|
if register {
|
||||||
|
register_part(scaled.clone());
|
||||||
|
}
|
||||||
let strut = scad!(LinearExtrude(extrude); scaled);
|
let strut = scad!(LinearExtrude(extrude); scaled);
|
||||||
let rotated = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)); strut);
|
let rotated = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)); strut);
|
||||||
rotated
|
rotated
|
||||||
|
@ -218,7 +220,7 @@ fn wing(aerofoil: &Airfoil, struts: usize, length: f32, chord: f32, taper: f32,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn topwing_spar(aerofoil: &Airfoil, struts: usize, length: f32, chord: f32, taper: f32) -> ScadObject {
|
fn topwing_spar(aerofoil: &Airfoil, struts: usize, length: f32, chord: f32, taper: f32) -> ScadObject {
|
||||||
let mut wing = scad!(Translate(vec3(0.0,0.0,0.0)));
|
let mut wing = scad!(Hull);
|
||||||
|
|
||||||
let mut last_segment : Option<ScadObject> = None;
|
let mut last_segment : Option<ScadObject> = None;
|
||||||
let mut pre_vis = scad!(Union);
|
let mut pre_vis = scad!(Union);
|
||||||
|
@ -233,7 +235,7 @@ fn topwing_spar(aerofoil: &Airfoil, struts: usize, length: f32, chord: f32, tape
|
||||||
let spacing = strut_idx as f32 * gap;
|
let spacing = strut_idx as f32 * gap;
|
||||||
|
|
||||||
let shape = topspar_negative(&aerofoil, chord, 0.1..0.6);
|
let shape = topspar_negative(&aerofoil, chord, 0.1..0.6);
|
||||||
let extruded = extrude_strut(shape.clone(), scad!(Union), CARDBOARD_WIDTH, chord);
|
let extruded = extrude_strut(shape.clone(), scad!(Union), CARDBOARD_WIDTH, chord, false);
|
||||||
|
|
||||||
let mut transform = scad!(Translate(vec3(0.0, spacing ,0.0)));
|
let mut transform = scad!(Translate(vec3(0.0, spacing ,0.0)));
|
||||||
transform.add_child(extruded);
|
transform.add_child(extruded);
|
||||||
|
@ -242,13 +244,16 @@ fn topwing_spar(aerofoil: &Airfoil, struts: usize, length: f32, chord: f32, tape
|
||||||
// in betweens
|
// in betweens
|
||||||
if let Some(last) = last_segment {
|
if let Some(last) = last_segment {
|
||||||
let mut hull = scad!(Hull);
|
let mut hull = scad!(Hull);
|
||||||
hull.add_child(last);
|
let extrude = LinExtrudeParams {
|
||||||
hull.add_child(shape.clone());
|
height: 0.01,
|
||||||
|
center: true,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
let unit: Vector3<f32> = Vector3::new(1.0, 1.0, 1.0);
|
let mut last_t = scad!(Translate(vec3(0.0, -gap ,0.0)));
|
||||||
hull = scad!(Scale(unit * chord); hull);
|
last_t.add_child(scad!(LinearExtrude(extrude.clone()); last));
|
||||||
|
hull.add_child(last_t);
|
||||||
hull = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)); hull);
|
hull.add_child(scad!(LinearExtrude(extrude); shape.clone()));
|
||||||
|
|
||||||
transform.add_child(hull);
|
transform.add_child(hull);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue