|
@@ -4,7 +4,7 @@ use crate::{
|
|
|
array_of::ArrayOf,
|
|
|
field_of::FieldOf,
|
|
|
pen::Pen,
|
|
|
- types::{Field, Point, PulseWidth, F64, U32},
|
|
|
+ types::{Field, Point, F64, U32},
|
|
|
FP,
|
|
|
};
|
|
|
use binrw::{binrw, BinRead, BinWrite};
|
|
@@ -13,7 +13,6 @@ use modular_bitfield::{
|
|
|
bitfield,
|
|
|
specifiers::{B1, B18},
|
|
|
};
|
|
|
-use num_enum::TryFromPrimitive;
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
|
|
use super::{line::Lines, Object, ObjectCore, Translate};
|
|
@@ -489,7 +488,7 @@ impl Translate for Hatch {
|
|
|
impl Hatch {
|
|
|
/// Estimate the power density from the hatch's line spacing and pen speed/frequency/power/pulse
|
|
|
pub fn calc_power_density(&self, pens: &Vec<Pen>) -> u64 {
|
|
|
- let pen = pens
|
|
|
+ let pen: &Pen = pens
|
|
|
.get(*self.core.pen as usize)
|
|
|
.expect("Invalid pen index");
|
|
|
let line_spacing: f64 = *self
|
|
@@ -498,13 +497,7 @@ impl Hatch {
|
|
|
.find(|h| h.enabled.into())
|
|
|
.expect("Hatch object does not have enabled settings")
|
|
|
.line_spacing;
|
|
|
- let power: f64 = *pen.power;
|
|
|
- let speed: f64 = *pen.speed;
|
|
|
- let frequency: f64 = f64::from(*pen.frequency);
|
|
|
- let pulse: f64 = PulseWidth::try_from_primitive(*pen.pulse_width)
|
|
|
- .expect("Invalid pen pulse width")
|
|
|
- .power_ratio();
|
|
|
|
|
|
- ((1.0 / line_spacing) * power * (1.0 / speed) * frequency * pulse) as u64
|
|
|
+ (1.0 / line_spacing) as u64 * pen.power_density()
|
|
|
}
|
|
|
}
|