hexagon logo

Find max, min dia for 'N' numbers of holes

we are using following code to find max and min dia among 93 holes inspected
can someone suggest any alternate way?
ASSIGN/COUNT=0
ASSIGN/NUM_OF_DIM=93
ASSIGN/MMPROF1=0
ASSIGN/MMPROF2=0
ASSIGN/MAX_DIM=0
ASSIGN/MIN_DIM=0
ASSIGN/MAX_PROF=0
ASSIGN/MIN_PROF=0
DO/
ASSIGN/COUNT=COUNT+1
ASSIGN/ID="LOC"+COUNT
ASSIGN/MMPROF1[COUNT]=ID.D.MEAS
ASSIGN/MMPROF2[COUNT]=MMPROF1[COUNT]
UNTIL/COUNT==NUM_OF_DIM
ASSIGN/MAX_DIM=MAXINDEX(MMPROF2)
ASSIGN/MIN_DIM=MININDEX(MMPROF2)
ASSIGN/MAX_PROF=MMPROF2[MAX_DIM]
ASSIGN/MIN_PROF=MMPROF2[MIN_DIM]
F1 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
NOM/XYZ,<1,0,0>,$
MEAS/XYZ,<MAX_PROF,0,0>,$
NOM/IJK,<0,0,1>,$
MEAS/IJK,<0,0,1>
DIM LOC94= LOCATION OF POINT F1 UNITS=IN ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
X 1.0000 0.0200 0.0200 1.0000 0.0000 0.0000 --#--
END OF DIMENSION LOC94
F2 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
NOM/XYZ,<1,0,0>,$
MEAS/XYZ,<MIN_PROF,0,0>,$
NOM/IJK,<0,0,1>,$
MEAS/IJK,<0,0,1>
DIM LOC95= LOCATION OF POINT F2 UNITS=IN ,$
GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
X 1.0000 0.0200 0.0200 1.0000 0.0000 0.0000 --#--
END OF DIMENSION LOC95
  • You have to replace MAXINDEX by MAXINDICES, and use index in MAXINDICES :
    V1 =LOOP/START,ID=YES,NUMBER=93,START=1,SKIP=,
    OFFSET:XAXIS=0,YAXIS=0,ZAXIS=0,ANGLE=0
    ASSIGN/V2="CIR"+V1
    ASSIGN/V3[V1]=V2.D
    LOOP/END
    ASSIGN/V6=MAXINDICES(V3)
    ASSIGN/CIRC_MAX_1="CIR"+V6[1]
    ASSIGN/CIRC_MAX_2="CIR"+V6[2]
    ASSIGN/CIRC_MIN="CIR"+V6[93]
    DIM LOC94= LOCATION OF CIRCLE CIRC_MAX_1 UNITS=IN ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
    AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
    D 1.0000 0.0200 0.0200 1.0000 0.0000 0.0000 --#--
    END OF DIMENSION LOC94
    DIM LOC95= LOCATION OF CIRCLE CIRC_MAX_2 UNITS=IN ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
    AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
    D 1.0000 0.0200 0.0200 1.0000 0.0000 0.0000 --#--
    END OF DIMENSION LOC95
    DIM LOC96= LOCATION OF CIRCLE CIRC_MIN UNITS=IN ,$
    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
    AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
    D 1.0000 0.0200 0.0200 1.0000 0.0000 0.0000 --#--
    END OF DIMENSION LOC96
  • Hey, I hope it's not to bad for my post 6000 Wink
  • Thanks Slight smile
    Congratulations on your milestone!
  • Do you know if this will work for the GeoMeas true positions? We are using 2021.2 right now.
  • Do you know if this will work for the GeoMeas true positions? We are using 2021.2 right now.


    I don't know, because I don't use this version.
    But i's easy to give it a try... !
  • Do you know if this will work for the GeoMeas true positions? We are using 2021.2 right now.


    good Day,

    if you have one feature in your "GeoMeas true positions" than this works like this:
    FCFLOC1 =GEOMETRIC_TOLERANCE/STANDARD=ISO 1101,SHOWEXPANDED=NO,
    SIZE/NOMINAL=45,TOLERANCE SPECIFICATION MODE=NOMINAL_WITH_DEVIATIONS,
    UPPER TOLERANCE=0.1,LOWER TOLERANCE=-0.1,
    SEGMENT_1,POSITION,DIAMETER,0.1,__,A,B,C,
    ADD
    FEATURES/D_45P7_1,,
    
    FCFLOC2 =GEOMETRIC_TOLERANCE/STANDARD=ISO 1101,SHOWEXPANDED=NO,
    SIZE/NOMINAL=45,TOLERANCE SPECIFICATION MODE=NOMINAL_WITH_DEVIATIONS,
    UPPER TOLERANCE=0.1,LOWER TOLERANCE=-0.1,
    SEGMENT_1,POSITION,DIAMETER,0.1,__,A,B,C,
    ADD
    FEATURES/D_45P7_2,,
    
    FCFLOC3 =GEOMETRIC_TOLERANCE/STANDARD=ISO 1101,SHOWEXPANDED=NO,
    SIZE/NOMINAL=45,TOLERANCE SPECIFICATION MODE=NOMINAL_WITH_DEVIATIONS,
    UPPER TOLERANCE=0.1,LOWER TOLERANCE=-0.1,
    SEGMENT_1,POSITION,DIAMETER,0.1,__,A,B,C,
    ADD
    FEATURES/D_45P7_3,,
    
    V1 =LOOP/START,ID=YES,NUMBER=3,START=1,SKIP=,
    OFFSET:XAXIS=0,YAXIS=0,ZAXIS=0,ANGLE=0
    
      ASSIGN/V2="FCFLOC"+V1
      ASSIGN/V3[V1]=V2.SEGMENT[1].FEATURE[1].MEAS
    
    LOOP/END
    
    ASSIGN/VMAX=V3[MAXINDEX(V3)]
    ASSIGN/VMIN=V3[MININDEX(V3)]
    


    be advised that this not work if you have multi features in one "GeoMeas true positions"
    because you have to go trougth each .FEATURE[n ]
    this can only be archived with two loops

    i dont know the key word that gives me the count for .FEATURE[n ] at the moment,
    maybe someone knows it and can add the second loop to this example
  • oh thats pretty odd

    i have tryed to write a code for this problem but than there is this bug:

    this works pretty good
    ASSIGN/V4=FCFLOC1.SEGMENT[1].FEATURE[ 2 ].MEAS
    


    but this gives me an error
    ASSIGN/V5=2
    ASSIGN/V4=FCFLOC1.SEGMENT[1].FEATURE[ V5 ].MEAS
    


    thats a bug for sure,
    but without this, "... work for the GeoMeas true positions?" cant be fully archived
  • Hello guys,

    i have updated the script,
    it works now with every Geo Toleranze (with multi Features or not)
    please note that this will not work with FCF or older (can be added if needed)

    example:
    FCFLOC1 =GEOMETRIC_TOLERANCE/STANDARD=ISO 1101,SHOWEXPANDED=NO,
    SIZE/NOMINAL=45,TOLERANCE SPECIFICATION MODE=NOMINAL_WITH_DEVIATIONS,
    UPPER TOLERANCE=0.1,LOWER TOLERANCE=-0.1,
    SEGMENT_1,POSITION,DIAMETER,0.1,__,A,B,C,
    ADD
    FEATURES/D_45P7_1,D_45P7_2,D_45P7_3,D_45P7_4,,
    
    FCFLOC2 =GEOMETRIC_TOLERANCE/STANDARD=ISO 1101,SHOWEXPANDED=NO,
    SIZE/NOMINAL=45,TOLERANCE SPECIFICATION MODE=NOMINAL_WITH_DEVIATIONS,
    UPPER TOLERANCE=0.1,LOWER TOLERANCE=-0.1,
    SEGMENT_1,POSITION,DIAMETER,0.1,__,A,B,C,
    ADD
    FEATURES/D_45P7_5,D_45P7_6,D_45P7_7,D_45P7_8,,
    $$ NO,
    
    ASSIGN/VMAX=0
    ASSIGN/VMIN=0
    
    CS1 =SCRIPT/FILENAME= C:\USERS\QS\DESKTOP\DMISMAXMIN.BAS
    FUNCTION/Main,SHOW=NO,ARG1="FCFLOC",ARG2="VMAX",ARG3="VMIN" ,,
    STARTSCRIPT/
    
    $$ YES,
    
    "vmax = "+VMAX
    "vmin = "+VMIN
    


    (file must be renamed to *.bas to work)