added v-tail
This commit is contained in:
parent
a80a6d89dd
commit
c536047a43
1 changed files with 58 additions and 24 deletions
82
src/main.rs
82
src/main.rs
|
@ -38,6 +38,39 @@ fn main() {
|
||||||
fuselage.visualization));
|
fuselage.visualization));
|
||||||
parts.append(fuselage.parts.as_mut());
|
parts.append(fuselage.parts.as_mut());
|
||||||
|
|
||||||
|
t_tail(control_airfoil, &mut parts, &mut scad_file, wing_airfoil);
|
||||||
|
//v_tail(control_airfoil, &mut parts, &mut scad_file, wing_airfoil);
|
||||||
|
|
||||||
|
// every part visualized together
|
||||||
|
scad_file.write_to_file(String::from("build/assembly.scad"));
|
||||||
|
|
||||||
|
// every part in seperate files
|
||||||
|
for (idx, part) in parts.clone().into_iter().enumerate() {
|
||||||
|
let mut file = ScadFile::new();
|
||||||
|
file.set_detail(50);
|
||||||
|
file.add_object(part);
|
||||||
|
file.write_to_file(format!("build/part{idx:0>3}.scad"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// all parts in one file
|
||||||
|
let mut allparts = ScadFile::new();
|
||||||
|
parts.push(scad!(Square(vec2(STOCK_WIDTH, STOCK_HEIGHT))));
|
||||||
|
allparts.set_detail(50);
|
||||||
|
for (idx, part) in parts.into_iter().enumerate() {
|
||||||
|
allparts.add_object(scad!(Translate2d(vec2(0.0, INF * idx as f32)); part));
|
||||||
|
}
|
||||||
|
allparts.write_to_file("build/allparts.scad".to_string());
|
||||||
|
|
||||||
|
// test airfoil
|
||||||
|
let mut test = ScadFile::new();
|
||||||
|
let test_airfoil = SeligFile::parse(include_str!("../m1-il.dat"));
|
||||||
|
let wing = wing(&test_airfoil, &RUDDER, SparType::Top);
|
||||||
|
test.add_object(scad!(NamedColor("clear-blue".to_string()); wing.0.visualization));
|
||||||
|
test.add_object(scad!(NamedColor("clear-red".to_string()); wing.1.visualization));
|
||||||
|
test.write_to_file(String::from("build/testwing.scad"));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn t_tail(control_airfoil: SeligFile, parts: &mut Vec<ScadObject>, scad_file: &mut ScadFile, wing_airfoil: SeligFile) {
|
||||||
// rudder
|
// rudder
|
||||||
let mut rudder = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)));
|
let mut rudder = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)));
|
||||||
let (mut struts,mut spar) = wing(
|
let (mut struts,mut spar) = wing(
|
||||||
|
@ -73,34 +106,35 @@ fn main() {
|
||||||
|
|
||||||
scad_file.add_object(scad!(Translate(vec3(LENGTH - ELEVATOR_CHORD, 0.0, 0.0)); elevator.visualization));
|
scad_file.add_object(scad!(Translate(vec3(LENGTH - ELEVATOR_CHORD, 0.0, 0.0)); elevator.visualization));
|
||||||
parts.append(&mut elevator.parts);
|
parts.append(&mut elevator.parts);
|
||||||
|
}
|
||||||
|
|
||||||
// every part visualized together
|
fn v_tail(control_airfoil: SeligFile, parts: &mut Vec<ScadObject>, scad_file: &mut ScadFile, wing_airfoil: SeligFile) {
|
||||||
scad_file.write_to_file(String::from("build/assembly.scad"));
|
// rudder
|
||||||
|
let mut ruddervators = scad!(Union);
|
||||||
|
let mut ruddervator = scad!(Union);//scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)));
|
||||||
|
ruddervator = scad!(Rotate(60.0, vec3(1.0, 0.0, 0.0)); ruddervator);
|
||||||
|
let (mut struts,mut spar) = wing(
|
||||||
|
&control_airfoil,
|
||||||
|
&RUDDER,
|
||||||
|
SparType::Top,
|
||||||
|
);
|
||||||
|
ruddervator.add_child(struts.visualization);
|
||||||
|
ruddervator.add_child(spar.visualization);
|
||||||
|
ruddervator = scad!(Translate(vec3(0.0, FUSELAGE_GAP, 0.0)); ruddervator);
|
||||||
|
parts.append(struts.parts.as_mut());
|
||||||
|
parts.append(spar.parts.as_mut());
|
||||||
|
ruddervators.add_child(scad!(Mirror(vec3(0.0, 1.0, 0.0)); ruddervator.clone()));
|
||||||
|
ruddervators.add_child(ruddervator);
|
||||||
|
ruddervators = scad!(Translate(vec3(LENGTH-RUDDER_CHORD, 0.0, 0.0)); ruddervators);
|
||||||
|
|
||||||
// every part in seperate files
|
#[cfg(feature = "film")] {
|
||||||
for (idx, part) in parts.clone().into_iter().enumerate() {
|
let mut wrapped = scad!(Hull; rudder.clone());
|
||||||
let mut file = ScadFile::new();
|
wrapped = scad!(Minkowski; wrapped);
|
||||||
file.set_detail(50);
|
wrapped.add_child(scad!(Sphere(Radius(1.0))));
|
||||||
file.add_object(part);
|
scad_file.add_object(scad!(NamedColor("clear-red".to_string()); wrapped));
|
||||||
file.write_to_file(format!("build/part{idx:0>3}.scad"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// all parts in one file
|
scad_file.add_object(ruddervators);
|
||||||
let mut allparts = ScadFile::new();
|
|
||||||
parts.push(scad!(Square(vec2(STOCK_WIDTH, STOCK_HEIGHT))));
|
|
||||||
allparts.set_detail(50);
|
|
||||||
for (idx, part) in parts.into_iter().enumerate() {
|
|
||||||
allparts.add_object(scad!(Translate2d(vec2(0.0, INF * idx as f32)); part));
|
|
||||||
}
|
|
||||||
allparts.write_to_file("build/allparts.scad".to_string());
|
|
||||||
|
|
||||||
// test airfoil
|
|
||||||
let mut test = ScadFile::new();
|
|
||||||
let test_airfoil = SeligFile::parse(include_str!("../m1-il.dat"));
|
|
||||||
let wing = wing(&test_airfoil, &RUDDER, SparType::Top);
|
|
||||||
test.add_object(scad!(NamedColor("clear-blue".to_string()); wing.0.visualization));
|
|
||||||
test.add_object(scad!(NamedColor("clear-red".to_string()); wing.1.visualization));
|
|
||||||
test.write_to_file(String::from("build/testwing.scad"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A physical object
|
/// A physical object
|
||||||
|
|
Loading…
Reference in a new issue