extracted strut to fn
This commit is contained in:
parent
9817648a3a
commit
fc8267e104
3 changed files with 40 additions and 9 deletions
4
Makefile
4
Makefile
|
@ -1,5 +1,5 @@
|
||||||
out.scad: e393.selig
|
out.scad: e393.selig src/*.rs
|
||||||
cargo run --release
|
cargo run
|
||||||
|
|
||||||
e393.selig:
|
e393.selig:
|
||||||
curl http://airfoiltools.com/airfoil/seligdatfile?airfoil=e393-il > e393.selig
|
curl http://airfoiltools.com/airfoil/seligdatfile?airfoil=e393-il > e393.selig
|
||||||
|
|
7
src/constants.rs
Normal file
7
src/constants.rs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
const IN2MM: f32 = 25.4;
|
||||||
|
pub const CHORD: f32 = 11.2 * IN2MM;
|
||||||
|
pub const WINGSPAN: f32 = 45.0 * IN2MM;
|
||||||
|
pub const LENGTH: f32 = 0.0;
|
||||||
|
pub const STRUTS: usize = 10;
|
||||||
|
pub const STRUT_WIDTH: f32 = 2.4;
|
||||||
|
pub const SPAR_SIDE_WIDTH: f32 = 0.75;
|
38
src/main.rs
38
src/main.rs
|
@ -1,18 +1,42 @@
|
||||||
|
use nalgebra::Vector3;
|
||||||
use scad::*;
|
use scad::*;
|
||||||
|
use constants::*;
|
||||||
|
use selig::Airfoil;
|
||||||
|
mod constants;
|
||||||
mod selig;
|
mod selig;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let e393 = selig::parse(include_str!("../e393.selig"));
|
|
||||||
let aerofoil = scad::PolygonParameters::new(e393);
|
|
||||||
|
|
||||||
let mut scad_file = ScadFile::new();
|
let mut scad_file = ScadFile::new();
|
||||||
scad_file.set_detail(50);
|
scad_file.set_detail(50);
|
||||||
|
|
||||||
let strut = scad!(Translate(vec3(2.0, 2.0, 3.0)); {
|
let e393 = selig::parse(include_str!("../e393.selig"));
|
||||||
scad!(Polygon(aerofoil))
|
|
||||||
});
|
|
||||||
|
|
||||||
scad_file.add_object(strut.clone());
|
let mut wing = scad!(Translate(vec3(0.0,0.0,0.0)));
|
||||||
|
for strut_idx in 0..STRUTS {
|
||||||
|
let mut transform = scad!(Translate(vec3(0.0, strut_idx as f32 * 30.0 ,0.0)));
|
||||||
|
|
||||||
|
transform.add_child(strut(&e393, CHORD, STRUT_WIDTH));
|
||||||
|
wing.add_child(transform);
|
||||||
|
}
|
||||||
|
|
||||||
|
scad_file.add_object(wing.clone());
|
||||||
|
|
||||||
scad_file.write_to_file(String::from("out.scad"));
|
scad_file.write_to_file(String::from("out.scad"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn strut(airfoil: &Airfoil, length: f32, width: f32) -> ScadObject {
|
||||||
|
let aerofoil = scad::PolygonParameters::new(airfoil.clone());
|
||||||
|
let shape = scad!(Polygon(aerofoil));
|
||||||
|
|
||||||
|
let extrude = LinExtrudeParams {
|
||||||
|
height: width,
|
||||||
|
slices: 5,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
|
||||||
|
let unit: Vector3<f32> = Vector3::new(1.0, 1.0, 1.0);
|
||||||
|
let scaled = scad!(Scale(unit * length); shape);
|
||||||
|
let strut = scad!(LinearExtrude(extrude); scaled);
|
||||||
|
let rotated = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)); strut);
|
||||||
|
rotated
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue