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

+12 -5
View File
@@ -1402,7 +1402,7 @@ pub const DEFAULT_SAVE_FORMAT: &str = "DWG 2018";
pub const SAVE_FORMAT_OPTIONS: &[&str] = &[
"DWG 2018", "DWG 2013", "DWG 2010", "DWG 2007", "DWG 2004", "DWG 2000", "DWG R14", "DXF 2018",
"DXF 2013", "DXF 2010", "DXF 2007", "DXF 2004", "DXF 2000", "DXF R14",
"DXF 2013", "DXF 2010", "DXF 2007", "DXF 2004", "DXF 2000", "DXF R14", "DWT 2018",
];
pub fn canonical_save_format(format: &str) -> &'static str {
@@ -1432,7 +1432,14 @@ pub fn parse_save_format(format: &str) -> (&'static str, codec::DxfVersion) {
use codec::DxfVersion;
let f = format.to_ascii_uppercase();
let is_dxf = f.starts_with("DXF");
let ext = if is_dxf { "dxf" } else { "dwg" };
// A drawing template (.dwt) is a DWG under another extension (#1635).
let ext = if is_dxf {
"dxf"
} else if f.starts_with("DWT") {
"dwt"
} else {
"dwg"
};
let version = if f.contains("2013") {
DxfVersion::AC1027
} else if f.contains("2010") {
@@ -1611,14 +1618,14 @@ impl std::fmt::Display for SaveFailure {
impl std::error::Error for SaveFailure {}
const SUPPORTED_SAVE_FORMATS: &str = ".dwg, .dxf";
const SUPPORTED_SAVE_FORMATS: &str = ".dwg, .dxf, .dwt";
fn validate_save_extension(path: &Path) -> Result<(), SaveFailure> {
let extension = path
.extension()
.map(|value| value.to_string_lossy().to_lowercase())
.unwrap_or_default();
if matches!(extension.as_str(), "dwg" | "dxf" | "sv$") {
if matches!(extension.as_str(), "dwg" | "dxf" | "dwt" | "sv$") {
return Ok(());
}
@@ -1684,7 +1691,7 @@ mod save_failure_tests {
assert_eq!(
error,
"unsupported output format .pdf; supported formats: .dwg, .dxf"
"unsupported output format .pdf; supported formats: .dwg, .dxf, .dwt"
);
assert!(!path.exists(), "unsupported export created an output file");
}