inventor_parameters/
lib.rs1use serde;
2use std::{error::Error, io, collections::HashMap, fs, path};
3use rust_xlsxwriter::*;
4
5#[derive(Default, Debug, serde::Serialize, serde::Deserialize)]
6struct AutodeskParameters{
7 params: HashMap<String, Value>
8}
9impl AutodeskParameters{
10 fn add_param(&mut self, key: String, value: Value)-> Result<(), Box<dyn Error>>{
12 self.params.insert(key, value);
14 Ok(())
15 }
16 fn write_parameter_file(&self, parameter_file_name: &str)-> Result<(), Box<dyn Error>> {
18 let string_format = Format::new();
19 let decimal_format = Format::new().set_num_format("0.000");
20 let mut workbook = Workbook::new(parameter_file_name);
21 let worksheet = workbook.add_worksheet();
22 let mut row = 0;
23 worksheet.write_string(row, 0, "Parameter", &string_format).expect("Couldn't write.");
24 worksheet.write_string(row, 1, "Value", &string_format).expect("Couldn't write.");
25 worksheet.write_string(row, 2, "Units", &string_format).expect("Couldn't write.");
26 worksheet.write_string(row, 3, "Comments", &string_format).expect("Couldn't write.");
27
28 row = 1;
29 for param in &self.params{
30 worksheet.write_string(row, 0, ¶m.1.name, &string_format).expect("Couldn't write.");
31 worksheet.write_number(row, 1, param.1.value, &decimal_format).expect("Couldn't write.");
32 worksheet.write_string(row, 2, ¶m.1.unit, &string_format).expect("Couldn't write.");
33 worksheet.write_string(row, 3, ¶m.1.comment, &string_format).expect("Couldn't write.");
34 row+=1;
35 }
36 workbook.close().expect("Couldn't close.");
37
38 Ok(())
39 }
40 fn read_parameter_file(&self, parameter_file_name: &str)-> Result<(), Box<dyn Error>> {
42 Ok(())
43 }
44}
45#[derive(Default, Debug, serde::Serialize, serde::Deserialize)]
47struct Value{
48 name: String,
49 value: f64,
50 unit: String,
51 comment: String
52}
53
54
55#[cfg(test)]
57mod tests {
58 use super::*;
59 #[test]
60 fn test(){
61 let test_file_name = "autodesk_params_test.xlsx";
62 let mut autodesk_parameters = AutodeskParameters::default();
63 autodesk_parameters.add_param("length".to_string(), Value{name: "length".to_string(), value: 0.01, unit: "ul".to_string(), comment: "N/A".to_string()}).expect("Couldn't insert.");
64
65 if let Err(err) = autodesk_parameters.write_parameter_file(test_file_name){
66 println!("Error writing parameter file: {}", err);
67 assert!(false);
68 }
69 else{
70 println!("Succesfully wrote parameter file.");
71 assert!(true);
72 }
73 }
74}