i used to parametrically program (by hand at the control, command by command- boring) quite a few parts like this on an old biesse router.
i found the best way was to program in incremental mode from my zero point
that way i could set zero wherever i wanted and run the code (in my case a subroutine for a feature)?
move the zero re run the part feature etc.
i still use this method with some features as the feature is made of different heights, pockets, lines, etc which in cam would be spat out as one feature after another with z retract moves etc which i dont need
in mach i use g10 to set the x y cordinates of zero?