forked from 1b-agent/fieldcraft-upstream
geometry: read tagged meshes through the VFS, refuse singular transforms, share the model's coordinate limit (#6)
read_3mf_file reads through solidcraft_io::vfs like open_design_file (regular files only, browser files too), so the engine drops its own capped reader and EngineError::File. A build item whose transform flattens its object is an error, and coordinates use modelcraft_model::MAX_COORD (1e9) instead of a looser limit of their own. Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm Co-authored-by: jyviko <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
7 files changed
+44
-27
No files matched your search
@@ -87,10 +87,11 @@ as one face (tag 0). A file mixing tagged and untagged triangles in one object i
|
||||
|
||||
- Every build item becomes one `SurfaceMesh`, in millimetres (`unit` converted), named after its
|
||||
object (`Mesh<n>` when unnamed). An item's `transform` is applied; a mirroring transform reverses
|
||||
the winding. Components are not read yet (an error that says so).
|
||||
the winding; a singular transform (one that flattens the object) is refused. Components are
|
||||
not read yet (an error that says so).
|
||||
- Untrusted input: file ≤ 512 MB, a part ≤ 1 GB uncompressed, ≤ 10 000 zip entries, ≤ 20 million
|
||||
vertices and 20 million triangles in total, XML nesting ≤ 256. Coordinates must be finite with
|
||||
magnitude ≤ 10¹²; vertex indices must exist; tags must be below `ft:faces` when it is given.
|
||||
magnitude ≤ 10⁹ mm (the FE model's limit), in the file and once placed; vertex indices must exist; tags must be below `ft:faces` when it is given.
|
||||
Any violation is an error naming the problem; nothing panics.
|
||||
|
||||
## Versions
|
||||
|
||||
Reference in new issue
Block a user