Cleanup slicer CLI

This commit is contained in:
Connor Slade
2025-04-04 16:58:24 -04:00
parent 00d82313b7
commit 85c4eae0e1
2 changed files with 23 additions and 8 deletions

View File

@@ -9,10 +9,9 @@ It also exposes a CLI for slicing models, open the dropdown below to see it's he
```plain
mslicer command line interface
Usage: slicer [OPTIONS] <MESH|--position <POSITION>|--rotation <ROTATION>|--scale <SCALE>> <OUTPUT>
Usage: slicer [OPTIONS] <--mesh <MESH>|--position <POSITION>|--rotation <ROTATION>|--scale <SCALE>> <OUTPUT>
Arguments:
<MESH> Path to a .stl or .obj file
<OUTPUT> File to save sliced result to. Currently only .goo files can be generated
Options:
@@ -42,12 +41,14 @@ Options:
The speed to lift the platform after exposing each first layer, in mm/min [default: 65]
--first-retract-speed <FIRST_RETRACT_SPEED>
The speed to retract (move down) the platform after exposing each first layer, in mm/min [default: 150]
--mesh <MESH>
Path to a .stl or .obj file
--position <POSITION>
Location of the bottom center of model bounding box. The origin is the center of the build plate [default: "0, 0, 0"]
Location of the bottom center of model bounding box. The origin is the center of the build plate
--rotation <ROTATION>
Rotation of the model in degrees, pitch, roll, yaw [default: "0, 0, 0"]
Rotation of the model in degrees, pitch, roll, yaw
--scale <SCALE>
Scale of the model along the X, Y, and Z axes [default: "1, 1, 1"]
Scale of the model along the X, Y, and Z axes
-h, --help
Print help
```

View File

@@ -89,7 +89,7 @@ pub struct ModelArgs {
pub scale: Vec<Vector3<f32>>,
}
#[derive(Default, Debug)]
#[derive(Debug)]
pub struct CliMesh {
pub path: PathBuf,
pub position: Vector3<f32>,
@@ -128,7 +128,7 @@ impl CliMesh {
pub fn from_matches(matches: &ArgMatches) -> Vec<Self> {
let mut meshes = matches
.get_many::<PathBuf>("mesh")
.unwrap()
.expect("No meshes defined")
.zip(matches.indices_of("mesh").unwrap())
.map(|x| {
(
@@ -152,7 +152,10 @@ impl CliMesh {
};
for (instance, idx) in instances.zip(matches.indices_of(key).unwrap()) {
let mesh = meshes.iter_mut().rfind(|x| idx > x.0).unwrap();
let mesh = meshes
.iter_mut()
.rfind(|x| idx > x.0)
.expect("Mesh parameter before mesh");
*value(&mut mesh.1) = instance.to_owned();
}
}
@@ -165,6 +168,17 @@ impl CliMesh {
}
}
impl Default for CliMesh {
fn default() -> Self {
Self {
path: PathBuf::default(),
position: Vector3::zeros(),
rotation: Vector3::zeros(),
scale: Vector3::repeat(1.0),
}
}
}
pub fn vector_value_parser<T, const N: usize>(
raw: &str,
) -> Result<Matrix<T, Const<N>, U1, ArrayStorage<T, N, 1>>>