forked from 1b-agent/opencadstudio-upstream
fix: DXF attribute rotation converted once; plugin layers refuse unknown linetypes
- The acadrust DXF reader has converted ATTRIB/ATTDEF rotation to radians since f226110 (in every codec rev OCS pinned from 2026-08-08 on), while fix_dxf_dimension_rotations still applied to_radians a second time on load. Only Shape needs the conversion here. Surfaced by #1391's hunk. - Shape-file text styles are found by their is_shape_file flag instead of an empty name (also from #1391). - #1393's add_layer/modify_layer wrote an unresolved linetype name into the LAYER record; a name the drawing (plus the standard set) cannot supply is now refused, through one resolve_linetype helper. Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
1 parent
97b471949c
commit
8845095432
3 files changed
+30
-52
No files matched your search
+4
-12
@@ -2368,21 +2368,13 @@ fn fix_viewport_status_flags(doc: &mut CadDocument) {
|
||||
}
|
||||
}
|
||||
|
||||
/// The acadrust DXF reader stores several rotation fields directly from DXF
|
||||
/// group code 50 in degrees, while DWG and our own creation code store radians.
|
||||
/// Apply to_radians() on load so tessellation can call cos/sin uniformly.
|
||||
/// The acadrust DXF reader still stores Shape rotation directly from group
|
||||
/// code 50 in degrees, while DWG and our own creation code store radians.
|
||||
/// Dimension angles and ATTRIB/ATTDEF rotation are converted inside the
|
||||
/// reader, so arms for them here would convert twice.
|
||||
fn fix_dxf_dimension_rotations(doc: &mut CadDocument) {
|
||||
for entity in doc.entities_mut() {
|
||||
match entity {
|
||||
// Dimension angles (rotation / text / oblique) are converted
|
||||
// degrees->radians inside the acadrust DXF reader now, so a
|
||||
// dimension arm here would double-convert.
|
||||
EntityType::AttributeDefinition(a) => {
|
||||
a.rotation = a.rotation.to_radians();
|
||||
}
|
||||
EntityType::AttributeEntity(a) => {
|
||||
a.rotation = a.rotation.to_radians();
|
||||
}
|
||||
EntityType::Shape(s) => {
|
||||
s.rotation = s.rotation.to_radians();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user