hexagon logo

Multiple parts setup

Hello.

I'm trying to create a program that can measure 24 equal parts in a fixture. I've created a

program that simply shifts the origin to measure the next part. The issue arises in the alignment,

where PC-DMIS compensates, causing me to measure the same part multiple times

instead of moving to the next one. For instance, if I apply an alignment offset in X +100,

the nominal values of auto features change. How can I prevent the alignment from altering nominal

values during execution?" I've pasted the program below. Does anybody know how

to fix this issue?

PART ALIGNMENT=GROUP/SHOWALLPARAMS=NO  (Here lies 24 x and y alignment offset)
            ENDGROUP/ID=PART ALIGNMENT
            ASSIGN/COUNTER=1
            WHILE/COUNTER <=24
              RECALL/ALIGNMENT,INTERNAL,"PART"+COUNTER
PLN1_1       =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,OUTLINE,LEAST_SQR
              THEO/<-72,117,0>,<0,0,1>
              ACTL/<-72,117,0>,<0,0,1>
              TARG/<-72,117,0>,<0,0,1>
              ANGLE VEC=<1,0,0>,RADIAL
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=YES
                NUMHITS=3,NUMROWS=1
                SPACER=12
                AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=5,DISTANCE AFTER=5,DIRECTION=ALONG FEATURE VECTOR
              SHOW HITS=YES
                HIT/BASIC,<-60,117,0>,<0,0,1>,<-60,117,0>
                HIT/BASIC,<-78,127.392,0>,<0,0,1>,<-78,127.392,0>
                HIT/BASIC,<-78,106.608,0>,<0,0,1>,<-78,106.608,0>
              ENDMEAS/
CIR1_1       =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<-72,117,-1.5>,<0,0,1>,16
              ACTL/<-72,117,-1.5>,<0,0,1>,16
              TARG/<-72,117,-1.5>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=YES
                NUMHITS=3,DEPTH=0.5,PITCH=0
                SAMPLE METHOD=SAMPLE_HITS
                SAMPLE HITS=0,SPACER=0
                AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=10,DISTANCE AFTER=10,DIRECTION=ALONG FEATURE VECTOR
                FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
              SHOW HITS=YES
                HIT/BASIC,<-64,117,-2>,<-1,0,0>,<-64,117,-2>
                HIT/BASIC,<-76,123.928,-2>,<0.5,-0.8660254,0>,<-76,123.928,-2>
                HIT/BASIC,<-76,110.072,-2>,<0.5,0.8660254,0>,<-76,110.072,-2>
              ENDMEAS/
A1_1         =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES  (Part alignment)
                ALIGNMENT/LEVEL,ZPLUS,PLN1_1
                ALIGNMENT/TRANS,ZAXIS,PLN1_1
                ALIGNMENT/TRANS,XAXIS,CIR1_1
                ALIGNMENT/TRANS,YAXIS,CIR1_1
              ALIGNMENT/END
CIR1         =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,OUT,LEAST_SQR
              THEO/<0,0,0>,<0,0,1>,28.5,0
              ACTL/<0,0,0>,<0,0,1>,28.5,0
              TARG/<0,0,0>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=YES
                NUMHITS=5,DEPTH=2,PITCH=0
                SAMPLE METHOD=SAMPLE_HITS
                SAMPLE HITS=0,SPACER=0
                AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=10,DISTANCE AFTER=10,DIRECTION=ALONG FEATURE VECTOR
                FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
              SHOW HITS=YES
                HIT/BASIC,<14.25,0,-2>,<1,0,0>,<14.25,0,-2>
                HIT/BASIC,<3.946,13.693,-2>,<0.2769186,0.9608934,0>,<3.946,13.693,-2>
                HIT/BASIC,<-11.648,8.209,-2>,<-0.8174179,0.5760451,0>,<-11.648,8.209,-2>
                HIT/BASIC,<-11.388,-8.567,-2>,<-0.7991279,-0.601161,0>,<-11.388,-8.567,-2>
                HIT/BASIC,<5.146,-13.288,-2>,<0.3611221,-0.9325185,0>,<5.146,-13.288,-2>
              ENDMEAS/
CIR2         =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<0,0,0>,<0,0,1>,19
              ACTL/<0,0,0>,<0,0,1>,19
              TARG/<0,0,0>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=YES
                NUMHITS=10,DEPTH=0.5,PITCH=0
                SAMPLE METHOD=SAMPLE_HITS
                SAMPLE HITS=0,SPACER=0
                AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=2,DISTANCE AFTER=2,DIRECTION=ALONG FEATURE VECTOR
                FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
              SHOW HITS=YES
                HIT/BASIC,<9.5,0,-0.5>,<-1,0,0>,<9.5,0,-0.5>
                HIT/BASIC,<7.686,5.584,-0.5>,<-0.809017,-0.5877853,0>,<7.686,5.584,-0.5>
                HIT/BASIC,<2.936,9.035,-0.5>,<-0.309017,-0.9510565,0>,<2.936,9.035,-0.5>
                HIT/BASIC,<-2.936,9.035,-0.5>,<0.309017,-0.9510565,0>,<-2.936,9.035,-0.5>
                HIT/BASIC,<-7.686,5.584,-0.5>,<0.809017,-0.5877853,0>,<-7.686,5.584,-0.5>
                HIT/BASIC,<-9.5,0,-0.5>,<1,0,0>,<-9.5,0,-0.5>
                HIT/BASIC,<-7.686,-5.584,-0.5>,<0.809017,0.5877853,0>,<-7.686,-5.584,-0.5>
                HIT/BASIC,<-2.936,-9.035,-0.5>,<0.309017,0.9510565,0>,<-2.936,-9.035,-0.5>
                HIT/BASIC,<2.936,-9.035,-0.5>,<-0.309017,0.9510565,0>,<2.936,-9.035,-0.5>
                HIT/BASIC,<7.686,-5.584,-0.5>,<-0.809017,0.5877853,0>,<7.686,-5.584,-0.5>
              ENDMEAS/
CIR3         =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<0,0,-1.5>,<0,0,1>,16
              ACTL/<0,0,-1.5>,<0,0,1>,16
              TARG/<0,0,-1.5>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=YES
                NUMHITS=5,DEPTH=0.5,PITCH=0
                SAMPLE METHOD=SAMPLE_HITS
                SAMPLE HITS=0,SPACER=0
                AVOIDANCE MOVE=BOTH,DISTANCE BEFORE=10,DISTANCE AFTER=10,DIRECTION=ALONG FEATURE VECTOR
                FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
              SHOW HITS=YES
                HIT/BASIC,<8,0,-2>,<-1,0,0>,<8,0,-2>
                HIT/BASIC,<2.472,7.608,-2>,<-0.309017,-0.9510565,0>,<2.472,7.608,-2>
                HIT/BASIC,<-6.472,4.702,-2>,<0.809017,-0.5877853,0>,<-6.472,4.702,-2>
                HIT/BASIC,<-6.472,-4.702,-2>,<0.809017,0.5877853,0>,<-6.472,-4.702,-2>
                HIT/BASIC,<2.472,-7.608,-2>,<-0.309017,0.9510565,0>,<2.472,-7.608,-2>
              ENDMEAS/
  DIM DIA1= LOCATION OF CIRCLE CIR1  UNITS=MM ,$
  GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
  AX    NOMINAL       MEAS       +TOL       -TOL        DEV     OUTTOL
  D       28.500     28.500      0.100      0.100      0.000      0.000 -#--
  END OF DIMENSION DIA1
  DIM DIA2= LOCATION OF CIRCLE CIR2  UNITS=MM ,$
  GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
  AX    NOMINAL       MEAS       +TOL       -TOL        DEV     OUTTOL
  D       19.000     19.000      0.050      0.000      0.000      0.000 #---
  END OF DIMENSION DIA2
  DIM DIA3= LOCATION OF CIRCLE CIR3  UNITS=MM ,$
  GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
  AX    NOMINAL       MEAS       +TOL       -TOL        DEV     OUTTOL
  D       16.000     16.000      0.100      0.100      0.000      0.000 -#--
  END OF DIMENSION DIA3
              ASSIGN/MEAS1=DIA1.D.OUTTOL
              ASSIGN/MEAS2=DIA2.D.OUTTOL
              ASSIGN/MEAS3=DIA3.D.OUTTOL
              ASSIGN/V1=MEAS1+MEAS2+MEAS3
              IF/V1==0
                GOTO/L2
              END_IF/
              IF/V1<>0
                GOTO/L1
              END_IF/
L1           =LABEL/
SNAPSHOT1    =SNAPSHOT/
              SOURCE/CAD
              TYPE/LIVE
              PRINT/REPORT,EXEC MODE=END,$
              TO_FILE=ON,AUTO=1,  OUTPUT_FORMAT/PDF,$
                RESET_REPORT=YES,AUTO OPEN=ON,$
                TO_PRINTER=OFF,COPIES=1,$
                TO_DMIS_REPORT=ON,FILE_OPTION=INDEX,FILENAME=,$
                REPORT_THEORETICALS=NONE,REPORT_FEATURE_WITH_DIMENSIONS=YES,$
                TO_EXCEL=OFF,$
                PREVIOUS_RUNS=DELETE_INSTANCES
L2           =LABEL/
              ASSIGN/COUNTER=COUNTER+1
            END_WHILE/



Code update
[edited by: Mikael at 8:24 AM (GMT -5) on Sep 16, 2024]
Parents
  • Fundamental goof: Remove the "-" from your feature names.  Use LETTERS_NUMBERS_UNDERSCORES only in feature ID's.

    Based on the code you provided above, referencing that external alignment is probably your snag.  Since the code is truncated, it's really impossible to say with confidence that it's truly your issue.

    When I program with flow-controlled loops, within the loop I always push "recall previous align", unless I am parametrically re-defining all 6dof. 
    (EX: Level to looped feature ID + [loop iteration]=  PLN1-1[COUNTER]  )

  • Thanks for your input and the tip about the underscore. The external alignment recall is not there in my actual program, i just copied some of the program in here and messed up a bit.

  • Yeah, definitely bracket your [COUNTER] for all alignments inside the loop, and recall previous.

    Post your code in full, and we can be of better help.

    For your if/goto segment, you can use ELSE in lieu of the second IF command.

    IF/V1==0
    Goto/L2
    End_if/
    Else/
    Goto/L1
    End_else/

    This has no impact on the ability for the routine to actually loop properly, but it makes the code more logical for the next guy :D

Reply
  • Yeah, definitely bracket your [COUNTER] for all alignments inside the loop, and recall previous.

    Post your code in full, and we can be of better help.

    For your if/goto segment, you can use ELSE in lieu of the second IF command.

    IF/V1==0
    Goto/L2
    End_if/
    Else/
    Goto/L1
    End_else/

    This has no impact on the ability for the routine to actually loop properly, but it makes the code more logical for the next guy :D

Children