mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-07 12:31:56 +00:00
dc38349cbf
* Kernel: the B-rep record and the native body file come from solidcore-record SolidCraft's portable B-rep record (`solidcraft_geom::brep`: brep.rs, topology, history, envelope, part, curve2) and the native body file (`solidcraft_kernel::native`: the tagged binary codec and the container) move to solidcore's `solidcore-record` crate: geometry as data, with structural validation and no maths (solidcore's docs/layers.md, stage 1). Every caller uses `solidcore_record::brep` and `solidcore_record::native`; the old copies are deleted. What computes from coordinates stays with the kernel, in geom's `brep`: - `brep::check`: the record's geometric checks (orthonormal frames, non-degenerate planes, unit revolution axes, non-singular placements). `check::validate` and `check::validate_built` are the record's validation and these together, and every caller of `Brep::validate` uses them, so what is accepted is unchanged; - `brep::label`: a surface's natural ranges (a cone's apex), `curve_interval`, `edge_curve_interval` and `form_turns`; - `brep::pcurve::eval`: a pcurve's point; - `geometry::check`, `placement::moved` and `split_edges` become functions on the record. The kernel's native module keeps the conversion between a body and its saved record (metadata.rs) and checks the decoded record's geometry. `native/analytic.rs`, which no module declared, is deleted. solidcore-record is pinned to its rev on solidcore's `layer-record` branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT * Geometry: Vec2, Vec3, Plane and the profile types come from solidcore-record The plain data of vectors and points, sketch planes and planar profiles (`Seg2`, `Loop2`, `Region2`) moves to `solidcore-record`, with its constants and component-wise operators only (owner decision, solidcore layer split). Their geometry stays in geom as traits: `Vec2Geom`, `Vec3Geom`, `PlaneGeom`, `Seg2Geom`, `Loop2Geom`, `Region2Geom`, `Seg2ArcFit`, `Loop2ArcFit` and `Region2ArcFit`, in scope with `use solidcraft_geom::prelude::*`. Every caller names the types from `solidcore_record`; geom no longer defines or re-exports them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT * Kernel: pin solidcore-record to solidcore main f5e8e9a29 solidcore-record is merged on solidcore main (tangency-labs/solidcore#2519); its crate there is identical to the rev pinned before but for its clippy configuration. The lock is regenerated against the merged rev. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NvoxKMbMFSQU8tzRtoJhtT --------- Co-authored-by: jyviko <2501648+jyviko@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
1.7 KiB
TOML
51 lines
1.7 KiB
TOML
[package]
|
|
name = "solidcraft-io"
|
|
description = "SolidCraft file formats: designs (JSON), STL, OBJ, STEP, IGES, 3MF and glTF, and FreeCAD/Rhino import"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[features]
|
|
# Tests only: trust a model cache even when the build has no git commit.
|
|
trust-unknown-source = []
|
|
|
|
[dependencies]
|
|
solidcore-record = { workspace = true }
|
|
solidcraft-geom = { workspace = true }
|
|
solidcraft-kernel = { workspace = true }
|
|
solidcraft-doc = { workspace = true }
|
|
solidcraft-profile = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|
|
zip = { workspace = true }
|
|
quick-xml = { workspace = true }
|
|
gltf = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true, features = ["raw_value"] }
|
|
sha2 = { workspace = true }
|
|
chardetng = { workspace = true }
|
|
encoding_rs = { workspace = true }
|
|
# FreeCAD and Rhino import (pure Rust, so the browser build has it too).
|
|
cadmpeg-core = { workspace = true }
|
|
cadmpeg-ir = { workspace = true }
|
|
cadmpeg-registry = { workspace = true }
|
|
|
|
# The model cache's key (build.rs).
|
|
[build-dependencies]
|
|
sha2 = { workspace = true }
|
|
|
|
# A plain fsync where a network share refuses Apple's full flush (src/safe_write.rs); already in
|
|
# the tree through tempfile.
|
|
[target.'cfg(target_vendor = "apple")'.dependencies]
|
|
rustix = { version = "1", default-features = false, features = ["std", "fs"] }
|
|
|
|
# The computer's name for a design's lock file (src/design_lock.rs; the browser keeps no lock files).
|
|
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
|
gethostname = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
solidcraft-testkit = { workspace = true }
|