STEP assemblies: mesh a repeated part once and place it for its instances (#1152)

The reader converts each item once, but every instance made its own display mesh
(tessellation, seam and tangent flags), the most expensive step of opening a large
assembly. A later instance of an item now shows its first instance's mesh, placed by
the difference of the two placements. Only rigid placements share; split lines and
any operation drop the link. Measurements and export read each instance's own
geometry, so eval output is unchanged.

Generated assemblies: mesh phase 2,215 -> 139 ms (901 bodies) and 1,028 -> 85 ms
(5,401 bodies), with the same triangle counts.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-14 14:23:33 -04:00
1 parent 764fcaa5a8
commit 9b0f028f13
8 files changed
+135

No files matched your search

+1
View File
@@ -93,6 +93,7 @@ pub fn decode_native_body(bytes: &[u8]) -> Result<Body> {
splits: None,
face_sources: None,
history: None,
display_of: None,
regularization_protected: false,
};
metadata::apply(&mut body, saved.metadata)?;