Import FreeCAD and Rhino files through cadmpeg (#1435)
FreeCAD .FCStd and Rhino .3dm files open, insert and drop like STEP and IGES: cadmpeg (Apache-2.0, pinned =0.6.1, native builds only) detects the format, decodes it under its service resource caps, validates the model and writes it as STEP AP214, which becomes an Import feature in a new component named after the file, with the up and names options. Only the fcstd, rhino and step codecs are compiled in (no default features). ACIS is left out: cadmpeg's sat codec is a ShapeManager stream decoder. native_cad.rs is the single importer seam. Self-made FreeCAD and Rhino box fixtures, hostile-input, ZIP-bomb and cap tests, engine tests for the component path; the browser build reports these formats as not supported. A note under design format 23 says an Import's file can name these formats. Co-authored-by: Jacob Oursland <jacob.oursland@gmail.com> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2b45635d73
commit
78242d67d1
23 files changed
+1585
-328
No files matched your search
@@ -125,11 +125,15 @@ const STAGED_THUMBNAIL_TRIANGLES: usize = 1_000_000;
|
||||
/// How long a frame spends on a staged STEP import.
|
||||
const STAGED_FRAME_MS: f64 = 30.0;
|
||||
|
||||
/// Files read in stages: STEP (not IGES, which is first restated as STEP) to insert or open.
|
||||
/// Files read in stages: STEP (not IGES, FreeCAD or Rhino, which are first restated as STEP) to
|
||||
/// insert or open.
|
||||
#[cfg_attr(not(target_arch = "wasm32"), allow(dead_code))]
|
||||
fn staged_kind(request: &Request) -> bool {
|
||||
let p = &request.path;
|
||||
matches!(request.kind, Kind::Insert | Kind::Open) && solidcraft_engine::io::is_step_path(p) && !solidcraft_engine::io::is_iges_path(p)
|
||||
matches!(request.kind, Kind::Insert | Kind::Open)
|
||||
&& solidcraft_engine::io::is_step_path(p)
|
||||
&& !solidcraft_engine::io::is_iges_path(p)
|
||||
&& !solidcraft_engine::io::is_native_cad_path(p)
|
||||
}
|
||||
|
||||
impl Running {
|
||||
|
||||
Reference in new issue
Block a user