Cargo: codec 76d2a1c, kernel e652b4d, graph 0545fa9; text styles, templates, solid edges

- Text styles keep their TrueType typeface through save and reopen (codec
  reads and writes the STYLE record's ACAD extended data) (#1633)
- Unnamed shape-file entries no longer show in text style lists (#1634)
- Save As offers DWT 2018; NEW asks for the template to start from, while
  Ctrl+N and the quick-access New run QNEW with the default template (#1635)
- An edge next to an earlier fillet of the same radius rounds together with
  it (kernel); the solid stays drawn and pickable while edges are chosen
  (#1625, #1107)
- A full cache rebuild drops the B-rep cache too, so an undone fillet does
  not come back with the next edge operation (#1107)
- Selected solids in shaded styles highlight only their visible edges (#1031)
- VIEW ISO / SWISO / SEISO / NEISO / NWISO snap to the isometric corners

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-06 18:32:43 +03:00
1 parent 1cbcc8f4c5
commit 1eae36e726
43 files changed
+152 -34

No files matched your search

+4
View File
@@ -2575,6 +2575,10 @@ impl Scene {
if !incremental {
self.meshes.clear();
self.block_meshes.clear();
// The B-rep cache follows the entities too: an undo that rebuilds
// everything left the undone fillet's body here, and the next
// edge operation brought it back (#1107). Restored on demand.
self.solid_models.clear();
}
// BLOCK-entity handles of the layout (model + paper) blocks. A solid
// owned by one of these is top-level; anything else lives in a block
+8 -5
View File
@@ -4960,7 +4960,10 @@ analytic={:.1} regular={:.1} blocks={:.1}",
// ── Pass 7: selection overlay pass ───────────────────────────────
// Redraws selected wires and text with depth_compare=Always so both
// appear on top of all other geometry at full brightness.
// appear on top of all other geometry at full brightness — unless
// faces are drawn: then edges behind a surface stay hidden while
// selected, as they are when not (#1031).
let occluded = hidden_line || !mesh_wireframe;
let have_text_highlight =
(!self.text_highlight_gpu.is_empty())
|| !self.block_text_highlight_gpu.is_empty();
@@ -4997,7 +5000,7 @@ analytic={:.1} regular={:.1} blocks={:.1}",
pass.set_bind_group(0, &self.uniform_bind_group, &[]);
pass.set_stencil_reference(stencil_ref);
if !self.gpu_selected_wires.is_empty() {
pass.set_pipeline(if hidden_line {
pass.set_pipeline(if occluded {
&self.wire_pipeline
} else {
&self.wire_xray_pipeline
@@ -5016,7 +5019,7 @@ analytic={:.1} regular={:.1} blocks={:.1}",
}
}
if !self.gpu_selected_block_wires.is_empty() {
pass.set_pipeline(if hidden_line {
pass.set_pipeline(if occluded {
&self.block_wire_pipeline
} else {
&self.block_wire_xray_pipeline
@@ -5029,7 +5032,7 @@ analytic={:.1} regular={:.1} blocks={:.1}",
}
}
if !self.gpu_selected_circles.is_empty() {
pass.set_pipeline(if hidden_line {
pass.set_pipeline(if occluded {
&self.circle_pipeline
} else {
&self.circle_xray_pipeline
@@ -5043,7 +5046,7 @@ analytic={:.1} regular={:.1} blocks={:.1}",
}
}
if !self.gpu_selected_ellipses.is_empty() {
pass.set_pipeline(if hidden_line {
pass.set_pipeline(if occluded {
&self.ellipse_pipeline
} else {
&self.ellipse_xray_pipeline