Feat: Phase 5 — MLine, Tolerance render; DimStyle Choice picker on dimensions

- mline.rs: MLine renders center spine + two parallel offset lines at
  ±scale/2 using the vertex miter directions; vertex grips; scale,
  closed and style-name properties
- tolerance.rs: Tolerance renders the GDT text string via font
  tessellation at insertion_point with rotation from direction vector;
  insertion grip and position properties
- properties.rs: Dimension entity's style_name EditText is upgraded to
  a Choice dropdown when document.dim_styles is non-empty, enabling
  point-and-click DimStyle assignment without a separate panel

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Sonnet 4.6 committed 2026-04-02 19:06:20 +03:00
1 parent 27c0e74468
commit dafa079b6a
5 files changed
+335

No files matched your search

+18
View File
@@ -50,6 +50,8 @@ impl EntityTypeOps for EntityType {
EntityType::Wipeout(wo) => TruckConvertible::to_truck(wo, document),
EntityType::AttributeDefinition(a) => TruckConvertible::to_truck(a, document),
EntityType::AttributeEntity(a) => TruckConvertible::to_truck(a, document),
EntityType::MLine(ml) => TruckConvertible::to_truck(ml, document),
EntityType::Tolerance(tol) => TruckConvertible::to_truck(tol, document),
EntityType::Text(text) => TruckConvertible::to_truck(text, document),
EntityType::MText(text) => TruckConvertible::to_truck(text, document),
EntityType::Leader(leader) => TruckConvertible::to_truck(leader, document),
@@ -74,6 +76,8 @@ impl EntityTypeOps for EntityType {
EntityType::Wipeout(wo) => Grippable::grips(wo),
EntityType::AttributeDefinition(a) => Grippable::grips(a),
EntityType::AttributeEntity(a) => Grippable::grips(a),
EntityType::MLine(ml) => Grippable::grips(ml),
EntityType::Tolerance(tol) => Grippable::grips(tol),
EntityType::Point(pt) => Grippable::grips(pt),
EntityType::Spline(spline) => Grippable::grips(spline),
EntityType::Text(text) => Grippable::grips(text),
@@ -143,6 +147,14 @@ impl EntityTypeOps for EntityType {
a,
text_style_names,
)),
EntityType::MLine(ml) => Some(PropertyEditable::geometry_properties(
ml,
text_style_names,
)),
EntityType::Tolerance(tol) => Some(PropertyEditable::geometry_properties(
tol,
text_style_names,
)),
EntityType::Hatch(hatch) => Some(PropertyEditable::geometry_properties(
hatch,
text_style_names,
@@ -202,6 +214,8 @@ impl EntityTypeOps for EntityType {
EntityType::Wipeout(wo) => PropertyEditable::apply_geom_prop(wo, field, value),
EntityType::AttributeDefinition(a) => PropertyEditable::apply_geom_prop(a, field, value),
EntityType::AttributeEntity(a) => PropertyEditable::apply_geom_prop(a, field, value),
EntityType::MLine(ml) => PropertyEditable::apply_geom_prop(ml, field, value),
EntityType::Tolerance(tol) => PropertyEditable::apply_geom_prop(tol, field, value),
EntityType::Hatch(hatch) => PropertyEditable::apply_geom_prop(hatch, field, value),
EntityType::Point(pt) => PropertyEditable::apply_geom_prop(pt, field, value),
EntityType::Spline(spline) => PropertyEditable::apply_geom_prop(spline, field, value),
@@ -232,6 +246,8 @@ impl EntityTypeOps for EntityType {
EntityType::Wipeout(wo) => Grippable::apply_grip(wo, grip_id, apply),
EntityType::AttributeDefinition(a) => Grippable::apply_grip(a, grip_id, apply),
EntityType::AttributeEntity(a) => Grippable::apply_grip(a, grip_id, apply),
EntityType::MLine(ml) => Grippable::apply_grip(ml, grip_id, apply),
EntityType::Tolerance(tol) => Grippable::apply_grip(tol, grip_id, apply),
EntityType::Point(pt) => Grippable::apply_grip(pt, grip_id, apply),
EntityType::Spline(spline) => Grippable::apply_grip(spline, grip_id, apply),
EntityType::Text(text) => Grippable::apply_grip(text, grip_id, apply),
@@ -262,6 +278,8 @@ impl EntityTypeOps for EntityType {
EntityType::Wipeout(wo) => Transformable::apply_transform(wo, t),
EntityType::AttributeDefinition(a) => Transformable::apply_transform(a, t),
EntityType::AttributeEntity(a) => Transformable::apply_transform(a, t),
EntityType::MLine(ml) => Transformable::apply_transform(ml, t),
EntityType::Tolerance(tol) => Transformable::apply_transform(tol, t),
EntityType::MText(text) => Transformable::apply_transform(text, t),
EntityType::Point(pt) => Transformable::apply_transform(pt, t),
EntityType::Spline(spline) => Transformable::apply_transform(spline, t),