hexagon logo

Long hand Iterative Alignment (without using Iterative alignment command).

Hi all,

After a discussion in another thread I thought I'd post an example of an iterative alignment done long hand (without using Iterative alignment command)

There are two reasons for this.

1) When using iterative alignment command it's necessary for the vectors of your features for each group (Level, Rotate etc) to be roughly the same. For example you cannot have three points for a level where two are approx 0,0,1 and the third is 0,0,-1.

2) I think this is a great way of understanding what's going on when you do an iterative alignment - before I saw this method it was a bit of a black box to me, this made it all clear.

It's ages since I've done it so, it might not be the most elegant method, but it gives you the general idea.

This was done on the hexblock if anyone wants to copy it and have a play.




PART1


[COLOR=#FF0000]DEFINE MANUAL POINTS[/COLOR]

A_1        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<68.91724,90.03451,[COLOR=#FF0000]13.995[/COLOR]>,<0,0,1>
            ACTL/<68.91724,90.03451,13.995>,<0,0,1>
            TARG/<68.91724,90.03451,13.995>,<0,0,1>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO
A_2        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<224.66066,26.63014,[COLOR=#FF0000]-22[/COLOR]>,<0,0,1>
            ACTL/<224.66066,26.63014,-22>,<0,0,1>
            TARG/<224.66066,26.63014,-22>,<0,0,1>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO
A_3        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<105.84726,8.49368,0>,<0,0,1>
            ACTL/<105.84726,8.49368,0>,<0,0,1>
            TARG/<105.84726,8.49368,0>,<0,0,1>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO
B_1        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<76.31905,[COLOR=#FF0000]6[/COLOR],-6.60326>,<0,-1,0>
            ACTL/<76.31905,6,-6.60326>,<0,-1,0>
            TARG/<76.31905,6,-6.60326>,<0,-1,0>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO
B_2        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<215.89615,[COLOR=#FF0000]35[/COLOR],-7.02906>,<0,-1,0>
            ACTL/<215.89615,35,-7.02906>,<0,-1,0>
            TARG/<215.89615,35,-7.02906>,<0,-1,0>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO
C_1        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
            THEO/<[COLOR=#FF0000]209[/COLOR],26.76939,-15.36707>,<1,0,0>
            ACTL/<209,26.76939,-15.36707>,<1,0,0>
            TARG/<209,26.76939,-15.36707>,<1,0,0>
            SHOW FEATURE PARAMETERS=NO
            SHOW CONTACT PARAMETERS=YES
              AVOIDANCE MOVE=BEFORE,DISTANCE=15
            SHOW HITS=NO

[COLOR=#FF0000]CONSTRUCT OFFSET FEATURES, NOTE OFFSETS COME FROM FEATURE THEOS[/COLOR]

PLN1       =FEAT/PLANE,CARTESIAN,TRIANGLE,YES
            THEO/<133.14172,41.71944,0>,<0,0,1>
            ACTL/<133.14172,41.71944,0>,<0,0,1>
            CONSTR/PLANE,OFFSET
            ID = A_1,A_2,A_3,,
            OFFSET = [COLOR=#FF0000]-13.995,22,0[/COLOR]
LIN1       =FEAT/LINE,CARTESIAN,UNBOUNDED,YES
            THEO/<76.31905,0,-6.81616>,<1,0,0>
            ACTL/<76.31905,0,-6.81616>,<1,0,0>
            CONSTR/LINE,OFFSET
            SURFACE NORMAL = <0,0,1>,MULTI POINT
            ID = B_1,B_2,,
            OFFSET =[COLOR=#FF0000] -6,-35

CREATE ALIGNMENT (3-2-1)[/COLOR]

A1         =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
            ALIGNMENT/LEVEL,ZPLUS,PLN1
            ALIGNMENT/TRANS,ZAXIS,PLN1
            ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZPLUS
            ALIGNMENT/TRANS,YAXIS,LIN1
            ALIGNMENT/TRANS,XAXIS,C_1
            ALIGNMENT/TRANS_OFFSET,XAXIS,[COLOR=#FF0000]-209[/COLOR]
            ALIGNMENT/END

[COLOR=#FF0000]SAVE IT[/COLOR]

            SAVE/ALIGNMENT,long_hand_iter.aln,MACHINETOPARTS

[COLOR=#FF0000]EVALUATE FEATURES IN AXIS THEY'RE NOT CONTROLLING (POINT TARGET RAIDUS)[/COLOR]

DIM LOC1= LOCATION OF POINT A_1  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X     68.91724    0.10000   -0.10000   68.91724    0.00000    0.00000 ----#----
Y     90.03451    0.10000   -0.10000   90.03451    0.00000    0.00000 ----#----
END OF DIMENSION LOC1
DIM LOC2= LOCATION OF POINT A_2  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X    224.66066    0.10000   -0.10000  224.66066    0.00000    0.00000 ----#----
Y     26.63014    0.10000   -0.10000   26.63014    0.00000    0.00000 ----#----
END OF DIMENSION LOC2
DIM LOC3= LOCATION OF POINT A_3  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X    105.84726    0.10000   -0.10000  105.84726    0.00000    0.00000 ----#----
Y      8.49368    0.10000   -0.10000    8.49368    0.00000    0.00000 ----#----
END OF DIMENSION LOC3
DIM LOC4= LOCATION OF POINT B_1  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X     76.31905    0.10000   -0.10000   76.31905    0.00000    0.00000 ----#----
Z     -6.60326    0.25000   -0.25000   -6.60326    0.00000    0.00000 ----#----
END OF DIMENSION LOC4
DIM LOC5= LOCATION OF POINT B_2  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X    215.89615    0.10000   -0.10000  215.89615    0.00000    0.00000 ----#----
Z     -7.02906    0.25000   -0.25000   -7.02906    0.00000    0.00000 ----#----
END OF DIMENSION LOC5
DIM LOC6= LOCATION OF POINT C_1  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
Y     26.76939    0.10000   -0.10000   26.76939    0.00000    0.00000 ----#----
Z    -15.36707    0.25000   -0.25000  -15.36707    0.00000    0.00000 ----#----
END OF DIMENSION LOC6

[COLOR=#FF0000]CHECK OUTTOL CONDITION AND SET FLAG IF OUTTOL (WILL ALMOST CERTAINLY BE SO FOR MANUAL POINTS)[/COLOR]
          
 ASSIGN/RERUN=0
            IF/LOC1.X.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC1.Y.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC2.X.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC2.Y.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC3.X.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC3.Y.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC4.X.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC4.Z.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC5.X.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC5.Z.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC6.Y.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/
            IF/LOC6.Z.OUTTOL<>0
            ASSIGN/RERUN=1
            END_IF/

[COLOR=#FF0000]ACT ON FLAG (IN EFFECT JUST GO TO THE DCC ALIGN)[/COLOR]

            IF_GOTO/RERUN==0,GOTO = ENDALN
            GOTO/DCCALN

Attached Files
  • PART2

    DCCALN     =LABEL/
    
    RECALL SAVED ALIGNMENT (WILL EITHER BE THE SAVE MANUAL ALIGNMENT OR THE PREVIOUS UTERATION OF THE FOLLOWING DCC ALIGNMENT)
    
                RECALL/ALIGNMENT,EXTERNAL,LONG_HAND_ITER
                MODE/DCC
                CLEARP/ZPLUS,50,ZPLUS,0,ON
                MOVE/CLEARPLANE
    
    REMEASURE THE POINTS (SAME POINTS AS PREVIOUS)
    
    A_4        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<68.91724,90.03451,13.995>,<0,0,1>
                ACTL/<68.91724,90.03451,13.995>,<0,0,1>
                TARG/<68.91724,90.03451,13.995>,<0,0,1>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    A_5        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<224.66066,26.63014,-22>,<0,0,1>
                ACTL/<224.66066,26.63014,-22>,<0,0,1>
                TARG/<224.66066,26.63014,-22>,<0,0,1>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    A_6        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<105.84726,8.49368,0>,<0,0,1>
                ACTL/<105.84726,8.49368,0>,<0,0,1>
                TARG/<105.84726,8.49368,0>,<0,0,1>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    B_3        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<76.31905,6,-6.60326>,<0,-1,0>
                ACTL/<76.31905,6,-6.60326>,<0,-1,0>
                TARG/<76.31905,6,-6.60326>,<0,-1,0>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    B_4        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<215.89615,35,-7.02906>,<0,-1,0>
                ACTL/<215.89615,35,-7.02906>,<0,-1,0>
                TARG/<215.89615,35,-7.02906>,<0,-1,0>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    C_2        =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
                THEO/<209,26.76939,-15.36707>,<1,0,0>
                ACTL/<209,26.76939,-15.36707>,<1,0,0>
                TARG/<209,26.76939,-15.36707>,<1,0,0>
                SNAP=NO
                SHOW FEATURE PARAMETERS=NO
                SHOW CONTACT PARAMETERS=YES
                  AVOIDANCE MOVE=BOTH,DISTANCE=15
                SHOW HITS=NO
                MOVE/CLEARPLANE
    
    CREATE OFFSET FEATURES AND ALIGN AGAIN
    
    PLN2       =FEAT/PLANE,CARTESIAN,TRIANGLE,YES
                THEO/<133.14172,41.71944,0>,<0,0,1>
                ACTL/<133.14172,41.71944,0>,<0,0,1>
                CONSTR/PLANE,OFFSET
                ID = A_4,A_5,A_6,,
                OFFSET = -13.995,22,0
    LIN2       =FEAT/LINE,CARTESIAN,UNBOUNDED,YES
                THEO/<76.31905,0,-6.81616>,<1,0,0>
                ACTL/<76.31905,0,-6.81616>,<1,0,0>
                CONSTR/LINE,OFFSET
                SURFACE NORMAL = <0,0,1>,MULTI POINT
                ID = B_3,B_4,,
                OFFSET = -6,-35
    A2         =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
                ALIGNMENT/LEVEL,ZPLUS,PLN2
                ALIGNMENT/TRANS,ZAXIS,PLN2
                ALIGNMENT/ROTATE,XPLUS,TO,LIN2,ABOUT,ZPLUS
                ALIGNMENT/TRANS,YAXIS,LIN2
                ALIGNMENT/TRANS,XAXIS,C_2
                ALIGNMENT/TRANS_OFFSET,XAXIS,-209
                ALIGNMENT/END
    
    SAVE IT
    
                SAVE/ALIGNMENT,long_hand_iter.aln,MACHINETOPARTS
    
    EVALUATE AGAIN (TIGHTER TOL FOR DCC)
    
    DIM LOC7= LOCATION OF POINT A_4  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X     68.91724    0.05000   -0.05000   68.91724    0.00000    0.00000 ----#----
    Y     90.03451    0.05000   -0.05000   90.03451    0.00000    0.00000 ----#----
    END OF DIMENSION LOC7
    DIM LOC8= LOCATION OF POINT A_5  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X    224.66066    0.05000   -0.05000  224.66066    0.00000    0.00000 ----#----
    Y     26.63014    0.05000   -0.05000   26.63014    0.00000    0.00000 ----#----
    END OF DIMENSION LOC8
    DIM LOC9= LOCATION OF POINT A_6  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X    105.84726    0.05000   -0.05000  105.84726    0.00000    0.00000 ----#----
    Y      8.49368    0.05000   -0.05000    8.49368    0.00000    0.00000 ----#----
    END OF DIMENSION LOC9
    DIM LOC10= LOCATION OF POINT B_3  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X     76.31905    0.05000   -0.05000   76.31905    0.00000    0.00000 ----#----
    Z     -6.60326    0.05000   -0.05000   -6.60326    0.00000    0.00000 ----#----
    END OF DIMENSION LOC10
    DIM LOC11= LOCATION OF POINT B_4  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    X    215.89615    0.05000   -0.05000  215.89615    0.00000    0.00000 ----#----
    Z     -7.02906    0.05000   -0.05000   -7.02906    0.00000    0.00000 ----#----
    END OF DIMENSION LOC11
    DIM LOC12= LOCATION OF POINT C_2  UNITS=MM ,$
    GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
    AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
    Y     26.76939    0.05000   -0.05000   26.76939    0.00000    0.00000 ----#----
    Z    -15.36707    0.05000   -0.05000  -15.36707    0.00000    0.00000 ----#----
    END OF DIMENSION LOC12
    
    INITIALISE VARIABLE AND CHECK OUTTOL TO SET FLAG FOR OUTTOL
    
                ASSIGN/RERUN=0
                IF/LOC7.X.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC7.Y.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC8.X.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC8.Y.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC9.X.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC9.Y.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC10.X.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC10.Z.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC11.X.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC11.Z.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC12.Y.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
                IF/LOC12.Z.OUTTOL<>0
                ASSIGN/RERUN=1
                END_IF/
    
    IF OUTTOL GO BACK AND RUN IT AGAIN
    
                IF_GOTO/RERUN==0,GOTO = ENDALN
                GOTO/DCCALN
    ENDALN     =LABEL/
                RECALL/ALIGNMENT,EXTERNAL,LONG_HAND_ITER
  • I forget to add - a bit further evaluation would be needed to evaluate the Fixture Tol if more than the minimum number of points were to be used.
  • Thanks NinjaBadger for the post. I am going to have to study it. I will get back to you with more questions.
  • Does this approach apply to a part shaped like a potato chip? I cannot call the top surface, which is a spline, a PLANE. I have CONSTRUCTED the points as a SET, which is called SCN1, but dimensioning is still a problem. I can get PROFILE OF A SURFACE to give a reasonable number in LEGACY, but it will not work in EXACTMEASURE as a DATUM. EXACTMEASURE will not recognize it as a legit datum. I don't understand all that's involved.
  • NO!

    The reason I started this thread was so as to not derail your original thread!

    As I said in that thread, you cannot use iterative alignment on a manual CMM / Arm!

    You need to use a best fit alignment.

    This thread was because there was a disagreement in your original thread about how iterative alignments work, and I made this thread to demonstrate what's going on in the black-box' of the iterative alignment command.

    With respect to defining an irregular surface (curved or stepped and NOT flat) as a datum, I've said MANY times you need to perform an alignment (either iterative or best fit, in your case it must be best fit as you're on a manual CMM) and then construct an alignment plane and then define that as a datum for use with Xact.


    I've tried to be helpful but I'm done with repeating myself. I may be wrong, but I feel I've been pretty clear on the steps you need to take.
  • Ninja...thank you for this information. I think I will try this with the Hexblock when time permits. One question, in your evaluation of the manual hits.....is there a reason you have your Z axis evaluation tolerances set a .250mm and your other axis tolerances at .1mm or was this just an oversight?
  • Interesting, thnak you,  hope to have time to try it in future. This alignment may be posibillity to iterate normal and more complex alignments than this made just of points, what do you think ? 

    maybe stupid question... why evaluate features in axis they're not controlling ?