dxfscan 0.1.0

Binary DXF parser with typed entity data and lookup indices
Documentation
// SPDX-License-Identifier: ISC
use crate::point::Point3;
use crate::value::GroupValue;

/// An ARC entity.
#[derive(Debug, Clone, Copy, Default)]
pub struct Arc {
    /// Center point.
    pub center: Point3,
    /// Radius.
    pub radius: f64,
    /// Start angle in degrees.
    pub start_angle: f64,
    /// End angle in degrees.
    pub end_angle: f64,
    /// Extrusion thickness.
    pub thickness: f64,
}

impl Arc {
    pub(crate) fn feed(&mut self, code: u16, val: &GroupValue) {
        if let Some(v) = val.as_f64() {
            match code {
                10 => self.center.x = v,
                20 => self.center.y = v,
                30 => self.center.z = v,
                40 => self.radius = v,
                50 => self.start_angle = v,
                51 => self.end_angle = v,
                39 => self.thickness = v,
                _ => {}
            }
        }
    }
}