hexagon logo

How to measure concentric circles

Hi every one.

can you give me advise to checking concentric circles as below picture.

  • This exact problem occurs for me as well, despite following the help file example to the point. I think that loops with alignments are still broken and doesn't perform as expected.
  • I also think about Subroutines function, however I don't know how to use Subroutines well, can you give me guide line (Step list) to use Subroutines in this inspection.!
  • This exact problem occurs for me as well, despite following the help file example to the point. I think that loops with alignments are still broken and doesn't perform as expected.


    When I use alignments in loops (not the case of multiple parts !), I always save the alignment as an external one at the end of the loop, and recall it at the start (To do it, I have to play with alignment name to racall the previous alignment when the loop ID=1, and the last one when loop ID>1).
    Hope this can help...
  • Here basic example, which only create a generic point.
    In your case, the part alignment must be saved as an external one in the sub.

    1st the part program
    STARTUP  =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                MODE/MANUAL
                PREHIT/3
                RETRACT/3
                CHECK/10,1
                MOVESPEED/ 120
                FLY/ON
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, , 
                LOADPROBE/LSPX1_L50_D5
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                SAVE/ALIGNMENT,STARTUP1.aln,MACHINETOPARTS
    [COLOR=#FF0000] SUBROUTINE/TEST SSPROG,[/COLOR]
                     = 
                RECALL/ALIGNMENT,EXTERNAL,STARTUP1
    F1         =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                NOM/XYZ,<0,0,0>,$
                MEAS/XYZ,<0,0,0>,$
                NOM/IJK,<0,0,1>,$
                MEAS/IJK,<0,0,1>
    [COLOR=#FF0000]ENDSUB/[/COLOR]


    2nd the multiple parts program
    STARTUP  =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                MODE/MANUAL
                PREHIT/3
                RETRACT/3
                CHECK/10,1
                MOVESPEED/ 120
                FLY/ON
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, , 
                LOADPROBE/LSPX1_L50_D5
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                ASSIGN/V2=1
                DO/
                RECALL/ALIGNMENT,EXTERNAL,STARTUP1
    V1         =LOOP/START,ID=YES,NUMBER=3,START=1,SKIP=,
                  OFFSET:XAXIS=0,YAXIS=0,ZAXIS=0,ANGLE=0
                  IF/V1*V2==1
                    RECALL/ALIGNMENT,INTERNAL,STARTUP
                    SAVE/ALIGNMENT,STARTUP1.aln,MACHINETOPARTS
                  END_IF/
                  RECALL/ALIGNMENT,EXTERNAL,STARTUP1
    CS1          =CALLSUB/TEST SSPROG,D:\Données PCDMIS\Programmes\test sous-prog 1.PRG:,,
    REF1         =ALIGNMENT/START,RECALL:STARTUP1,LIST=YES
                    ALIGNMENT/TRANS_OFFSET,XAXIS,10
                  ALIGNMENT/END
                  SAVE/ALIGNMENT,STARTUP1.aln,MACHINETOPARTS
                LOOP/END
                RECALL/ALIGNMENT,INTERNAL,STARTUP
                SAVE/ALIGNMENT,STARTUP1.aln,MACHINETOPARTS
    REF2       =ALIGNMENT/START,RECALL:STARTUP1,LIST=YES
                  ALIGNMENT/TRANS_OFFSET,YAXIS,30
                  ALIGNMENT/TRANS_OFFSET,XAXIS,-20
                ALIGNMENT/END
                SAVE/ALIGNMENT,STARTUP1.aln,MACHINETOPARTS
                ASSIGN/V2=V2+1
                UNTIL/V2==4
  • I have successfully had loops inside of loops. i start with a manual alignment then dcc alignment on the fixture, or in this case the sheet the parts are made on, (this is outside the loops)
    outside loop-
    manual alignment
    dcc alignment
    loop 2 shift in y
    loop 1 shift in x
    inside the loop -
    dcc align to the part being measured - recalling the dcc alignment outside the loop
    measure part
    dimension part
    end loop 1
    end loop 2

    below is a cut down version of one of our parts that get made out of a sheet of plastic 5 parts by 6 parts

    PLN1 =FEAT/PLANE,CARTESIAN,TRIANGLE
    THEO/<-1.0734,-1.8814,0.2>,<0,0,1>
    ACTL/<2.6488,4.1872,-29.6746>,<-0.0008808,-0.0003019,0.9999996>
    MEAS/PLANE,3
    HIT/BASIC,NORMAL,<-0.6958,-4.3291,0.2>,<0,0,1>,<3.04,1.7491,-29.675>,USE THEO=YES
    HIT/BASIC,NORMAL,<-0.2143,-0.608,0.2>,<0,0,1>,<3.5505,5.4063,-29.6734>,USE THEO=YES
    HIT/BASIC,NORMAL,<-2.31,-0.7069,0.2>,<0,0,1>,<1.3558,5.4063,-29.6754>,USE THEO=YES
    ENDMEAS/
    A3 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/END
    LIN1 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<-2.59,-0.3814,0.2>,<0,-1,0>,<-1,0,0>,<0,0,1>,3.5
    ACTL/<1.123,5.3968,0.2>,<-0.0004755,-0.9999999,0>,<-0.9999999,0.0004755,0>,<0,0,1>,3.6291
    TARG/<-2.59,-0.3814,0.2>,<0,-1,0>,<-1,0,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=BOTH,DISTANCE=0.1575
    SHOW HITS=NO
    A4 =ALIGNMENT/START,RECALL:A3,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/ROTATE,YMINUS,TO,LIN1,ABOUT,ZPLUS
    ALIGNMENT/TRANS,XAXIS,LIN1
    ALIGNMENT/END
    LIN2 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<-2.0355,-4.761,0.2>,<1,0,0>,<0,-1,0>,<0,0,1>,1.61
    ACTL/<0.3947,1.2457,0.2>,<1,-0.0000998,0>,<-0.0000998,-1,0>,<0,0,1>,1.8009
    TARG/<-2.0355,-4.761,0.2>,<1,0,0>,<0,-1,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=BOTH,DISTANCE=0.1575
    SHOW HITS=NO
    A1 =ALIGNMENT/START,RECALL:A4,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/ROTATE,YMINUS,TO,LIN1,ABOUT,ZPLUS
    ALIGNMENT/TRANS,YAXIS,LIN2
    ALIGNMENT/TRANS,XAXIS,LIN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/END
    L2_START_HERE=LABEL/
    V3 =LOOP/START,ID=YES,NUMBER=6,START=1,SKIP=,,
    OFFSET:XAXIS=0,YAXIS=4.961,ZAXIS=0,ANGLE=0
    V2 =LOOP/START,ID=YES,NUMBER=5,START=1,SKIP=,,
    OFFSET:XAXIS=2.79,YAXIS=0,ZAXIS=0,ANGLE=0
    MODE/DCC
    CLEARP/ZPLUS,0.25,ZPLUS,0.25,ON
    PLN2 =FEAT/PLANE,CARTESIAN,TRIANGLE
    THEO/<1.13,1.6808,0>,<0,0,1>
    ACTL/<1.13,1.6807,0.0004>,<0.0010088,0.0006329,0.999999 3>
    MEAS/PLANE,3
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<1.9245,0.5157,0>,<0,0,1>,<1.9246,0.5 156,0.0004>,USE THEO=YES
    HIT/BASIC,NORMAL,<0.7223,0.3128,0>,<0,0,1>,<0.7221,0.3 128,0.0017>,USE THEO=YES
    HIT/BASIC,NORMAL,<0.7432,4.2138,0>,<0,0,1>,<0.7433,4.2 138,-0.0008>,USE THEO=YES
    ENDMEAS/
    MOVE/CLEARPLANE
    LIN3 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<0,4.2641,0>,<0,-1,0>,<-1,0,0>,<0,0,1>,3.5
    ACTL/<0.0001,4.264,0>,<-0.000026,-1,0>,<-1,0.000026,0>,<0,0,1>,3.5
    TARG/<0,4.2641,0>,<0,-1,0>,<-1,0,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=NO,DISTANCE=0.1575
    SHOW HITS=NO
    MOVE/CLEARPLANE
    LIN4 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<0.6243,0,0>,<1,0,0>,<0,-1,0>,<0,0,1>,1.55
    ACTL/<0.6243,0.0003,0>,<1,-0.0001078,0>,<-0.0001078,-1,0>,<0,0,1>,1.5502
    TARG/<0.6243,0,0>,<1,0,0>,<0,-1,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=NO,DISTANCE=0.1575
    SHOW HITS=NO
    MOVE/CLEARPLANE
    A5 =ALIGNMENT/START,RECALL:A1,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN2
    ALIGNMENT/TRANS,ZAXIS,PLN2
    ALIGNMENT/ROTATE,YMINUS,TO,LIN3,ABOUT,ZPLUS
    ALIGNMENT/TRANS,XAXIS,LIN3
    ALIGNMENT/TRANS,YAXIS,LIN4
    ALIGNMENT/END
    LIN9 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<2.3707,0.0307,0>,<0.7071068,0.7071068,0>,<0.70710 68,-0.7071068,0>,<0,0,1>,0.2665
    ACTL/<2.3713,0.0304,0>,<0.7057502,0.7084607,0>,<0.70846 07,-0.7057502,0>,<0,0,1>,0.2665
    TARG/<2.3707,0.0307,0>,<0.7071068,0.7071068,0>,<0.70710 68,-0.7071068,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=NO,DISTANCE=0.1575
    SHOW HITS=NO
    MOVE/CLEARPLANE
    LIN7 =FEAT/CONTACT/LINE/DEFAULT,CARTESIAN,UNBOUNDED
    THEO/<2.59,0.4384,0>,<0,1,0>,<1,0,0>,<0,0,1>,3.757
    ACTL/<2.5917,0.4385,0>,<-0.0000357,1,0>,<1,0.0000357,0>,<0,0,1>,3.757
    TARG/<2.59,0.4384,0>,<0,1,0>,<1,0,0>,<0,0,1>
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    NUMHITS=3,DEPTH=0.0787
    SAMPLE METHOD=SAMPLE_HITS
    SAMPLE HITS=0,SPACER=0,INDENT1=0,INDENT2=0
    AVOIDANCE MOVE=NO,DISTANCE=0.1575
    SHOW HITS=NO
    MOVE/CLEARPLANE
    DIM 27= 2D DISTANCE FROM LINE LIN3 TO LINE LIN7 PAR TO XAXIS,NO_RADIUS UNITS=IN,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH
    AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
    M 2.5900 0.0050 0.0050 2.5917 0.0017 0.0000 -----#---
    PRINT/REPORT,EXEC MODE=END,$
    TO_FILE=ON,AUTO=28,AUTO OPEN REPORT=OFF,$
    TO_PRINTER=OFF,COPIES=1,$
    TO_DMIS_REPORT=OFF,FILE_OPTION=INDEX,FILENAME=,$
    REPORT_THEORETICALS=NONE,REPORT_FEATURE_WITH_DIMEN SIONS=NO,$
    TO_EXCEL_OUTPUT=ON,AUTO=3,FILENAME=C:\Users\Public \Documents\Hexagon\PC-DMIS\2018 R1\GDM\3000134\3000134 OP 1.XLSX,AUTO OPEN REPORT=OFF,$
    PREVIOUS_RUNS=DELETE_INSTANCES
    LOOP/END
    LOOP/END
    
  • Thank you for advised, I use 1 loop for line measure angle 15deg and 2 do/until for Pitch X and Pitch Y.

    Now run OK, thank you.