Add three-axis milling with independent CAM and Fusion validation (#1682)

Thanks @CypherNaught-0x.
This commit is contained in:
CypherNaugh_0x authored and GitHub committed 2026-10-16 08:26:28 -04:00
1 parent dd5278a402
commit 737c9358d0
85 files changed
+14487 -43

No files matched your search

+10
View File
@@ -2225,12 +2225,21 @@ pub struct DesignLink {
pub feature: u64,
}
fn read_manufacturing<'de, D: serde::Deserializer<'de>>(d: D) -> std::result::Result<solidcraft_cam::Manufacturing, D::Error> {
let manufacturing = <solidcraft_cam::Manufacturing as Deserialize>::deserialize(d)?;
manufacturing.validate().map_err(serde::de::Error::custom)?;
Ok(manufacturing)
}
/// The document.
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Document {
/// Named, renderer-independent setups. Device/job state is never saved here.
#[serde(default, skip_serializing_if = "crate::render_settings::RenderSettings::is_empty")]
pub render: std::sync::Arc<crate::render_settings::RenderSettings>,
/// Manufacturing definitions; generated toolpaths remain session caches.
#[serde(default, deserialize_with = "read_manufacturing", skip_serializing_if = "solidcraft_cam::Manufacturing::is_empty")]
pub manufacturing: solidcraft_cam::Manufacturing,
#[serde(default = "default_format")]
pub format: String,
/// The changes of `format` this design has while they are pending (no release has fixed
@@ -2453,6 +2462,7 @@ impl Document {
pub fn new(name: &str) -> Self {
Document {
render: Default::default(),
manufacturing: Default::default(),
format: default_format(),
format_pending: crate::format::pending_names(),
name: name.into(),