smlib: a draft on solidcore keeps the body's tags and face history

solidcore's local operation carries the B-rep's attributes since 1ee3a930c, which the pin
3569b5d73 holds, so history::tags_cross_a_draft runs again and matches the C++ draft. The draft's
body is no longer marked untracked: Brep::made_core_draft goes and ops::draft answers with
Brep::made_core, so a draft's history is read as every other solidcore operation's is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNXLXkZLQ6T7TSi4wswcmk
This commit is contained in:
Brett Lawson
2026-10-30 15:09:53 +01:00
parent cf2a15ace8
commit c3f5bb40b9
3 changed files with 1 additions and 8 deletions
-1
View File
@@ -612,7 +612,6 @@ mod history {
/// A 5 degree draft of the front about the bottom plane: the front tilts, its neighbours'
/// edges move with it.
#[test]
#[ignore = "solidcore's draft (its local operation) does not carry the body's attributes yet: every face comes out untagged"]
fn tags_cross_a_draft() {
let a = tagged_box();
let front = [[10.0, 0.0, 5.0]];
-6
View File
@@ -264,12 +264,6 @@ impl Brep {
Brep { untracked: Some("the history of a blend on solidcore (solidcore#1594)"), ..Brep::made_core(b) }
}
/// A body a solidcore draft made: its local operation does not carry the body's attributes
/// yet (every face comes out with none), so its history is not read.
fn made_core_draft(b: core::Body) -> Brep {
Brep { untracked: Some("the history of a draft on solidcore, whose local operation does not carry attributes yet"), ..Brep::made_core(b) }
}
/// The C++ kernel's body: converted from solidcore's the first time it is asked for (and
/// tagged as solidcore's is, for a [`Brep::tagged`] body).
fn cpp(&self) -> Result<&ffi::Handle> {
+1 -1
View File
@@ -396,7 +396,7 @@ impl Brep {
return Err(Error::Argument);
}
if route::Op::Split.backend() == route::Backend::Solidcore {
return core::offset::draft(self.core()?, faces, tolerance, neutral_origin, neutral_normal, pull, angle).map(Brep::made_core_draft);
return core::offset::draft(self.core()?, faces, tolerance, neutral_origin, neutral_normal, pull, angle).map(Brep::made_core);
}
init()?;
ffi::ops::draft(self.cpp()?, faces, tolerance, &neutral_origin, &neutral_normal, &pull, angle).map(Brep::made).map_err(pick_error)