forked from 1b-agent/opencadstudio-upstream
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:
1 parent
1cbcc8f4c5
commit
1eae36e726
43 files changed
+152
-34
No files matched your search
+12
-5
@@ -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");
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user