If your programs are giving you accurate data then you're not doing anything wrong my friend.
That said..
I have gotten in the habit of having alignments that constrain 6DOF recall "startup" because when you have one alignment feeding into another & into another & into another & so-on, it makes your code much harder to edit should you ever want to change those alignments. They're all chained together so one small change sends a cascade of tweaks (many unexpected ones) all through your program.
My programs are all very similar to one-another, heres my rough procedure:
-Bang out a quick pln/cir/pnt alignment or something similar to find the part. Recalling startup. (A1)
-Once part is found, find ALL of the datums in order of precedence (A1 is still recalled).
-Create all of my datum alignments one after another. Each one recalls startup. ABC..DEF..GKL..whatever they are.
If I want to edit the top of the program, the bottom of the program is safe because of this structure.
Next.....
-Recall the necessary alignment, beep that part of the item
-Recall ABC & beep that area...recall DEF & beep that area...recall GKL & beep that area...and so on and so forth.
-At the end of the program, recall necessary alignments & workplanes and output the data you need
Using this strategy not only makes your alignments easier to edit in the future due to them not being chained together...it also has the benefit of making your program more "immune" (as immune as PC DMIS can be :cool to software crashes. I have seen programs with a lot of alignments chained together & once you edit one it s*it whips the entire program & next thing you know its corrupted and doing all kinds of funky unexplainable stuff.
If your programs are giving you accurate data then you're not doing anything wrong my friend.
That said..
I have gotten in the habit of having alignments that constrain 6DOF recall "startup" because when you have one alignment feeding into another & into another & into another & so-on, it makes your code much harder to edit should you ever want to change those alignments. They're all chained together so one small change sends a cascade of tweaks (many unexpected ones) all through your program.
My programs are all very similar to one-another, heres my rough procedure:
-Bang out a quick pln/cir/pnt alignment or something similar to find the part. Recalling startup. (A1)
-Once part is found, find ALL of the datums in order of precedence (A1 is still recalled).
-Create all of my datum alignments one after another. Each one recalls startup. ABC..DEF..GKL..whatever they are.
If I want to edit the top of the program, the bottom of the program is safe because of this structure.
Next.....
-Recall the necessary alignment, beep that part of the item
-Recall ABC & beep that area...recall DEF & beep that area...recall GKL & beep that area...and so on and so forth.
-At the end of the program, recall necessary alignments & workplanes and output the data you need
Using this strategy not only makes your alignments easier to edit in the future due to them not being chained together...it also has the benefit of making your program more "immune" (as immune as PC DMIS can be :cool to software crashes. I have seen programs with a lot of alignments chained together & once you edit one it s*it whips the entire program & next thing you know its corrupted and doing all kinds of funky unexplainable stuff.
this process you describe is exactly why I hate legacy, I don't have to do any off that with GEO TOL, but to each his own. 100 ways to skin a cat as they say...
it also depends on the industry you are in. I manually align a fixture (plane-cir-cir or plane-cir-lin, etc) then do an iterative alignment on all the datums/locators, and done. Saved to an external alignment, which is recalled in the check program. AND, even though the 'designers' use (M) on datums and position, NONE of them allow datum shift (so what's the point, right?).
Point of order, if you use an ITERATIVE alignment in a program that then checks the part, that alignment gets recalculated every time you open the program, EVEN IF YOU DO NOT RUN that portion of the program, it gets recalculated every time.
That also applies to re-running features in the middle of the daisy-chain. We have a few programs that are like that, and I just run the entire program from the beginning.