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
|
||||
|
||||
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 scad::*;
|
||||
use constants::*;
|
||||
|
@ -5,9 +7,11 @@ use selig::Airfoil;
|
|||
mod constants;
|
||||
mod selig;
|
||||
|
||||
static PARTS: Mutex<Vec<ScadObject>> = Mutex::new(Vec::new());
|
||||
|
||||
fn main() {
|
||||
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);
|
||||
|
||||
|
@ -35,7 +39,6 @@ fn main() {
|
|||
let mut transform = scad!(Translate(vec3(0.0, spacing ,0.0)));
|
||||
|
||||
let strut = strut(&e393, CHORD * falloff, CARDBOARD_WIDTH);
|
||||
parts.push(strut.clone());
|
||||
transform.add_child(strut);
|
||||
wing.add_child(transform);
|
||||
}
|
||||
|
@ -48,12 +51,11 @@ fn main() {
|
|||
|
||||
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();
|
||||
file.set_detail(50);
|
||||
file.add_object(part);
|
||||
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 scaled = scad!(Scale(unit * chord); shape);
|
||||
register_part(scaled.clone());
|
||||
let strut = scad!(LinearExtrude(extrude); scaled);
|
||||
let rotated = scad!(Rotate(90.0, vec3(1.0, 0.0, 0.0)); strut);
|
||||
rotated
|
||||
|
@ -88,3 +91,7 @@ fn spar(length: f32) -> ScadObject {
|
|||
|
||||
spar
|
||||
}
|
||||
|
||||
fn register_part(part: ScadObject) {
|
||||
PARTS.lock().unwrap().push(part);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue