Complete MLine host model coverage

Maps vertices, flags, justification, normal, scale and style with host
validation and MLineStyle binding. The host recomputes vertex direction,
miter and element parameters on scripted create/edit, so scripts only supply
positions. staged_python_mline_lifecycle_over_real_ipc passes the full gate
including DWG and DXF reopen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Felix RiestraandClaude Sonnet 5 committed 2026-09-20 14:02:40 +02:00
1 parent ec10bdbc48
commit a86d5bc727
11 files changed
+445 -16

No files matched your search

+18 -1
View File
@@ -22,7 +22,8 @@
"AttributeDefinition",
"AttributeEntity",
"Hatch",
"Leader"
"Leader",
"MLine"
],
"base_fields": ["handle", "layer", "owner_handle"],
"overrides": {
@@ -230,6 +231,22 @@
"mpolygon_boundary_handle_count": { "exclude": true }
}
},
"MLine": {
"fields": {
"vertices": { "required": true },
"flags": {
"rust_getter": "(VAR.flags.bits() as i64)",
"rust_setter": "if let Some(v) = dict.get_item_opt(\"flags\", vm)? { let bits = v.try_into_value::<i64>(vm)?; VAR.flags = i16::try_from(bits).ok().and_then(acadrust::entities::MLineFlags::from_bits).ok_or_else(|| vm.new_value_error(\"MLine.flags has unknown bits\".to_owned()))?; }"
},
"start_point": { "read_only": true },
"style_handle": { "read_only": true },
"style_element_count": { "read_only": true },
"style_name": {
"rust_getter": "VAR.style_name.clone()",
"rust_setter": "if let Some(v) = dict.get_item_opt(\"style_name\", vm)? { VAR.style_name = v.try_into_value::<String>(vm)?; VAR.style_handle = None; }"
}
}
},
"Leader": {
"fields": {
"vertices": { "required": true },