Looping issues with Nominals changing as exectued and alarming

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Looping issues with Nominals changing as exectued and alarming

    Hey Guru's. I know, this thread has been beaten to death. But, I'm still not understanding the issues I am having with looping anything.
    1st - I want to loop 15 parts back and 15 parts over with no errors. I can't seem to ever make this work.
    2nd - I have had many techs having their own opinions on these. and I am to the point of who is correct.
    Some have said it has to do with my F5 settings. Some, the alignments. call the active alignment and run that way. Others are add in logic to know how many parts
    3- All I care about is getting these to run over and over with not having to reset measured values back to nominal.
    4- What WOULD be the best, foolproof way to approach this?. I am going to guess, add an external alignment of the fixture,offset and program from there?.
    I am adding some code and the program for all to critic. Give it your best shot. I can take it.
    I would like to just use the insert loop, put in and offset and go. Maybe you guys can see something I'm missing here. I would have thought that looping (nested) would be just as easy as this but, with The Demon...nope. Running 2020 R1 (SP8).
    ANY feedback would be greatly appreciated This si not the full program but, you should get it......

    TARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
    ALIGNMENT/END
    MODE/MANUAL
    PREHIT/3
    RETRACT/3
    MOVESPEED/ 500
    MANRETRACT/1
    FORMAT/TEXT,OPTIONS, ,HEADINGS, , ;NOM,TOL,MEAS,DEV,OUTTOL,MAXMIN,
    LOADPROBE/TIP 2
    TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
    C3 =COMMENT/YESNO,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
    **Do you want to SKIP manual Align?**
    IF_GOTO/C3.INPUT=="YES",GOTO = SKIP_MANUAL
    COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
    ***abc align***
    MODE/DCC
    MOVE/POINT,NORMAL,<665.649,12.275,-336.245>
    MODE/MANUAL
    PNT20 =FEAT/POINT,CARTESIAN
    THEO/<-11.139,1.931,0>,<0,0,1>
    ACTL/<654.962,12.261,-837.996>,<-0.0775097,0.0339343,0.9964139>
    MEAS/POINT,1,WORKPLANE
    HIT/BASIC,NORMAL,<-11.139,1.931,0>,<0,0,1>,<654.962,12.261,-837.996>,USE THEO=YES
    ENDMEAS/
    PNT21 =FEAT/POINT,CARTESIAN
    THEO/<-10.885,-1.919,0>,<0,0,1>
    ACTL/<654.966,9.475,-837.997>,<-0.0864873,0.0056517,0.9962369>
    MEAS/POINT,1,WORKPLANE
    HIT/BASIC,NORMAL,<-10.885,-1.919,0>,<0,0,1>,<654.966,9.475,-837.997>,USE THEO=YES
    ENDMEAS/
    PNT22 =FEAT/POINT,CARTESIAN
    THEO/<10.264,0.158,0>,<0,0,1>
    ACTL/<677.336,10.334,-837.941>,<-0.1556102,0.0202396,0.9876112>
    MEAS/POINT,1,WORKPLANE
    HIT/BASIC,NORMAL,<10.264,0.158,0>,<0,0,1>,<677.336,10. 334,-837.941>,USE THEO=YES
    ENDMEAS/
    PLN1 =FEAT/PLANE,CARTESIAN,TRIANGLE,NO,LEAST_SQR
    THEO/<-3.92,0.057,0>,<0,0,1>
    ACTL/<662.37,10.7,-837.982>,<-0.0022903,-0.000287,0.9999973>
    CONSTR/PLANE,BFRE,PNT20,PNT21,PNT22,,
    OUTLIER_REMOVAL/OFF,3
    FILTER/OFF,WAVELENGTH=0
    LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED
    THEO/<-4.001,-5.63,5.305>,<1,0.0002357,0>
    ACTL/<661.573,5.994,-831.546>,<0.9999769,-0.0067902,0>
    MEAS/LINE,2,ZPLUS
    HIT/BASIC,NORMAL,<-4.001,-5.63,5.251>,<0.0002357,-1,0>,<661.573,5.994,-831.545>,USE THEO=YES
    HIT/BASIC,NORMAL,<3.861,-5.629,5.358>,<0.0002357,-1,0>,<670.284,5.935,-831.548>,USE THEO=YES
    ENDMEAS/
    PNT23 =FEAT/POINT,CARTESIAN
    THEO/<-8.876,0.51,5.531>,<-0.9998477,0,0.0174524>
    ACTL/<657.343,12.044,-831.512>,<-0.9971782,-0.0210141,-0.0720692>
    MEAS/POINT,1,WORKPLANE
    HIT/BASIC,NORMAL,<-8.876,0.51,5.531>,<-0.9998477,0,0.0174524>,<657.343,12.044,-831.512>,USE THEO=YES
    ENDMEAS/
    SKIP_MANUAL=LABEL/
    A1 =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN1
    ALIGNMENT/TRANS,ZAXIS,PLN1
    ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZPLUS
    ALIGNMENT/TRANS,XAXIS,PNT23
    ALIGNMENT/TRANS,YAXIS,LIN1
    ALIGNMENT/END
    MODE/DCC
    CLEARP/ZPLUS,508,ZPLUS,0,ON
    MOVE/CLEARPLANE
    FLY/ON
    FASTPROBEMODE/ON
    PREHIT/2
    RETRACT/2
    STATS/ON,DATAPAGE,$
    DIRECTORY=,$
    READ=0,WRITE=0,MEMPAGES=0,DIMENSION NAME,CONTROLCALC OFF,$
    STATS/END
    MOVE/CLEARPLANE
    V1 =LOOP/START,ID=NO,NUMBER=3,START=1,SKIP=,
    OFFSET:XAXIS=0,YAXIS=40.568,ZAXIS=0,ANGLE=0
    ROUGH A =FEAT/PLANE,CARTESIAN,TRIANGLE *****Notice the changes on the very 1st line here, the hit basic vs. theo. got changed after doing manual align***
    THEO/<-3.662,0.22,0>,<0,0,1>
    ACTL/<-3.602,0.26,0>,<0,0,1>
    MEAS/PLANE,3
    HIT/BASIC,NORMAL,<-10.86,2.394,0>,<0,0,1>,<-11.074,2.282,-2.408>,USE THEO=YES
    HIT/BASIC,NORMAL,<-10.661,-1.698,0>,<0,0,1>,<-10.856,-1.81,-2.408>,USE THEO=YES
    CLEARP/ZPLUS,25,ZPLUS,0,ON
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<10.535,-0.035,0>,<0,0,1>,<10.59,-0.054,0>,USE THEO=YES
    ENDMEAS/
    A2 =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(A1),LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,ROUGH A
    ALIGNMENT/TRANS,ZAXIS,ROUGH A
    ALIGNMENT/END
    B_FRONT =FEAT/LINE,CARTESIAN,UNBOUNDED
    THEO/<-6.129,-5.706,1>,<1,0,0>
    ACTL/<-6.087,-5.661,1.017>,<0.9999972,-0.0020168,-0.0012138>
    MEAS/LINE,2,ZPLUS
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<-6.129,-5.706,1>,<0,-1,0>,<-6.087,-5.661,1.017>,USE THEO=YES
    HIT/BASIC,NORMAL,<5.577,-5.706,1>,<0,-1,0>,<5.613,-5.685,1.003>,USE THEO=YES
    ENDMEAS/
    C_RGHT =FEAT/LINE,CARTESIAN,UNBOUNDED
    THEO/<8.948,-2.904,1>,<-0.0000867,1,0>
    ACTL/<8.905,-2.914,1.009>,<0.0032441,0.9999928,0.0019745>
    MEAS/LINE,2,ZPLUS
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<8.948,-2.904,1>,<1,0,0>,<8.905,-2.914,1.007>,USE THEO=YES
    HIT/BASIC,NORMAL,<8.947,2.99,1>,<1,0,0>,<8.924,2.979,1 .022>,USE THEO=YES
    ENDMEAS/
    B_BACK =FEAT/LINE,CARTESIAN,UNBOUNDED
    THEO/<-6.174,5.706,1>,<1,0,0>
    ACTL/<-6.088,5.657,1.043>,<0.9999972,0.0020168,-0.0012058>
    MEAS/LINE,2,ZPLUS
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<-6.174,5.706,1>,<0,1,0>,<-6.088,5.657,1.042>,USE THEO=YES
    HIT/BASIC,NORMAL,<5.941,5.706,1>,<0,1,0>,<6.025,5.682, 1.03>,USE THEO=YES
    ENDMEAS/
    C_LEFT =FEAT/LINE,CARTESIAN,UNBOUNDED
    THEO/<-8.948,-2.737,1>,<0,1,0>
    ACTL/<-8.907,-2.672,1.026>,<-0.0019965,0.999996,0.0019808>
    MEAS/LINE,2,ZPLUS
    MOVE/CLEARPLANE
    HIT/BASIC,NORMAL,<-8.948,-2.737,1>,<-1,0,0>,<-8.907,-2.672,1.026>,USE THEO=YES
    HIT/BASIC,NORMAL,<-8.948,2.869,1>,<-1,0,0>,<-8.918,2.934,1.037>,USE THEO=YES
    ENDMEAS/
    DATUM B =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
    THEO/<-6.151,0,1>,<1,0,0>
    ACTL/<-6.087,-0.002,1.03>,<0.9999993,0,-0.0012098>
    CONSTR/LINE,MID,B_FRONT,B_BACK
    DATUM C =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
    THEO/<0,-2.821,1>,<0,1,0>
    ACTL/<-0.001,-2.793,1.018>,<0.0006238,0.9999978,0.0019776>
    CONSTR/LINE,MID,C_RGHT,C_LEFT
    BC =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(A2),LIST=YES
    ALIGNMENT/ROTATE,XPLUS,TO,DATUM B,ABOUT,ZPLUS
    ALIGNMENT/TRANS,YAXIS,DATUM B
    ALIGNMENT/TRANS,XAXIS,DATUM C
    ALIGNMENT/END
    MOVE/CLEARPLANE
    PREHIT/1
    RETRACT/1
    A4 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<8.397,-2.946,0>,<0,0,1>
    ACTL/<8.437,-2.956,0.205>,<0.0012024,-0.0019829,0.9999973>
    TARG/<8.397,-2.946,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A5 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<8.334,-8.49,0>,<0,0,1>
    ACTL/<8.358,-8.501,0.159>,<0.0012024,-0.0019829,0.9999973>
    TARG/<8.334,-8.49,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A6 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<1.202,-8.231,0>,<0,0,1>
    ACTL/<1.22,-8.21,-0.016>,<0.0012024,-0.0019829,0.9999973>
    TARG/<1.202,-8.231,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A7 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<1.332,-5.525,0>,<0,0,1>
    ACTL/<1.363,-5.505,0.002>,<0.0012024,-0.0019829,0.9999973>
    TARG/<1.332,-5.525,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A8 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<1.265,-3.017,0>,<0,0,1>
    ACTL/<1.313,-2.998,0.036>,<0.0012024,-0.0019829,0.9999973>
    TARG/<1.265,-3.017,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    MOVE/CLEARPLANE
    A9 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-19.469,-2.903,0>,<0,0,1>
    ACTL/<-19.424,-2.797,0.04>,<0.0012024,-0.0019829,0.9999973>
    TARG/<-19.469,-2.903,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A10 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-19.27,-5.741,0>,<0,0,1>
    ACTL/<-19.24,-5.638,0.016>,<0.0012024,-0.0019829,0.9999973>
    TARG/<-19.27,-5.741,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A11 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-19.532,-8.051,0>,<0,0,1>
    ACTL/<-19.503,-7.948,0.044>,<0.0012024,-0.0019829,0.9999973>
    TARG/<-19.532,-8.051,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A12 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-26.267,-8.453,0>,<0,0,1>
    ACTL/<-26.27,-8.332,0.212>,<0.0012024,-0.0019829,0.9999973>
    TARG/<-26.267,-8.453,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    A13 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-26.138,-2.843,0>,<0,0,1>
    ACTL/<-26.092,-2.706,0.234>,<0.0012024,-0.0019829,0.9999973>
    TARG/<-26.138,-2.843,0>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=YES
    AVOIDANCE MOVE=NO,DISTANCE=5
    SHOW HITS=NO
    DATUM A =FEAT/PLANE,CARTESIAN,OUTLINE,NO
    THEO/<-9.015,-5.62,0>,<0,0,1>
    ACTL/<-8.984,-5.56,0.209>,<0.0008228,-0.0039821,0.9999917>
    CONSTR/PLANE,PRIMARY_DATUM,A4,A5,A6,A7,A8,A9,A10,A11,A12, A13,,
    MATH_TYPE/CONSTRAINED_L1,BF
    ABC =ALIGNMENT/START,RECALL:USE_ACTIVE_ALIGNMENT(BC),LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,DATUM A
    ALIGNMENT/TRANS,ZAXIS,DATUM A
    ALIGNMENT/END
    DATDEF/A,FEATURES=DATUM A,,
    DATDEF/B,FEATURES=DATUM B,,
    DATDEF/C,FEATURES=DATUM C,,
    MOVE/CLEARPLANE
    TIP/T1A10B-180, SHANKIJK=0.006, -0.174, 0.985, ANGLE=-177.924
    MOVE/CLEARPLANE

    EXCEL_FORM1 =EXCELFORMREPORT/TEMPLATE=PPAP, TYPE=XLSX
    RESULT FOLDER/C:\Users\Public\Documents\Hexagon\PC-DMIS\2020 R1\ExcelFormReport\Results
    LOOP/END

  • #2
    There are few ways to handle this, here's how I do it:

    While loop at the top to handle serial number.

    Program itself is while looped to offset per a generic point that established a new origin for each part position.

    This is my template prg. All you have to do is tweak to suit your needs. Add mroe or less insp stations & change the origin point to something you can work with. I have a fixture plate so I made make my alignments relative to that fixture's "zero hole".

    MUST lock down the "THEO vales with a "+0" or a "*1" or stuff will move around on you "like you've experienced).

    Code:
    GROUP_COUNTPROMPT_AND_SERIALNUMBER=GROUP/SHOWALLPARAMS=YES
    COUNT_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    How many parts are you inspecting?
    ASSIGN/TOTAL_PARTS=COUNT_PROMPT.INPUT
    ASSIGN/SER=0
    WHILE/SER<TOTAL_PARTS
    ASSIGN/SER=SER+1
    SER_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    Please enter the Serial Number of the
    "part at FIXTURE POSITION# "+SER+"."
    RUN_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
    Please enter the Run Number of the
    "part at FIXTURE POSITION# "+SER+"."
    ASSIGN/SER_NUM[SER]=SER_PROMPT.INPUT
    ASSIGN/RUN_NUM[SER]=RUN_PROMPT.INPUT
    END_WHILE/
    ENDGROUP/ID=GROUP_COUNTPROMPT_AND_SERIALNUMBER
    RECALL/ALIGNMENT,EXTERNAL,FIXT_ALN_FAKE
    ASSIGN/CURR_POS=0
    DO/
    ASSIGN/CURR_POS=CURR_POS+1
    COMMENT/REPT,
    "Serial Number: "+SER_NUM[CURR_POS]
    COMMENT/REPT,
    "Run Number: "+RUN_NUM[CURR_POS]
    ASSIGN/PROG_NAME=GETPROGRAMINFO ("PARTNAME")
    ASSIGN/REPORT_NAME="C:\\USERS\\XXXXXX\\DESKTOP\\___PALLET _PROGRAM_SAMPLE\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"-.PDF"
    IF/CURR_POS==1
    ASSIGN/FIXT_X=0
    ASSIGN/FIXT_Y=0
    ASSIGN/FIXT_Z=0
    END_IF/
    IF/CURR_POS==2
    ASSIGN/FIXT_X=6
    ASSIGN/FIXT_Y=0
    ASSIGN/FIXT_Z=0
    END_IF/
    IF/CURR_POS==3
    ASSIGN/FIXT_X=12
    ASSIGN/FIXT_Y=0
    ASSIGN/FIXT_Z=0
    END_IF/
    IF/CURR_POS==4
    ASSIGN/FIXT_X=0
    ASSIGN/FIXT_Y=6
    ASSIGN/FIXT_Z=0
    END_IF/
    IF/CURR_POS==5
    ASSIGN/FIXT_X=6
    ASSIGN/FIXT_Y=6
    ASSIGN/FIXT_Z=0
    END_IF/
    IF/CURR_POS==6
    ASSIGN/FIXT_X=12
    ASSIGN/FIXT_Y=6
    ASSIGN/FIXT_Z=0
    END_IF/
    PO_PNT =GENERIC/POINT,DEPENDENT,CARTESIAN,$
    NOM/XYZ,<0+0,0+0,0+0>,$
    MEAS/XYZ,<FIXT_X,FIXT_Y,FIXT_Z>,$
    NOM/IJK,<0+0,0+0,0+0>,$
    MEAS/IJK,<0+0,0+0,0+0>
    A1_INIT_ALN =ALIGNMENT/START,RECALL:FIXT_ALN_FAKE,LIST=YES
    ALIGNMENT/TRANS,XAXIS,PO_PNT
    ALIGNMENT/TRANS,YAXIS,PO_PNT
    ALIGNMENT/TRANS,ZAXIS,PO_PNT
    ALIGNMENT/END
    notice the "+0"s
    Code:
    CIRXY1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<0+0,0+0,0+0>,<0,0,1>,2.3642
    ACTL/<0,0,0>,<0,0,1>,2.3642
    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=NO
    A2 =ALIGNMENT/START,RECALL:A1_INIT_ALN,LIST=YES
    ALIGNMENT/TRANS,XAXIS,CIRXY1
    ALIGNMENT/TRANS,YAXIS,CIRXY1
    ALIGNMENT/END
    MOVESPEED/ 300*0.9
    TOUCHSPEED/ 5
    PREHIT/0.125
    RETRACT/0.125
    CHECK/0.125,1
    CIRXY2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
    THEO/<0+0,0+0,0+0>,<0,0,1>,2.3642
    ACTL/<0,0,0>,<0,0,1>,2.3642
    TARG/<0,0,0>,<0,0,1>
    START ANG=-120,END ANG=240
    ANGLE VEC=<1,0,0>
    DIRECTION=CCW
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    A3 =ALIGNMENT/START,RECALL:A2,LIST=YES
    ALIGNMENT/TRANS,XAXIS,CIRXY2
    ALIGNMENT/TRANS,YAXIS,CIRXY2
    ALIGNMENT/END
    MOVESPEED/ 300*0.9
    TOUCHSPEED/ 5
    PREHIT/0.25
    RETRACT/0.05
    CHECK/0.25,1
    MOVE/INCREMENT,<0+0,0+0,1+0>
    PNTZ1 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
    THEO/<-1.2325+0,0.262+0,0.0899+0>,<0,0,1>
    ACTL/<-1.2325,0.262,0.0899>,<0,0,1>
    TARG/<-1.2325,0.262,0.0899>,<0,0,1>
    SNAP=NO
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    A4 =ALIGNMENT/START,RECALL:A3,LIST=YES
    ALIGNMENT/TRANS,ZAXIS,PNTZ1
    ALIGNMENT/END
    MOVESPEED/ 300*0.9
    TOUCHSPEED/ 5
    PREHIT/0.05
    RETRACT/0.05
    CHECK/0.05,1
    PLN_Z =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,TRIANGLE,LEAST_SQR
    THEO/<0+0,0+0,0+0>,<0,0,1>
    ACTL/<0,0,0>,<0,0,1>
    TARG/<0,0,0>,<0,0,1>
    ANGLE VEC=<-0.978555,0.2059858,0>,RADIAL
    SHOW FEATURE PARAMETERS=NO
    SHOW CONTACT PARAMETERS=NO
    A5 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN_Z
    ALIGNMENT/TRANS,XAXIS,CIRXY2
    ALIGNMENT/TRANS,YAXIS,CIRXY2
    ALIGNMENT/TRANS,ZAXIS,PLN_Z
    ALIGNMENT/END
    LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED,YES
    THEO/<-0.5+0,0+0,0+0>,<1,0,0>
    ACTL/<-0.5,0,0>,<1,0,0>
    CONSTR/LINE,ALIGN,1,XPLUS
    A6 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
    ALIGNMENT/LEVEL,ZPLUS,PLN_Z
    ALIGNMENT/ROTATE,XPLUS,TO,LIN1,ABOUT,ZPLUS
    ALIGNMENT/TRANS,XAXIS,CIRXY2
    ALIGNMENT/TRANS,YAXIS,CIRXY2
    ALIGNMENT/TRANS,ZAXIS,PLN_Z
    ALIGNMENT/END
    bottom of prg

    Code:
    PRINT/REPORT,EXEC MODE=END,$
    TO_FILE=ON,AUTO=1,AUTO OPEN=OFF,$
    TO_PRINTER=OFF,COPIES=1,$
    TO_DMIS_REPORT=OFF,FILE_OPTION=INDEX,FILENAME=REPO RT_NAME,$
    REPORT_THEORETICALS=NONE,REPORT_FEATURE_WITH_DIMEN SIONS=NO,$
    TO_EXCEL=OFF,$
    PREVIOUS_RUNS=KEEP_INSTANCES
    UNTIL/CURR_POS==TOTAL_PARTS
    ENDPRG =LABEL/
    pic grp.JPG
    Attached Files
    Last edited by DAN_M; 11-10-2020, 04:21 PM.
    SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

    Comment


    • #3
      I had fun with this very recently - I was trying to help someone out but was seeing odd things happen offline, however when I took it online it worked fine.

      First off - do NOT use the in built loop command, use either a Do-Until or a While-End While loop.

      Second, either use flow control to recall external alignments, or populate a generic point (as per Dan_M's method) and align to that.

      I prefer using external alignments, also I didn't have to do any value locking (i.e. +0) and all feature theos and move-points remained unchanged.


      Code:
      LOADPROBE/2BY20_MASTER
      TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=90
      ASSIGN/MYCOUNT=1
      DO/
      SELECT/MYCOUNT
      CASE/1
      ASSIGN/V1=1
      RECALL/ALIGNMENT,EXTERNAL,STATION1
      [COLOR=#c0392b]SAVE/ALIGNMENT,cur.aln,MACHINETOPARTS[/COLOR]
      END_CASE/
      CASE/2
      ASSIGN/V1=2
      RECALL/ALIGNMENT,EXTERNAL,STATION2
      [COLOR=#c0392b]SAVE/ALIGNMENT,cur.aln,MACHINETOPARTS[/COLOR]
      END_CASE/
      CASE/3
      ASSIGN/V1=3
      RECALL/ALIGNMENT,EXTERNAL,STATION3
      [COLOR=#c0392b]SAVE/ALIGNMENT,cur.aln,MACHINETOPARTS[/COLOR]
      END_CASE/
      END_SELECT/
      RECALL/ALIGNMENT,EXTERNAL,CUR
      MODE/DCC
      CLEARP/ZPLUS,50,ZPLUS,0,ON
      COMMENT/OPER,NO,FULL SCREEN=NO,AUTO-CONTINUE=NO,
      V1
      PLN1 =FEAT/PLANE,CARTESIAN,TRIANGLE
      THEO/<-50.779,111.707,0>,<0,0,1>
      ACTL/<418.87,-22.608,-893.36>,<-0.0007478,-0.0004367,0.9999996>
      MEAS/PLANE,4
      MOVE/CLEARPLANE
      HIT/BASIC,NORMAL,<-99.683,84.414,0>,<0,0,1>,<369.967,-49.902,-893.357>,USE THEO=YES
      HIT/BASIC,NORMAL,<-94.423,154.263,0>,<0,0,1>,<375.227,19.948,-893.431>,USE THEO=YES
      HIT/BASIC,NORMAL,<-5.577,154.449,0>,<0,0,1>,<464.072,20.138,-893.268>,USE THEO=YES
      HIT/BASIC,NORMAL,<-3.435,53.703,0>,<0,0,1>,<466.214,-80.615,-893.386>,USE THEO=YES
      ENDMEAS/
      LIN1 =FEAT/LINE,CARTESIAN,UNBOUNDED
      THEO/<0,52.135,-5.406>,<0,1,0>
      ACTL/<469.447,-82.183,-898.8>,<-0.0018736,0.9999982,0>
      MEAS/LINE,2,ZPLUS
      MOVE/CLEARPLANE
      HIT/BASIC,NORMAL,<0,52.135,-4.684>,<1,0,0>,<469.447,-82.183,-898.078>,USE THEO=YES
      HIT/BASIC,NORMAL,<0,181.099,-6.128>,<1,0,0>,<469.205,46.782,-899.523>,USE THEO=YES
      ENDMEAS/
      PNT1 =FEAT/POINT,CARTESIAN
      THEO/<-27.356,239,-27.125>,<0,1,0>
      ACTL/<442.293,104.622,-920.519>,<0,1,0>
      MEAS/POINT,1,WORKPLANE
      MOVE/CLEARPLANE
      HIT/BASIC,NORMAL,<-27.356,239,-27.125>,<0,1,0>,<442.293,104.622,-920.519>,USE THEO=YES
      ENDMEAS/
      A1 =ALIGNMENT/START,[COLOR=#c0392b]RECALL:CUR[/COLOR],LIST=YES
      ALIGNMENT/LEVEL,ZPLUS,PLN1
      ALIGNMENT/TRANS,ZAXIS,PLN1
      ALIGNMENT/ROTATE,YPLUS,TO,LIN1,ABOUT,ZPLUS
      ALIGNMENT/TRANS,XAXIS,LIN1
      ALIGNMENT/TRANS,YAXIS,PNT1
      ALIGNMENT/END
      MOVE/CLEARPLANE
      CIR1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
      THEO/<-80.5,-84.5,0>,<0,0,1>,15
      ACTL/<-80.056,-84.932,0>,<0,0,1>,15.118
      TARG/<-80.5,-84.5,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=3,PITCH=0
      SAMPLE METHOD=SAMPLE_HITS
      SAMPLE HITS=0,SPACER=0
      AVOIDANCE MOVE=NO,DISTANCE=10
      FIND HOLE=DISABLED,ONERROR=NO,READ POS=NO
      SHOW HITS=NO
      DIM LOC1= POSITION OF CIRCLE CIR1 UNITS=MM ,$
      GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH FIT TO DATUMS=OFF DEV PERPEN CENTERLINE=OFF DISPLAY=DIAMETER
      AX NOMINAL +TOL -TOL BONUS MEAS DEV OUTTOL
      X -80.500 -80.056 0.444
      Y -84.500 -84.932 -0.432
      DF 15.000 0.150 0.150 15.118 0.118 0.000 --------#
      TP RFS 0.150 0.000 1.239 1.239 1.089 -------->
      END OF DIMENSION LOC1
      MOVE/CLEARPLANE
      SCN1 =FEAT/SCAN,LINEAROPEN,NUMBER OF HITS=17,SHOW HITS=NO,SHOWALLPARAMS=YES
      EXEC MODE=NORMAL, NOMS MODE=MASTER,CLEARPLANE=YES,SINGLE POINT=NO,THICKNESS=0
      FINDNOMS=2,SELECTEDONLY=YES,USEBESTFIT=YES,PROBECO MP=YES,AVOIDANCE MOVE=NO,DISTANCE=0,CAD Compensation=NO,4-axis scan=NO
      DIR1=VARIABLE,MAX INCR=2,MIN INCR=1,MAX ANGLE=10,MIN ANGLE=3
      HITTYPE=VECTOR
      INITVEC=0.9953268,-0.0965634,0
      DIRVEC=-0.055303,-0.9984696,0
      CUTVEC=0,0,1
      ENDVEC=0.5544982,0.8321849,0
      PLANEVEC=0.8327482,-0.5528351,-0.030063
      POINT1=-80.109,-112.079,-3.095
      POINT2=-66.731,-140.202,-3.095
      MEAS/SCAN
      BASICSCAN/LINE,NUMBER OF HITS=17,SHOW HITS=NO,SHOWALLPARAMS=YES
      <-80.109,-112.079,-3.095>,<-66.731,-140.202,-3.095>,CutVec=0,0,1,DirVec=-0.0636112,-0.9979748,0.0000001
      InitVec=0.9953268,-0.0965642,0,EndVec=0.5722512,0.8200784,0,THICKNESS =0
      FILTER/VARIABLE,2,1,10,3
      EXEC MODE=NORMAL
      BOUNDARY/PLANE,<-66.731,-140.202,-3.095>,PlaneVec=0.8327482,-0.5528351,-0.030063,Crossings=1
      HITTYPE/VECTOR
      NOMS MODE=MASTER
      ENDSCAN
      ENDMEAS/
      DIM PROF1= PROFILE OF LINE OF SET SCN1 FORMANDLOCATION UNITS=MM ,$
      GRAPH=OFF TEXT=OFF MULT=10.00 ARROWDENSITY=100 OUTPUT=BOTH
      AX NOMINAL +TOL -TOL MEAS DEV OUTTOL
      M 0.000 0.150 0.150 0.187 0.187 0.000 #---|-#--
      MOVE/POINT,NORMAL,<-50,-110,200>
      ASSIGN/MYCOUNT=MYCOUNT+1
      UNTIL/MYCOUNT==3


      Alignment program

      Code:
      OADPROBE/2BY20_MASTER
      TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=90
      PNT1 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
      THEO/<0,0,0>,<-1,0,0>
      ACTL/<599.306,265.685,-917.655>,<0,-1,0>
      TARG/<0,0,0>,<-1,0,0>
      SHOW FEATURE PARAMETERS=NO
      SHOW CONTACT PARAMETERS=YES
      AVOIDANCE MOVE=NO,DISTANCE=10
      SHOW HITS=NO
      PNT2 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
      THEO/<0,0,0>,<0,-1,0>
      ACTL/<604.649,270.709,-917.656>,<1,0,0>
      TARG/<0,0,0>,<0,-1,0>
      SHOW FEATURE PARAMETERS=NO
      SHOW CONTACT PARAMETERS=YES
      AVOIDANCE MOVE=NO,DISTANCE=10
      SHOW HITS=NO
      PNT3 =FEAT/CONTACT/VECTOR POINT/DEFAULT,CARTESIAN
      THEO/<0,0,0>,<0,0,1>
      ACTL/<598.867,352.315,-893.395>,<0,0,1>
      TARG/<0,0,0>,<0,0,1>
      SHOW FEATURE PARAMETERS=NO
      SHOW CONTACT PARAMETERS=YES
      AVOIDANCE MOVE=NO,DISTANCE=10
      SHOW HITS=NO
      A1 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
      ALIGNMENT/TRANS,YAXIS,PNT1
      ALIGNMENT/TRANS,XAXIS,PNT2
      ALIGNMENT/TRANS,ZAXIS,PNT3
      ALIGNMENT/END
      SAVE/ALIGNMENT,station1.aln,BOTH
      SAVE/ALIGNMENT,cur.aln,MACHINETOPARTS
      A2 =ALIGNMENT/START,RECALL:A1,LIST=YES
      ALIGNMENT/TRANS_OFFSET,XAXIS,-135
      ALIGNMENT/END
      SAVE/ALIGNMENT,station2.aln,BOTH
      A3 =ALIGNMENT/START,RECALL:A2,LIST=YES
      ALIGNMENT/TRANS_OFFSET,XAXIS,-270
      ALIGNMENT/END
      SAVE/ALIGNMENT,station3.aln,BOTH


      Automettech - Automated Metrology Technology

      Comment


      • #4
        Whoa. Lots to digest. Looks like I need to go to the PCDMis301. Although both are great examples. My brain may be overloaded.
        Here's a thought....see if you guys agree.
        1st...find points Z,X,Y (corner of the fixture) or just a point at the corner of the fixture. Align XYZ. (Save alignment? Fixture only)
        2nd - 1st part in station 1. again, generic point XYZ (top,middle of part). this would be part 1 and you would need the XY for the offset from the corner fixture.
        3rd - then go into the A2 or A3 with just the Y offset between the parts?. Kind of what Ninja Badger is doing. Do the code for ask how many parts.
        I would then need say 16 alignment offsets for 16 parts. If I had it nested for 32, I would do 16 with Y offsets and 16 with X and y offsets as they would be next to the original 16. Is that correct?.

        Why can we not use the built in nested loop function?. Dmis cannot be wrong on that by adding it in ...Right?....Being Sarcastic. I knew that looping could not possibly be that easy. Even though the demo videos show that it is.

        Comment


        • neil.challinor
          neil.challinor commented
          Editing a comment
          The built in LOOP command is only meant for looping sections of code that do not include changes to the active alignment. It can also work for looping an entire program so long as there are no dependencies outside of the loop. What it doesn't like (and was not designed for) is when you have alignment changes within a loop and features / dimensions that depend on other things outside of the loop.

        • SMace
          SMace commented
          Editing a comment
          https://blog.cmmxyz.com/blog/nested-loops-pcdmis

          Looking at this video, The 1-2-3 alignment is used in this loop and executes 3 up and 3 over.
          My question now becomes. If a manual alignment is used and you place your loop at the beginning of the DCC alignment, why would that not work?.
          The issue here are the theos being changed as executed. Sometimes they change by the OFFSET value as it progresses. That is my issue. If it somehow errors out during execution, all the theos become where that error happened. Some have said. F5 settings.

      • #5
        Never got the looping to work (by rotating the alignment), it always measure the same (the first) part...
        PC-DMIS CAD++ 2o19 R1 SP11

        Comment


        • #6
          SMace If you're going to get into looping and advanced variables you should definitely take 301. I did last year in RI and really enjoyed it. I look back on that class as one of those "educational turn-key moments" in my career where I really took something away from it.

          Looping allows you to execute ONE set of code and have the software move that around for you a predetermined number of times. What you're proposing is that you just write a really long program with a bunch of alignments. You certainly could do that, if it works it works! (But there are other ways that are shorter and cleaner once you understand what is happening!)

          No matter what method you use, basic outline is:

          1) Locate the fixture for your software (create and save an external alignment. recall it in your looping program).
          2) Create a way to define the locations of the different stations to PCD and make that relative to your fixture alignment. NinjaBadger did CASE commands (might just steal this idea), my example was IF STATEMENTS.
          3) Determine the loop that is right for you. The basic loop function does work but is very simplistic. The user doesn't have very much control over what is happening. If you have a fixture where the parts are staggered or not in a mathematical pattern or something along those lines, a basic loop will not work for you. Using a DO or WHILE loop allows you to put stuff exactly where you want it. The loop begins with the counter equaling "1". In my example and Ninja's, the counter is used to drive where the origin is relative to the fixture alignment an once that counter becomes a certain number the loop becomes completed and the software will stop executing it. His is more clean because he doesn't have to lock down nominals with math.
          SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

          Comment


          • #7
            When using a LOOP with offsets, pcdmis will internally update nominals, etc. Defining an alignment within the LOOP with a feature created inside the loop requires all axes of the alignment to be defined. It would be best to use a LOOP with no offsets and define any alignment offsets/rotations during the LOOP process by direct alignment command. Basically use the LOOP as a DO or WHILE.
            Just my opinion on LOOPs.

            Comment


            • #8
              NinjaBadger Many thanks for this!

              Code:
              [STARTUP =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
              ALIGNMENT/END
              FLY/ON
              MOVESPEED/ 300*0.9
              LOADPROBE/7107_Y_3X40
              TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
              GROUP_COUNTPROMPT_AND_SERIALNUMBER=GROUP/SHOWALLPARAMS=YES
              COUNT_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
              How many parts are you inspecting?
              ASSIGN/TOTAL_PARTS=COUNT_PROMPT.INPUT
              ASSIGN/SER=0
              WHILE/SER<TOTAL_PARTS
              ASSIGN/SER=SER+1
              SER_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
              Please enter the Serial Number of the
              "part at FIXTURE POSITION# "+SER+"."
              RUN_PROMPT =COMMENT/INPUT,NO,FULL SCREEN=NO,
              Please enter the Run Number of the
              "part at FIXTURE POSITION# "+SER+"."
              ASSIGN/SER_NUM[SER]=SER_PROMPT.INPUT
              ASSIGN/RUN_NUM[SER]=RUN_PROMPT.INPUT
              END_WHILE/
              ENDGROUP/ID=GROUP_COUNTPROMPT_AND_SERIALNUMBER
              MODE/DCC
              RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
              ASSIGN/CURR_POS=0
              DO/
              ASSIGN/CURR_POS=CURR_POS+1
              COMMENT/REPT,
              "Serial Number: "+SER_NUM[CURR_POS]
              COMMENT/REPT,
              "Run Number: "+RUN_NUM[CURR_POS]
              ASSIGN/PROG_NAME=GETPROGRAMINFO ("PARTNAME")
              ASSIGN/REPORT_NAME="C:\\USERS\\XXXXXX\\DESKTOP\\___PALLET _PROGRAM_SAMPLE\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"__"+RUN_NUM[CURR_POS]+".PDF"
              SELECT/CURR_POS
              CASE/1
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_1 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<2*1,2*1,0*1>,$
              MEAS/XYZ,<2*1,2*1,0*1>,$
              NOM/IJK,<0*1,0*1,1*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_1 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_1
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_1
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              END_CASE/
              CASE/2
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_2 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<6*1,2*1,0*1>,$
              MEAS/XYZ,<6*1,2*1,0*1>,$
              NOM/IJK,<0*1,0*1,1*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_2 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_2
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_2
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              END_CASE/
              CASE/3
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_3 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<10*1,2*1,0*1>,$
              MEAS/XYZ,<10*1,2*1,0*1>,$
              NOM/IJK,<0*1,0*1,1*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_3 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_3
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_3
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              END_CASE/
              CASE/4
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_4 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<2*1,6*1,0*1>,$
              MEAS/XYZ,<2*1,6*1,0*1>,$
              NOM/IJK,<0*1,0*1,1*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_4 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_4
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_4
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              END_CASE/
              CASE/5
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_5 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<6*1,6*1,0*1>,$
              MEAS/XYZ,<6*1,6*1,0*1>,$
              NOM/IJK,<0*1,0*1,0*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_5 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_5
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_5
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              END_CASE/
              CASE/6
              RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
              PALLET_POS_6 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
              NOM/XYZ,<10*1,6*1,0*1>,$
              MEAS/XYZ,<10*1,6*1,0*1>,$
              NOM/IJK,<0*1,0*1,1*1>,$
              MEAS/IJK,<0*1,0*1,1*1>
              ALI_PALLET_6 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
              ALIGNMENT/TRANS,XAXIS,PALLET_POS_6
              ALIGNMENT/TRANS,YAXIS,PALLET_POS_6
              ALIGNMENT/END
              SAVE/ALIGNMENT,CUR.aln,MACHINETOPARTS
              RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
              END_CASE/
              END_SELECT/
              RECALL/ALIGNMENT,EXTERNAL,CUR
              IF/CURR_POS=="1"
              RP_CHECK_Z =FEAT/POINT,CARTESIAN
              THEO/<0*1,0*1,20*1>,<0,0,1>
              ACTL/<1.9368,1.9656,1.12>,<0,0,1>
              READPOINT/
              MOVE/INCREMENT,<0,0,20-RP_CHECK_Z.Z>
              CLEARP/ZPLUS,20,ZPLUS,10,ON
              END_IF/
              ELSE/
              CLEARP/ZPLUS,4,ZPLUS,4,ON
              END_ELSE/
              LIN_THEO_XP =FEAT/LINE,CARTESIAN,UNBOUNDED,NO
              THEO/<-0.5,0,0>,<1,0,0>
              ACTL/<-0.5,0,0>,<1,0,0>
              CONSTR/LINE,ALIGN,1,XPLUS
              FLY/ON
              MOVESPEED/ 300*0.9
              TOUCHSPEED/ 10
              PREHIT/0.4
              RETRACT/0.4
              CHECK/0.5,1
              MOVE/CLEARPLANE
              CIRXY1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<2,2,0.85>,<0,0,1>,0.75
              ACTL/<2,2,0.85>,<0,0,1>,0.75
              TARG/<2,2,0.85>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=NO
              A1 =ALIGNMENT/START,RECALL:CUR,LIST=YES
              ALIGNMENT/TRANS,XAXIS,CIRXY1
              ALIGNMENT/TRANS,YAXIS,CIRXY1
              ALIGNMENT/END
              FLY/ON
              MOVESPEED/ 300*0.9
              TOUCHSPEED/ 5
              PREHIT/0.125
              RETRACT/0.125
              CHECK/0.125,1
              CIRXY2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<0,0,0.85>,<0,0,1>,0.75
              ACTL/<0,0,0.85>,<0,0,1>,0.75
              TARG/<0,0,0.85>,<0,0,1>
              START ANG=-120,END ANG=240
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=NO
              A2 =ALIGNMENT/START,RECALL:A1,LIST=YES
              ALIGNMENT/TRANS,XAXIS,CIRXY2
              ALIGNMENT/TRANS,YAXIS,CIRXY2
              ALIGNMENT/END
              MOVE/INCREMENT,<0,0,0.3>
              PLNZ1 =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,NONE,LEAST_SQR
              THEO/<0,0,0.93>,<0,0,1>
              ACTL/<0,0,0.93>,<0,0,1>
              TARG/<0,0,0.93>,<0,0,1>
              ANGLE VEC=<-0.978555,0.2059858,0>,RADIAL
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=NO
              A3 =ALIGNMENT/START,RECALL:STARTUP,LIST=YES
              ALIGNMENT/LEVEL,ZPLUS,PLNZ1
              ALIGNMENT/ROTATE,XPLUS,TO,LIN_THEO_XP,ABOUT,ZPLUS
              ALIGNMENT/TRANS,XAXIS,CIRXY2
              ALIGNMENT/TRANS,YAXIS,CIRXY2
              ALIGNMENT/TRANS,ZAXIS,PLNZ1
              ALIGNMENT/END
              FLY/ON
              MOVESPEED/ 300*0.9
              TOUCHSPEED/ 5
              PREHIT/0.075
              RETRACT/0.075
              CHECK/0.075,1
              CLEARP/ZPLUS,PLNZ1.Z+0.5,ZPLUS,PLNZ1.Z+0.5,ON
              MOVE/CLEARPLANE
              CIR_ID =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
              THEO/<0,0,-0.1>,<0,0,1>,0.75
              ACTL/<0,0,-0.1>,<0,0,1>,0.75
              TARG/<0,0,-0.1>,<0,0,1>
              START ANG=0,END ANG=360
              ANGLE VEC=<1,0,0>
              DIRECTION=CCW
              SHOW FEATURE PARAMETERS=NO
              SHOW CONTACT PARAMETERS=NO
              FORMAT/TEXT,OPTIONS,ID,HEADINGS,SYMBOLS, ;MEAS,NOM,TOL,DEV,OUTTOL, ,
              DISPLAYPRECISION/5
              DIM MIS_1= LOCATION OF CIRCLE CIR_ID UNITS=IN ,$
              GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
              AX MEAS NOMINAL +TOL -TOL DEV OUTTOL
              D 0.75000 0.75000 0.00050 0.00050 0.00000 0.00000 ----#----
              END OF DIMENSION MIS_1
              DISPLAYPRECISION/4
              UNTIL/CURR_POS==TOTAL_PARTS
              RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
              SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

              Comment


              • #9
                Some simple guidelines while programming with the PCDMIS Loop/Start Loop/End command:
                -Reference the same alignment at the end as you do the start.
                -Set loop count to 1 while programming. ONLY AFTER you are done programming the one part. change the loop count to your variable input and save the routine. Set it as read only.
                -Never, ever edit a loop when count is NOT 1, especially move points or move increments.

                Comment


                • SMace
                  SMace commented
                  Editing a comment
                  Can you elaborate on read only?.

                • DAN_M
                  DAN_M commented
                  Editing a comment
                  Outside of PC DMIS, find the file and then right click it and make it "READ ONLY". This will make it so the file can only be read, never saved over. This is a windows function, not a pcd thing.

                • louisd
                  louisd commented
                  Editing a comment
                  Open your file explorer window. Browse to your *.PRG & *.CAD file location. Select both (shift or ctl + click) Right click and select "properties". At bottom of window that pops up is a "Read-Only" checkbox. Check it. Click apply or ok.
                  File is now read-only until some doofus goes and manually repeats that step.

                  Note: your stats within the routine will never be accurate if you depend on them, with the file saved as read only.
                  Last edited by louisd; 11-11-2020, 02:23 PM.

              • #10
                I needed to something similar but a bit more complex, I had 4 fixtures in a 2x2 pattern with 2 rows of parts in the Z direction holding parts, naturally I looked at the loop command. Since I had a spacing between the fixtures in X and Y I needed 2 loops, because the parts were spaced in the Y and Z on each fixture, I had 2 more nested loops (4 nested loops in total with a calculation in the loop to figure out what fixture/column/row I was on to annotate the report correctly). It worked, but the loop command has limitations. You need to fully constrain the alignment inside the loop, you can only edit if your loop(s) are at the first loop, you need a way to keep PC-DMIS from changing nominals in the report (that can be done with xactmeasure, but you are using 2020, so that isn't an option).

                With all that being said I switched to recalling external alignments and a single while-end pair in my programs. Where I used to have 1 program with nothing external, I now have a program to generate the external alignments (which only gets used once), a bunch of external alignment files, and the main program file.

                Comment


                • #11
                  THANK YOU TO EVERYONE WITH YOUR INPUT!!!. Greatly Appreciated!.
                  I'm going to need to take the 301 class for sure. this isn't a self taught issue.
                  I have a company writing a program from my main program to get the looping working. Should be interesting how this comes out. I'll have to post it when I get it.

                  Comment


                  • #12
                    NinjaBadger I am trying to use your looping method and the only way I can get it to work is if I lock down the theo values with a "*1" or using the .TX and TY value. Can you see anything in my code I'm messing up/can you think of any F5 options I might be missing? I really want to get away from using the "*1" stuff/ ".TX/.TY" stuff if I can. Is a simple ring gage, Hole 1,A is the fixture's X0Y0 for the external alignment, the theoretical points created are relative to that hole.

                    Code:
                    MODE/DCC
                    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
                    ASSIGN/CURR_POS=0
                    DO/
                    ASSIGN/CURR_POS=CURR_POS+1
                    COMMENT/REPT,
                    "Serial Number: "+SER_NUM[CURR_POS]
                    COMMENT/REPT,
                    "Run Number: "+RUN_NUM[CURR_POS]
                    ASSIGN/PROG_NAME=GETPROGRAMINFO ("PARTNAME")
                    ASSIGN/REPORT_NAME="XX:\\INSERT_VALID_FILE-PATH_HERE\\"+PROG_NAME+"__"+SER_NUM[CURR_POS]+"__"+RUN_NUM[CURR_POS]+".PDF"
                    SELECT/CURR_POS
                    CASE/1
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_1 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<2*1,2*1,0*1>,$
                    MEAS/XYZ,<2*1,2*1,0*1>,$
                    NOM/IJK,<0*1,0*1,1*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_1 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_1
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_1
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    CASE/2
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_2 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<6*1,2*1,0*1>,$
                    MEAS/XYZ,<6*1,2*1,0*1>,$
                    NOM/IJK,<0*1,0*1,1*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_2 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_2
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_2
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    CASE/3
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_3 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<10*1,2*1,0*1>,$
                    MEAS/XYZ,<10*1,2*1,0*1>,$
                    NOM/IJK,<0*1,0*1,1*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_3 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_3
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_3
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    CASE/4
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_4 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<2*1,6*1,0*1>,$
                    MEAS/XYZ,<2*1,6*1,0*1>,$
                    NOM/IJK,<0*1,0*1,1*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_4 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_4
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_4
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    CASE/5
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_5 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<6*1,6*1,0*1>,$
                    MEAS/XYZ,<6*1,6*1,0*1>,$
                    NOM/IJK,<0*1,0*1,0*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_5 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_5
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_5
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    CASE/6
                    RECALL/ALIGNMENT,INTERNAL,7107_PLATE_ALIGN
                    PALLET_POS_6 =GENERIC/POINT,DEPENDENT,CARTESIAN,$
                    NOM/XYZ,<10*1,6*1,0*1>,$
                    MEAS/XYZ,<10*1,6*1,0*1>,$
                    NOM/IJK,<0*1,0*1,1*1>,$
                    MEAS/IJK,<0*1,0*1,1*1>
                    ALI_PALLET_6 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/TRANS,XAXIS,PALLET_POS_6
                    ALIGNMENT/TRANS,YAXIS,PALLET_POS_6
                    ALIGNMENT/END
                    SAVE/ALIGNMENT,CUR.aln,BOTH
                    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
                    END_CASE/
                    END_SELECT/
                    RECALL/ALIGNMENT,EXTERNAL,CUR
                    IF/CURR_POS=="1"
                    RP_CHECK_Z =FEAT/POINT,CARTESIAN
                    THEO/<0*1,0*1,15*1>,<0,0,1>
                    ACTL/<-4,0,15>,<0,0,1>
                    READPOINT/
                    MOVE/INCREMENT,<0,0,15-RP_CHECK_Z.Z>
                    MOVE/POINT,NORMAL,<0,0,15>
                    END_IF/
                    CLEARP/ZPLUS,4,ZPLUS,4,ON
                    LIN_THEO_XP =FEAT/LINE,CARTESIAN,UNBOUNDED,YES
                    THEO/<-0.5,0,0>,<1,0,0>
                    ACTL/<-0.5,0,0>,<1,0,0>
                    CONSTR/LINE,ALIGN,1,XPLUS
                    FLY/ON
                    MOVESPEED/ 300*0.9
                    TOUCHSPEED/ 10
                    PREHIT/0.4
                    RETRACT/0.4
                    CHECK/0.5,1
                    MOVE/CLEARPLANE
                    CIRXY1 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
                    THEO/<0,0,0.85>,<0,0,1>,0.75
                    ACTL/<0,0,0.85>,<0,0,1>,0.75
                    TARG/<0*1,0*1,0.85>,<0,0,1>
                    START ANG=0,END ANG=360
                    ANGLE VEC=<1,0,0>
                    DIRECTION=CCW
                    SHOW FEATURE PARAMETERS=NO
                    SHOW CONTACT PARAMETERS=NO
                    FLY/ON
                    MOVESPEED/ 300*0.9
                    TOUCHSPEED/ 5
                    PREHIT/0.125
                    RETRACT/0.125
                    CHECK/0.125,1
                    CIRXY2 =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
                    THEO/<CIRXY1.TX,CIRXY1.TY,0.85>,<0,0,1>,0.75
                    ACTL/<0,0,0.85>,<0,0,1>,0.75
                    TARG/<CIRXY1.X,CIRXY1.Y,0.85>,<0,0,1>
                    START ANG=-120,END ANG=240
                    ANGLE VEC=<1,0,0>
                    DIRECTION=CCW
                    SHOW FEATURE PARAMETERS=NO
                    SHOW CONTACT PARAMETERS=NO
                    MOVE/INCREMENT,<0,0,0.5>
                    PLNZ1 =FEAT/CONTACT/PLANE/DEFAULT,CARTESIAN,NONE,LEAST_SQR
                    THEO/<CIRXY2.TX,CIRXY2.TY,0.93>,<0,0,1>
                    ACTL/<0,0,0.93>,<0,0,1>
                    TARG/<CIRXY2.X,CIRXY2.Y,0.93>,<0,0,1>
                    ANGLE VEC=<-0.978555,0.2059858,0>,RADIAL
                    SHOW FEATURE PARAMETERS=NO
                    SHOW CONTACT PARAMETERS=NO
                    CLEARP/ZPLUS,PLNZ1.Z+0.5,ZPLUS,PLNZ1.Z+0.5,ON
                    A3 =ALIGNMENT/START,RECALL:7107_PLATE_ALIGN,LIST=YES
                    ALIGNMENT/LEVEL,ZPLUS,PLNZ1
                    ALIGNMENT/ROTATE,XPLUS,TO,LIN_THEO_XP,ABOUT,ZPLUS
                    ALIGNMENT/TRANS,XAXIS,CIRXY2
                    ALIGNMENT/TRANS,YAXIS,CIRXY2
                    ALIGNMENT/TRANS,ZAXIS,PLNZ1
                    ALIGNMENT/END
                    FLY/ON
                    MOVESPEED/ 300*0.9
                    TOUCHSPEED/ 5
                    PREHIT/0.075
                    RETRACT/0.075
                    CHECK/0.075,1
                    MOVE/CLEARPLANE
                    CIR_ID =FEAT/CONTACT/CIRCLE/DEFAULT,CARTESIAN,IN,LEAST_SQR
                    THEO/<0,0,-0.1>,<0,0,1>,0.75
                    ACTL/<0,0,-0.1>,<0,0,1>,0.75
                    TARG/<0*1,0*1,-0.1>,<0,0,1>
                    START ANG=0,END ANG=360
                    ANGLE VEC=<1,0,0>
                    DIRECTION=CCW
                    SHOW FEATURE PARAMETERS=NO
                    SHOW CONTACT PARAMETERS=NO
                    FORMAT/TEXT,OPTIONS,ID,HEADINGS,SYMBOLS, ;MEAS,NOM,TOL,DEV,OUTTOL, ,
                    DISPLAYPRECISION/5
                    DIM MIS_1= LOCATION OF CIRCLE CIR_ID UNITS=IN ,$
                    GRAPH=OFF TEXT=OFF MULT=10.00 OUTPUT=BOTH HALF ANGLE=NO
                    AX MEAS NOMINAL +TOL -TOL DEV OUTTOL
                    D 0.75000 0.75000 0.00050 0.00050 0.00000 0.00000 ----#----
                    END OF DIMENSION MIS_1
                    DISPLAYPRECISION/4
                    UNTIL/CURR_POS==TOTAL_PARTS
                    RECALL/ALIGNMENT,EXTERNAL,7107_PLATE_ALIGN
                    MOVE/POINT,NORMAL,<1,35,15>
                    picgrp.PNG
                    SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

                    Comment


                    • NinjaBadger
                      NinjaBadger commented
                      Editing a comment
                      I'll have a better look later but the first thing that jumps out at me is that you're generating the external alignments in the same program as the main program.

                      I have two programs - one to generate the alignments, one for measuring.

                      Make sure Machine to part / Both is set the same as I have it when saving (the external alignments in the alignment prog, and curr.aln in the select statements)

                    • DAN_M
                      DAN_M commented
                      Editing a comment
                      Ohhhh I didn't catch that you made two separate programs. I am gong to mess with this some more (create alignments for each station on another prg & mess with my recall alignments in my main prg a bit) & will check back later if I have an issue/let you know if I was successful.

                    • DAN_M
                      DAN_M commented
                      Editing a comment
                      I figured it out!

                  • #13
                    I always use 1 program for alignment only, save to external. I don't use loops, but that is the way I do it.

                    HERE IS WHY!

                    If you use an iterative alignment at all, for any reason, you really should do it as an external alignment because Pcdmis will RE-CALCULATE that iterative alignment every time you open the program EVEN IF YOU DO NOT RUN IT. You will only see this happen if you either dimension each feature after the alignment and can remember them when you open the program OR if you have some features that fall outside the fixture tolerance you give it, you will see that pop-up telling you which are out and by how much, and they will CHANGE, features & amounts, each time. I get the second happening quite often as I use 0.05mm for the fixture tolerance and when you have 5, 6, 27 "A" datums on a fixture, chances are one or more will ease outside that tolerance.
                    sigpic
                    Originally posted by AndersI
                    I've got one from September 2006 (bug ticket) which has finally been fixed in 2013.

                    Comment


                    • #14
                      SMace
                      I am glad you posted this thread, I learned a lot and tweaked my own methods. See my post below, this is my final 2cnts on this lol. Hopefully you get your upper level training soon so you can start with this stuff!

                      https://www.pcdmisforum.com/forum/pc...ate#post480541
                      SF7107(PCD), SF454(PCD), 152614(Quindos), 9159(Quindos), 7107(Quindos), B&S Manual, M&M Gear Checker

                      Comment


                      • #15
                        When looping with flow controls be sure to uncheck "Reset global settings when branching" under F5

                        Here's how I do my alignments when flow controlling multiple station loops.
                        Code:
                        START_MEAS =LABEL/
                        FASTPROBEMODE/ON
                        MAN_ABC_AL =ALIGNMENT/START,RECALL:MAN_AB_AL,LIST=YES
                        ALIGNMENT/LEVEL,XMINUS,MAN_A_PLN
                        ALIGNMENT/ROTATE_CIRCLE,ZPLUS,TO,MAN_B_CIR,AND,MAN_C_PNT,ABO UT,XPLUS
                        ALIGNMENT/ROTATE_OFFSET,-33,ABOUT,XPLUS
                        ALIGNMENT/TRANS,XAXIS,MAN_A_PLN
                        ALIGNMENT/TRANS,YAXIS,MAN_B_CIR
                        ALIGNMENT/TRANS,ZAXIS,MAN_B_CIR
                        ALIGNMENT/END
                        SAVE/ALIGNMENT,Pentastar_vertical_al1.aln,MACHINETOPART S
                        ASSIGN/X_OFFSET=ARRAY(0,0,0,0,165.2,165.2,165.2,165.2,329 .8,329.8,329.8,329.8)
                        ASSIGN/Y_OFFSET=ARRAY(0,139.5,279,418.5,0,139.5,279,418.5 ,0,139.5,279,418.5)
                        STATION_OFFSET_AL1=ALIGNMENT/START,RECALL:MAN_ABC_AL,LIST=YES
                        ALIGNMENT/TRANS_OFFSET,XAXIS,X_OFFSET[CNT_1]
                        ALIGNMENT/TRANS_OFFSET,YAXIS,Y_OFFSET[CNT_1]
                        ALIGNMENT/END
                        SAVE/ALIGNMENT,Pentastar_vertical_offset_al1.aln,MACHIN ETOPARTS
                        IF/CNT_1==1
                        RECALL/ALIGNMENT,EXTERNAL,PENTASTAR_VERTICAL_AL1
                        END_IF/
                        IF/CNT_1<>1
                        RECALL/ALIGNMENT,EXTERNAL,PENTASTAR_VERTICAL_OFFSET_AL1
                        END_IF/
                        Last edited by BKulpa; 11-12-2020, 12:23 PM. Reason: Additional info

                        Comment


                        • DAN_M
                          DAN_M commented
                          Editing a comment
                          @BKupla

                          When you use this method, do you have to lock your actual code's "THEO" values down with a "*1" or a "+0"?

                        • BKulpa
                          BKulpa commented
                          Editing a comment
                          No I don't lock down my nominals other than the values that come from the model.

                        • SMace
                          SMace commented
                          Editing a comment
                          BKulpa....How does that work if your doing say 15 parts in one row and 15 part next to that?.
                          I would be interested in also puttin in logic....Cavity # that progresses as it loops as well.

                      Related Topics

                      Collapse

                      Working...
                      X