Zoe Forbes 005348b8a9 Leverage FreeCAD AttachExtension for parametric datum updates
ZTools datum planes now use FreeCAD's built-in attachment engine instead
of setting MapMode='Deactivated' with manual placement. This means
datums automatically update when source geometry changes on recompute.

Each datum type maps to a vanilla MapMode:
  offset_from_face  -> FlatFace + AttachmentOffset.Base.z = distance
  offset_from_plane -> FlatFace + AttachmentOffset.Base.z = distance
  midplane          -> FlatFace on face1 + offset = half gap distance
  3_points          -> ThreePointsPlane (3 vertex refs)
  normal_to_edge    -> NormalToEdge + MapPathParameter for position
  angled            -> FlatFace + AttachmentOffset.Rotation for angle
  tangent_cylinder  -> manual fallback (TangentPlane needs vertex ref)

The C++ AttachExtension handles: automatic recompute via
extensionExecute(), dependency tracking via PropertyLinkSubList,
topology change handling, and live preview via extensionOnChanged().

Non-Body datums (Part::Plane) lack AttachExtension and continue to
use manual placement as before.

Other changes:
- New _configure_attachment() helper sets MapMode, AttachmentSupport,
  AttachmentOffset, and MapPathParameter on datum objects
- _setup_ztools_datum() accepts optional attachment parameters and
  falls back to manual placement when not provided
- DatumEditTaskPanel.on_param_changed() writes to AttachmentOffset
  and MapPathParameter for live editing instead of TODO stubs
- AttachmentSupport added to hidden properties list
- Spreadsheet links target AttachmentOffset.Base.z instead of
  Placement.Base.z for attached datums
- ZTools metadata (ZTools_Type, ZTools_Params, ZTools_SourceRefs)
  preserved for edit UI and styling
2026-01-31 08:09:53 -06:00
2026-01-24 15:16:09 -06:00
2026-01-24 15:16:09 -06:00
2026-01-24 15:16:09 -06:00
2026-01-24 15:16:09 -06:00
2026-01-26 06:34:59 -06:00
2026-01-26 06:34:59 -06:00
2026-01-24 15:16:09 -06:00
Description
No description provided
467 KiB
Languages
Python 98.6%
Makefile 1.4%