Feat: Phase 4.1/4.2 — Polyline, Polyline2D, Polyline3D, Ray, XLine render and grips
- polyline.rs: TruckConvertible/Grippable/PropertyEditable/Transformable for all three polyline types; Polyline2D handles bulge arcs via the same truck Wire path as LwPolyline; Polyline and Polyline3D use TruckObject::Lines for straight-segment rendering - ray.rs: Ray renders as base→+1e6; XLine renders as ±1e6; both have base-point and direction grips; mirror correctly reflects direction vector; base X/Y/Z and Dir X/Y/Z exposed in properties panel - traits.rs: dispatch all five new entity types through to_truck_entity, grips, geometry_properties, apply_geom_prop, apply_grip, apply_transform Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
36bda2ac2b
commit
4a93fc4949
4 changed files with 700 additions and 0 deletions
|
|
@ -41,6 +41,11 @@ impl EntityTypeOps for EntityType {
|
|||
EntityType::Ellipse(ellipse) => TruckConvertible::to_truck(ellipse, document),
|
||||
EntityType::Spline(spline) => TruckConvertible::to_truck(spline, document),
|
||||
EntityType::LwPolyline(pline) => TruckConvertible::to_truck(pline, document),
|
||||
EntityType::Polyline(pl) => TruckConvertible::to_truck(pl, document),
|
||||
EntityType::Polyline2D(pl) => TruckConvertible::to_truck(pl, document),
|
||||
EntityType::Polyline3D(pl) => TruckConvertible::to_truck(pl, document),
|
||||
EntityType::Ray(ray) => TruckConvertible::to_truck(ray, document),
|
||||
EntityType::XLine(xl) => TruckConvertible::to_truck(xl, 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),
|
||||
|
|
@ -56,6 +61,11 @@ impl EntityTypeOps for EntityType {
|
|||
EntityType::Arc(arc) => Grippable::grips(arc),
|
||||
EntityType::Ellipse(ellipse) => Grippable::grips(ellipse),
|
||||
EntityType::LwPolyline(pline) => Grippable::grips(pline),
|
||||
EntityType::Polyline(pl) => Grippable::grips(pl),
|
||||
EntityType::Polyline2D(pl) => Grippable::grips(pl),
|
||||
EntityType::Polyline3D(pl) => Grippable::grips(pl),
|
||||
EntityType::Ray(ray) => Grippable::grips(ray),
|
||||
EntityType::XLine(xl) => Grippable::grips(xl),
|
||||
EntityType::Point(pt) => Grippable::grips(pt),
|
||||
EntityType::Spline(spline) => Grippable::grips(spline),
|
||||
EntityType::Text(text) => Grippable::grips(text),
|
||||
|
|
@ -89,6 +99,26 @@ impl EntityTypeOps for EntityType {
|
|||
pline,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::Polyline(pl) => Some(PropertyEditable::geometry_properties(
|
||||
pl,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::Polyline2D(pl) => Some(PropertyEditable::geometry_properties(
|
||||
pl,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::Polyline3D(pl) => Some(PropertyEditable::geometry_properties(
|
||||
pl,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::Ray(ray) => Some(PropertyEditable::geometry_properties(
|
||||
ray,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::XLine(xl) => Some(PropertyEditable::geometry_properties(
|
||||
xl,
|
||||
text_style_names,
|
||||
)),
|
||||
EntityType::Hatch(hatch) => Some(PropertyEditable::geometry_properties(
|
||||
hatch,
|
||||
text_style_names,
|
||||
|
|
@ -139,6 +169,11 @@ impl EntityTypeOps for EntityType {
|
|||
PropertyEditable::apply_geom_prop(ellipse, field, value)
|
||||
}
|
||||
EntityType::LwPolyline(pline) => PropertyEditable::apply_geom_prop(pline, field, value),
|
||||
EntityType::Polyline(pl) => PropertyEditable::apply_geom_prop(pl, field, value),
|
||||
EntityType::Polyline2D(pl) => PropertyEditable::apply_geom_prop(pl, field, value),
|
||||
EntityType::Polyline3D(pl) => PropertyEditable::apply_geom_prop(pl, field, value),
|
||||
EntityType::Ray(ray) => PropertyEditable::apply_geom_prop(ray, field, value),
|
||||
EntityType::XLine(xl) => PropertyEditable::apply_geom_prop(xl, 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),
|
||||
|
|
@ -160,6 +195,11 @@ impl EntityTypeOps for EntityType {
|
|||
EntityType::Arc(arc) => Grippable::apply_grip(arc, grip_id, apply),
|
||||
EntityType::Ellipse(ellipse) => Grippable::apply_grip(ellipse, grip_id, apply),
|
||||
EntityType::LwPolyline(pline) => Grippable::apply_grip(pline, grip_id, apply),
|
||||
EntityType::Polyline(pl) => Grippable::apply_grip(pl, grip_id, apply),
|
||||
EntityType::Polyline2D(pl) => Grippable::apply_grip(pl, grip_id, apply),
|
||||
EntityType::Polyline3D(pl) => Grippable::apply_grip(pl, grip_id, apply),
|
||||
EntityType::Ray(ray) => Grippable::apply_grip(ray, grip_id, apply),
|
||||
EntityType::XLine(xl) => Grippable::apply_grip(xl, 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),
|
||||
|
|
@ -181,6 +221,11 @@ impl EntityTypeOps for EntityType {
|
|||
EntityType::Insert(ins) => Transformable::apply_transform(ins, t),
|
||||
EntityType::Line(line) => Transformable::apply_transform(line, t),
|
||||
EntityType::LwPolyline(pline) => Transformable::apply_transform(pline, t),
|
||||
EntityType::Polyline(pl) => Transformable::apply_transform(pl, t),
|
||||
EntityType::Polyline2D(pl) => Transformable::apply_transform(pl, t),
|
||||
EntityType::Polyline3D(pl) => Transformable::apply_transform(pl, t),
|
||||
EntityType::Ray(ray) => Transformable::apply_transform(ray, t),
|
||||
EntityType::XLine(xl) => Transformable::apply_transform(xl, 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),
|
||||
|
|
|
|||
Loading…
Reference in a new issue