added svg part registry
This commit is contained in:
parent
9fe73efc0c
commit
69ad02260c
2 changed files with 31 additions and 5 deletions
21
Makefile
21
Makefile
|
@ -1,5 +1,24 @@
|
||||||
out.scad: e393.selig src/*.rs
|
build/%.scad: e393.selig src/*.rs
|
||||||
|
mkdir -p build
|
||||||
cargo run
|
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
|
||||||
|
|
||||||
|
build/%.png: build/%.scad
|
||||||
|
OpenSCAD --colorscheme Metallic -o $@ $<
|
||||||
|
|
||||||
|
build/%.svg: build/%.scad
|
||||||
|
OpenSCAD -o $@ $<
|
||||||
|
|
||||||
|
build/%.stl: build/%.scad
|
||||||
|
OpenSCAD -o $@ $<
|
||||||
|
|
||||||
|
.PHONY: svgs clean
|
||||||
|
svgs: build/%.scad
|
||||||
|
ls build/part*.scad | sed 's/scad/svg/' | xargs make
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf build
|
||||||
|
rm *.selig
|
||||||
|
|
||||||
|
|
15
src/main.rs
15
src/main.rs
|
@ -1,3 +1,5 @@
|
||||||
|
use std::sync::Mutex;
|
||||||
|
|
||||||
use nalgebra::Vector3;
|
use nalgebra::Vector3;
|
||||||
use scad::*;
|
use scad::*;
|
||||||
use constants::*;
|
use constants::*;
|
||||||
|
@ -5,9 +7,11 @@ use selig::Airfoil;
|
||||||
mod constants;
|
mod constants;
|
||||||
mod selig;
|
mod selig;
|
||||||
|
|
||||||
|
static PARTS: Mutex<Vec<ScadObject>> = Mutex::new(Vec::new());
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut scad_file = ScadFile::new();
|
let mut scad_file = ScadFile::new();
|
||||||
let mut parts: Vec<ScadObject> = Vec::new();
|
//let mut parts: Vec<ScadObject> = Vec::new();
|
||||||
|
|
||||||
scad_file.set_detail(50);
|
scad_file.set_detail(50);
|
||||||
|
|
||||||
|
@ -35,7 +39,6 @@ fn main() {
|
||||||
let mut transform = scad!(Translate(vec3(0.0, spacing ,0.0)));
|
let mut transform = scad!(Translate(vec3(0.0, spacing ,0.0)));
|
||||||
|
|
||||||
let strut = strut(&e393, CHORD * falloff, CARDBOARD_WIDTH);
|
let strut = strut(&e393, CHORD * falloff, CARDBOARD_WIDTH);
|
||||||
parts.push(strut.clone());
|
|
||||||
transform.add_child(strut);
|
transform.add_child(strut);
|
||||||
wing.add_child(transform);
|
wing.add_child(transform);
|
||||||
}
|
}
|
||||||
|
@ -48,12 +51,11 @@ fn main() {
|
||||||
|
|
||||||
scad_file.write_to_file(String::from("build/assembly.scad"));
|
scad_file.write_to_file(String::from("build/assembly.scad"));
|
||||||
|
|
||||||
for (idx, part) in parts.into_iter().enumerate() {
|
for (idx, part) in PARTS.lock().unwrap().to_owned().into_iter().enumerate() {
|
||||||
let mut file = ScadFile::new();
|
let mut file = ScadFile::new();
|
||||||
file.set_detail(50);
|
file.set_detail(50);
|
||||||
file.add_object(part);
|
file.add_object(part);
|
||||||
file.write_to_file(format!("build/part{idx}.scad"));
|
file.write_to_file(format!("build/part{idx}.scad"));
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,6 +72,7 @@ fn strut(airfoil: &Airfoil, chord: f32, width: f32) -> ScadObject {
|
||||||
|
|
||||||
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());
|
||||||
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
|
||||||
|
@ -88,3 +91,7 @@ fn spar(length: f32) -> ScadObject {
|
||||||
|
|
||||||
spar
|
spar
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn register_part(part: ScadObject) {
|
||||||
|
PARTS.lock().unwrap().push(part);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue