forked from 1b-agent/opencadstudio-upstream
Cargo: codec e023bc3 (acadrust sync), kernel abca4e8, graph c63556f
The codec now holds wide EntityType variants boxed (MText, Helix, Dimension, Hatch, Viewport, MultiLeader, Surface, Table, Ole2Frame, Light, Extended). Constructors box their entity; nested patterns reach a dimension through entities::dimension::as_dimension(_mut). Also follows BlockAction::action_ids, LineTypeComplexData::source_flags and the decimal tab stop with an explicit character. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
218150c76a
commit
e4d04ef132
87 files changed
+380
-269
No files matched your search
@@ -472,6 +472,7 @@ fn complex_elements(
|
||||
scale: decimal(*scale),
|
||||
rotation: decimal(*rot_deg).to_radians(),
|
||||
absolute_rotation: false,
|
||||
source_flags: 0,
|
||||
offset: [decimal(*x), decimal(*y)],
|
||||
}
|
||||
}
|
||||
@@ -492,6 +493,7 @@ fn complex_elements(
|
||||
scale: decimal(*scale),
|
||||
rotation: decimal(*rot_deg).to_radians(),
|
||||
absolute_rotation: false,
|
||||
source_flags: 0,
|
||||
offset: [decimal(*x), decimal(*y)],
|
||||
},
|
||||
};
|
||||
|
||||
+8
-5
@@ -2969,7 +2969,7 @@ mod dimension_arrow_save_tests {
|
||||
dimension.definition_point = Vector3::new(0.0, 20.0, 0.0);
|
||||
dimension.base.definition_point = dimension.definition_point;
|
||||
dimension.base.text_middle_point = Vector3::new(50.0, 20.0, 0.0);
|
||||
doc.add_entity(EntityType::Dimension(Dimension::Linear(dimension)))
|
||||
doc.add_entity(EntityType::Dimension(Box::new(Dimension::Linear(dimension))))
|
||||
.unwrap();
|
||||
doc
|
||||
}
|
||||
@@ -3545,11 +3545,12 @@ mod prepare_save_tests {
|
||||
dim.base.definition_point = Vector3::ZERO;
|
||||
dim.base.common.handle = doc.allocate_handle();
|
||||
let handle = dim.base.common.handle;
|
||||
doc.add_entity(EntityType::Dimension(Dimension::Linear(dim)))
|
||||
doc.add_entity(EntityType::Dimension(Box::new(Dimension::Linear(dim))))
|
||||
.unwrap();
|
||||
|
||||
let prepared = prepare_document_for_save(doc.clone(), doc.version);
|
||||
let EntityType::Dimension(Dimension::Linear(linear)) = prepared.get_entity(handle).unwrap()
|
||||
let Some(Dimension::Linear(linear)) =
|
||||
crate::entities::dimension::as_dimension(prepared.get_entity(handle).unwrap())
|
||||
else {
|
||||
panic!("dimension missing from prepared clone");
|
||||
};
|
||||
@@ -3565,7 +3566,9 @@ mod prepare_save_tests {
|
||||
assert_eq!(linear.base.definition_point, linear.definition_point);
|
||||
|
||||
// The live document is untouched: no block name, stale group-10.
|
||||
let EntityType::Dimension(Dimension::Linear(live)) = doc.get_entity(handle).unwrap() else {
|
||||
let Some(Dimension::Linear(live)) =
|
||||
crate::entities::dimension::as_dimension(doc.get_entity(handle).unwrap())
|
||||
else {
|
||||
panic!("dimension missing from live document");
|
||||
};
|
||||
assert!(live.base.block_name.is_empty());
|
||||
@@ -3582,7 +3585,7 @@ mod prepare_save_tests {
|
||||
let mut dim =
|
||||
DimensionLinear::new(Vector3::new(0.0, 0.0, 0.0), Vector3::new(10.0, 0.0, 0.0));
|
||||
dim.base.common.handle = doc.allocate_handle();
|
||||
doc.add_entity(EntityType::Dimension(Dimension::Linear(dim)))
|
||||
doc.add_entity(EntityType::Dimension(Box::new(Dimension::Linear(dim))))
|
||||
.unwrap();
|
||||
for ext in ["dwg", "dxf"] {
|
||||
let inline = save_to_bytes(&doc, ext, codec::DxfVersion::AC1032).expect("inline");
|
||||
|
||||
+1
-1
@@ -168,7 +168,7 @@ pub fn add_embedded_image(
|
||||
) -> Result<codec::Handle, String> {
|
||||
let (upper_left, lower_right) = corners_from_placement(origin, width, image.aspect());
|
||||
let ole = build_embedded_ole(image, upper_left, lower_right);
|
||||
doc.add_entity(codec::EntityType::Ole2Frame(ole))
|
||||
doc.add_entity(codec::EntityType::Ole2Frame(Box::new(ole)))
|
||||
.map_err(|e| e.to_string())
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3336,7 +3336,7 @@ mod tests {
|
||||
// Hatch (pattern names have no table — preserved verbatim).
|
||||
let mut hatch = codec::entities::Hatch::new();
|
||||
hatch.pattern.name = "ANSI31".to_string();
|
||||
doc.add_entity(codec::EntityType::Hatch(hatch)).unwrap();
|
||||
doc.add_entity(codec::EntityType::Hatch(Box::new(hatch))).unwrap();
|
||||
// Dim-style reference via a tolerance entity.
|
||||
doc.dim_styles
|
||||
.add(codec::tables::DimStyle::new("ARCH"))
|
||||
|
||||
Reference in new issue
Block a user