hexagon logo

Loop or Variables

Hey! Im new here in this Forum. I have +/- 3.5 years expt. in CMM.

I work on a project with 4 pieces on a block, theyre milled. after the measurment they will cut it off. After this the z position change -10.2mm and Milling again 4 pieces and so on... i hope youre understanding^^

So i made a Loop and the i made a Copie of this loop and change the z position by typing.

Is there am smoother version to change the Z position? or antoher way? because if they have other blocks with the same pieces they will have the issue that the x,y,z where not at the same postion as from ''block 1''. They can Save the programm as block 1,2,3 etc. i know but there will be to many programs Smiley

here is the code, (maybe its completely bulls**t Smiley ) and its German^^

C1 =KOMMENTAR/JANEIN,NEIN,VOLLBILD=NEIN,AUTO. FORTFAHREN=NEIN,
Manuell Ausrichten?
IF_GOTO/C1.INPUT=="NEIN",GOTO = CNC_LAUF
TASTSPITZE/T1A0B0, SCHAFTIJK=0, 0, 1, WINKEL=0
LIN_MAN_X =ELEMENT/LINIE,KARTESISCH,UNBEGR
NENN/<0,-34.969,-0.061>,<0,1,0>
MESS/<0,-34.969,-0.061>,<0,1,0>
MESS/GERADE,2,ZPLUS
ARBEITSEBENE/YPLUS
MESSPKT/BASIS,NORMAL,<0,-34.969,-0.113>,<1,0,0>,<0,-34.969,-0.113>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<0,-24.555,-0.009>,<1,0,0>,<0,-24.555,-0.009>,THEO VERW=JA
ENDEMESS/
EBENE1_MAN_Y=ELEMENT/EBENE,KARTESISCH,DREIECK
NENN/<-1.993,-35.85,0.154>,<0,-1,0>
MESS/<-1.993,-35.85,0.154>,<0,-1,0>
MESS/EBENE,3
MESSPKT/BASIS,NORMAL,<-2.865,-35.85,0.687>,<0,-1,0>,<-2.865,-35.85,0.687>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-0.931,-35.85,0.793>,<0,-1,0>,<-0.931,-35.85,0.793>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-2.183,-35.85,-1.019>,<0,-1,0>,<-2.183,-35.85,-1.019>,THEO VERW=JA
ENDEMESS/
ARBEITSEBENE/YMINUS
EBENE2_MAN_Y=ELEMENT/EBENE,KARTESISCH,DREIECK
NENN/<-1.283,-23.7,0.623>,<0,1,0>
MESS/<-1.283,-23.7,0.623>,<0,1,0>
MESS/EBENE,3
MESSPKT/BASIS,NORMAL,<-0.665,-23.7,1.288>,<0,1,0>,<-0.665,-23.7,1.288>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-1.85,-23.7,1.266>,<0,1,0>,<-1.85,-23.7,1.266>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-1.335,-23.7,-0.684>,<0,1,0>,<-1.335,-23.7,-0.684>,THEO VERW=JA
ENDEMESS/
ARBEITSEBENE/ZPLUS
EBENE_Z_MAN=ELEMENT/EBENE,KARTESISCH,DREIECK
NENN/<-2.343,-30.212,2.653>,<0,0,1>
MESS/<-2.343,-30.212,2.653>,<0,0,1>
MESS/EBENE,4
MESSPKT/BASIS,NORMAL,<-3.638,-33.755,2.653>,<0,0,1>,<-3.638,-33.755,2.653>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-1.431,-33.845,2.653>,<0,0,1>,<-1.431,-33.845,2.653>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-0.867,-26.491,2.653>,<0,0,1>,<-0.867,-26.491,2.653>,THEO VERW=JA
MESSPKT/BASIS,NORMAL,<-3.434,-26.759,2.653>,<0,0,1>,<-3.434,-26.759,2.653>,THEO VERW=JA
ENDEMESS/
EBENE_Y_0_MAN=ELEMENT/EBENE,KARTESISCH,DREIECK,NEIN
NENN/<-1.638,-29.775,0.389>,<0,-1,0>
MESS/<-1.638,-29.775,0.389>,<0,-1,0>
KONST/EBENE,MITTELPKT,EBENE1_MAN_Y,EBENE2_MAN_Y
CNC_LAUF =SPRUNGMARKE/
MODUS/CNC
C2 =KOMMENTAR/EINGABE,NEIN,VOLLBILD=NEIN,
Reihe?
IF_GOTO/C2.INPUT=="1",GOTO = R1
IF_GOTO/C2.INPUT=="2",GOTO = R2
IF_GOTO/C2.INPUT=="3",GOTO = R3
IF_GOTO/C2.INPUT=="4",GOTO = R4
R1 =SPRUNGMARKE/
V7 =SCHLEIFE/ANFANG,ID=JA,NUMMER=4,ANFANG=1,AUSLASSEN=,
VERSATZ:X_ACHSE=0,Y_ACHSE=19.8,Z_ACHSE=0,WINKEL=0
A_MANUELL =AUSRICHTUNG/ANFANG,AUFRUFEN:START,LISTE=JA
AUSRICHTUNG/EBENE,ZPLUS,EBENE_Z_MAN
AUSRICHTUNG/ÜBERTR,Z_ACHSE,EBENE_Z_MAN
AUSRICHTUNG/DREHEN,YPLUS,ZU,LIN_MAN_X,DREHEN UM,ZPLUS
AUSRICHTUNG/ÜBERTR,Y_ACHSE,EBENE_Y_0_MAN
AUSRICHTUNG/ÜBERTR,X_ACHSE,LIN_MAN_X
AUSRICHTUNG/ENDE
EBENE_Z_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-1.977,-1.962,0>,<0,0,1>
MESS/<-1.977,-1.962,0>,<0,0,1>
ZIEL/<-1.977,-1.962,0>,<0,0,1>
WINKELVEK=<1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
EBENE1_Y_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-1.913,-6.075,-2.785>,<0,-1,0>
MESS/<-1.913,-6.075,-2.785>,<0,-1,0>
ZIEL/<-1.913,-6.075,-2.785>,<0,-1,0>
WINKELVEK=<1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
EBENE2_Y_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-0.942,6.075,-1.959>,<0,1,0>
MESS/<-0.942,6.075,-1.959>,<0,1,0>
ZIEL/<-0.942,6.075,-1.959>,<0,1,0>
WINKELVEK=<-1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
PKT1 =ELEM/KONTAKT/VEKTORPUNKT/STANDARD,KARTESISCH
NENN/<0,-5.186,-2.5>,<1,0,0>
MESS/<0,-5.186,-2.5>,<1,0,0>
ZIEL/<0,-5.186,-2.5>,<1,0,0>
EINRASTEN=NEIN
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
PKT2 =ELEM/KONTAKT/VEKTORPUNKT/STANDARD,KARTESISCH
NENN/<0,4.87,-2.5>,<1,0,0>
MESS/<0,4.87,-2.5>,<1,0,0>
ZIEL/<0,4.87,-2.5>,<1,0,0>
EINRASTEN=NEIN
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
LIN_CNC =ELEMENT/LINIE,KARTESISCH,UNBEGR,NEIN
NENN/<0,-5.186,-2.5>,<0,1,0>
MESS/<0,-5.186,-2.5>,<0,1,0>
KONST/GERADE,BE,3D,PKT1,PKT2,,
AUSREISSER_ENTFERNEN/AUS,3
FILTER/AUS,WELLENLÄNGE=0
EBENE_Y0_CNC =ELEMENT/EBENE,KARTESISCH,DREIECK,NEIN
NENN/<-1.427,0,-2.372>,<0,-1,0>
MESS/<-1.427,0,-2.372>,<0,-1,0>
KONST/EBENE,MITTELPKT,EBENE1_Y_CNC,EBENE2_Y_CNC
A_CNC =AUSRICHTUNG/ANFANG,AUFRUFEN:A_MANUELL,LISTE=JA
AUSRICHTUNG/EBENE,ZPLUS,EBENE_Z_CNC
AUSRICHTUNG/DREHEN,YPLUS,ZU,LIN_CNC,DREHEN UM,ZPLUS
AUSRICHTUNG/ÜBERTR,X_ACHSE,LIN_CNC
AUSRICHTUNG/ÜBERTR,Y_ACHSE,EBENE_Y0_CNC
AUSRICHTUNG/ENDE
SCHLEIFE/ENDE
GOTO/AUSWERTUNG
R2 =SPRUNGMARKE/
V7 =SCHLEIFE/ANFANG,ID=JA,NUMMER=4,ANFANG=1,AUSLASSEN=,
VERSATZ:X_ACHSE=0,Y_ACHSE=19.8,Z_ACHSE=0,WINKEL=0
A_MANUELL =AUSRICHTUNG/ANFANG,AUFRUFEN:START,LISTE=JA
AUSRICHTUNG/EBENE,ZPLUS,EBENE_Z_MAN
AUSRICHTUNG/ÜBERTR,Z_ACHSE,EBENE_Z_MAN
AUSRICHTUNG/DREHEN,YPLUS,ZU,LIN_MAN_X,DREHEN UM,ZPLUS
AUSRICHTUNG/ÜBERTR,Y_ACHSE,EBENE_Y_0_MAN
AUSRICHTUNG/ÜBERTR,X_ACHSE,LIN_MAN_X
AUSRICHTUNG/ENDE
EBENE_Z_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-1.977,-1.962,-10.2>,<0,0,1>
MESS/<-1.977,-1.962,-10.2>,<0,0,1>
ZIEL/<-1.977,-1.962,-10.2>,<0,0,1>
WINKELVEK=<1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
EBENE1_Y_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-1.913,-6.075,-10.985>,<0,-1,0>
MESS/<-1.913,-6.075,-10.985>,<0,-1,0>
ZIEL/<-1.913,-6.075,-10.985>,<0,-1,0>
WINKELVEK=<1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
EBENE2_Y_CNC =ELEM/KONTAKT/EBENE/STANDARD,KARTESISCH,DREIECK,KLEINSTE_QUAD
NENN/<-0.942,6.075,-12.159>,<0,1,0>
MESS/<-0.942,6.075,-12.159>,<0,1,0>
ZIEL/<-0.942,6.075,-12.159>,<0,1,0>
WINKELVEK=<-1,0,0>,VIERECKIG
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
PKT1 =ELEM/KONTAKT/VEKTORPUNKT/STANDARD,KARTESISCH
NENN/<0,-5.186,-12.7>,<1,0,0>
MESS/<0,-5.186,-12.7>,<1,0,0>
ZIEL/<0,-5.186,-12.7>,<1,0,0>
EINRASTEN=NEIN
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
PKT2 =ELEM/KONTAKT/VEKTORPUNKT/STANDARD,KARTESISCH
NENN/<0,4.87,-12.7>,<1,0,0>
MESS/<0,4.87,-12.7>,<1,0,0>
ZIEL/<0,4.87,-12.7>,<1,0,0>
EINRASTEN=NEIN
ELEMENTPARAMETER EINBLENDEN=NEIN
KONTAKTPARAMETER EINBLENDEN=NEIN
LIN_CNC =ELEMENT/LINIE,KARTESISCH,UNBEGR,NEIN
NENN/<0,-5.186,-12.7>,<0,1,0>
MESS/<0,-5.186,-12.7>,<0,1,0>
KONST/GERADE,BE,3D,PKT1,PKT2,,
AUSREISSER_ENTFERNEN/AUS,3
FILTER/AUS,WELLENLÄNGE=0
EBENE_Y0_CNC =ELEMENT/EBENE,KARTESISCH,DREIECK,NEIN
NENN/<-1.427,0,-11.572>,<0,-1,0>
MESS/<-1.427,0,-11.572>,<0,-1,0>
KONST/EBENE,MITTELPKT,EBENE1_Y_CNC,EBENE2_Y_CNC
A_CNC =AUSRICHTUNG/ANFANG,AUFRUFEN:A_MANUELL,LISTE=JA
AUSRICHTUNG/EBENE,ZPLUS,EBENE_Z_CNC
AUSRICHTUNG/DREHEN,YPLUS,ZU,LIN_CNC,DREHEN UM,ZPLUS
AUSRICHTUNG/ÜBERTR,X_ACHSE,LIN_CNC
AUSRICHTUNG/ÜBERTR,Y_ACHSE,EBENE_Y0_CNC
AUSRICHTUNG/ENDE
SCHLEIFE/ENDE
GOTO/AUSWERTUNG
R3 =SPRUNGMARKE/
V8 =SCHLEIFE/ANFANG,ID=JA,NUMMER=4,ANFANG=1,AUSLASSEN=,
VERSATZ:X_ACHSE=0,Y_ACHSE=19.8,Z_ACHSE=0,WINKEL=0
A_MANUELL =AUSRICHTUNG/ANFANG,AUFRUFEN:START,LISTE=JA

and so on.....



thanks and greetings

Attached Files
  • i frogot, the prg. is not finishet yet, just a test
  • I cannot read the code(German), but I wonder if you can use a variable for the Z height of the feature. Instead of the Z being 0, -10.2, -20.4, I wonder if you can use the comments to populate a value for a variable.

    I imagine something like a comment or tracefield. Depending on the operator input, the variable V1 will be one of those values.

    If c1.input==1
    V1=0
    end if

    If c1.input==2
    v1=-10.2
    end if

    If c1.input==3
    v1=-20.4
    end if

    You then would plug in V1 for the z theo and target for the autofeature(auto plane???)

    To be upfront, I am not sure if the syntax is correct, but hopefully that gives the idea.
  • I have a comment for the user to input R1-4 (R= Row)

    IF_GOTO/C2.INPUT=="1",GOTO = R1
    IF_GOTO/C2.INPUT=="2",GOTO = R2
    IF_GOTO/C2.INPUT=="3",GOTO = R3
    IF_GOTO/C2.INPUT=="4",GOTO = R4
    the it jumps to de Row you choose. And yes these are Autofeatures

    it dont know if it works, thats because im here Smiley
  • You can use variables instead for absolute values. For example, ask the user which operation has been performed. Depending on the answer, the Z-value variable will change. Use this variable in the autofeature THEOs and TARGs.
  • Not really easy to read german prog...
    I would remove "" in if statements, I think IF_GOTO/C2.INPUT==1,GOTO = R1 should work directly.
    In addition, you could use an array to change values :
    For example, between R1 and R2, there are -10.2 z difference.
    You could let the loop inside a do /until like :
    ASSIGN/NUM=1
    ASSIGN/ZVAL=ARRAY(0,-10.2,-20.4,-30.6)
    DO/
    ZVAL_NUM=ZVAL[NUM]
    LOOP...
    LOOP/END
    ASSIGN/NUM=NUM+1
    UNTIL/NUM=5
  • ok thanks for the help i will try, and nexttime i will send the in english Slight smile
  • Not really easy to read german prog...
    I would remove "" in if statements, I think IF_GOTO/C2.INPUT==1,GOTO = R1 should work directly.
    In addition, you could use an array to change values :
    For example, between R1 and R2, there are -10.2 z difference.
    You could let the loop inside a do /until like :
    ASSIGN/NUM=1
    ASSIGN/ZVAL=ARRAY(0,-10.2,-20.4,-30.6)
    DO/
    ZVAL_NUM=ZVAL[NUM]
    LOOP...
    LOOP/END
    ASSIGN/NUM=NUM+1
    UNTIL/NUM=5


    Sorry for the dump question, but how i ''create'' the ZVAL_NUM=ZVAL[NUM]. i know thats should be basic knwoledge but im very new a codeing.
  • Sorry, it's ASSIGN/ ZVAL_NUM=ZVAL[NUM]​....
    Then you can use ZVAL_NUM in place of numeric values in Z (theo and target) (nenn und ziel ? Slight smile )