1
Fork 0

added svg part registry

This commit is contained in:
Andy Killorin 2023-10-31 13:14:25 -05:00
parent 9fe73efc0c
commit 69ad02260c
No known key found for this signature in database
GPG key ID: 8CB11B45B690DC2A
2 changed files with 31 additions and 5 deletions

View file

@ -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

View file

@ -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);
}