发布于 2009-03-15 23:08:28
0楼
PROC CYCLE83(REAL RTP,REAL RFP,REAL SDIS,REAL DP,REAL DPR,REAL FDEP,REAL FDPR,REAL DAM,REAL DTB,REAL DTS,REAL FRF,INT VARI,INT _AXN,REAL _MDEP,REAL _VRT,REAL _DTD,REAL _DIS1) SAVE SBLOF DISPLOF
DEF AXIS _Z
DEF REAL FAK,HH1,HH2,HH3,HH4,HH5,HH8,_HH9,VHA,_HMF,HZ,_FAK1
DEF INT HH6,HH7
DEF INT _ABS,_ORD,_APP
_ABS=1 _ORD=2 _APP=3
IF $P_GG[6]==2
_ABS=3 _ORD=1 _APP=2
ENDIF
IF $P_GG[6]==3
_ABS=2 _ORD=3 _APP=1
ENDIF
HH2=FDEP HH3=FRF HH4=$P_F HH6=0 FAK=1 HZ=1
IF($P_GG[13]==1)OR($P_GG[13]==3)
FAK=$MN_SCALING_VALUE_INCH
ENDIF
CASE _AXN OF 1 GOTOF _AX1 2 GOTOF _AX2 DEFAULT GOTOF _AX3
_AX1:
IF ISAXIS(_ABS)
_Z=$P_AXN1
GOTOF _AX
ELSE
GOTOF _FEHL3
ENDIF
_AX2:
IF ISAXIS(_ORD)
_Z=$P_AXN2
GOTOF _AX
ELSE
GOTOF _FEHL3
ENDIF
_AX3:
IF ISAXIS(_APP)
_Z=$P_AXN3
ELSE
GOTOF _FEHL3
ENDIF
_AX:
FRF=ABS(FRF) FDPR=ABS(FDPR) DPR=ABS(DPR) SDIS=ABS(SDIS)
_HMF=$P_ACTFRAME[_Z,SC]
IF(DPR==0)GOTOF _MA1
IF(RTP==RFP)GOTOF FEHL1
HH2=RFP-((RTP-RFP)/ABS(RTP-RFP)*DPR)
IF(DP==0)GOTOF _MA0
IF(DP==HH2)GOTOF _MA1
N10 MELDUNG(1)
_MA0:DP=HH2
_MA1:IF(RFP==DP)GOTOF _MAE
HH1=(RFP-DP)/ABS(RFP-DP)
IF(FRF<=1)AND(FRF>0.001)GOTOF _MA3
IF(FRF<0.001)GOTOF _MA2
FRF=1
GOTOF _MA3
_MA2:FRF=0.001
_MA3:
IF(FDPR==0)GOTOF _MA4A
HH2=RFP-HH1*FDPR
IF(FDEP==0)GOTOF _MA4
IF(FDEP==HH2)GOTOF _MA4A
N15 MELDUNG(8)
_MA4:FDEP=HH2
_MA4A:FDPR=ABS(RFP-FDEP)
IF(FDPR==0)GOTOF _MM4B
HH2=(RFP-FDEP)/FDPR
IF(HH2<>HH1)GOTOF FEHL2
_MM4B:HH2=FDEP
IF((HH2-DP)*HH1<0)
HH2=DP
FDEP=DP
FDPR=ABS(RFP-DP)
ENDIF
_HH9=FDPR
IF(_DTD==0)
_DTD=DTB
ENDIF
IF(_VRT<=0)
_VRT=HZ/FAK
ENDIF
FDEP=RFP*_HMF-FDPR*HH1 HH2=FDEP
HH7=1
IF($P_GG[13]<3)
_FAK1=1
IF($MN_SCALING_SYSTEM_IS_METRIC)
IF($P_GG[13]==1)
_FAK1=1/$MN_SCALING_VALUE_INCH
ENDIF
ELSE
IF($P_GG[13]==2)
_FAK1=$MN_SCALING_VALUE_INCH
ENDIF
ENDIF
ELSE
_FAK1=1
ENDIF
_MA5:
IF(RFP+SDIS*HH1/_HMF<>$P_EP[_Z]*_FAK1)
SBLON
N1 G0 G64 G90 AX[_Z]=RFP+SDIS*HH1/_HMF
SBLOF
ENDIF
HH8=FDPR
N2 _MA5A:G90 G1 F=HH3*HH4 AX[_Z]=HH2/_HMF
HH3=1
IF(NOT $P_ISTEST) AND (NOT $P_DRYRUN)
IF(HH2<>DP*_HMF)
IF(DTB>=0)
N5 G4 F=DTB
ELSE
N5 G4 S=-DTB
ENDIF
ELSE
IF(_DTD>=0)
N5 G4 F=_DTD
ELSE
N5 G4 S=-_DTD
ENDIF
ENDIF
ENDIF
IF(HH2==DP*_HMF)GOTOF _MA8
IF(DAM==0)
DAM=-1
_MDEP=FDPR
ENDIF
IF(DAM>0)GOTOF _MMD
HH8=-HH8*DAM
IF(HH8>=_MDEP)GOTOF _MMD1
HH8=_MDEP
_MMD1:
HH5=HH2-HH1*HH8
IF((HH5-DP*_HMF)*HH1>=0)GOTOF _MMD2
HH5=DP*_HMF
GOTOF _MA6
_MMD2:
IF((HH5-DP*_HMF)*HH1>=_MDEP)GOTOF _MA6
HH5=HH2-(HH2-DP*_HMF)/2
GOTOF _MA6
_MMD:
_HH9=_HH9-DAM
IF(_HH9_HH9=DAM
ENDIF
IF(ABS(HH2-DP*_HMF)-_HH9>=DAM)
IF(ABS(HH2-DP*_HMF)>2*DAM)
HH5=HH2-_HH9*HH1
ELSE
IF(ABS(HH2-DP*_HMF)>DAM)
HH5=HH2-ABS(HH2-DP*_HMF)/2*HH1
ELSE
HH5=DP*_HMF
ENDIF
ENDIF
ELSE
IF(ABS(HH2-DP*_HMF)>_HH9)
IF(ABS(HH2-DP*_HMF)>2*DAM)
HH5=DP*_HMF+DAM*HH1
ELSE
HH5=HH2-ABS(HH2-DP*_HMF)/2*HH1
ENDIF
ELSE
HH5=DP*_HMF
ENDIF
ENDIF
_MA6:IF(VARI==0)GOTOF _MA_SPB
N4 G90 G0 AX[_Z]=RFP+SDIS*HH1/_HMF
IF(NOT $P_ISTEST) AND (NOT $P_DRYRUN)
IF(DTS>=0)
N5 G4 F=DTS
ELSE
N5 G4 S=-DTS
ENDIF
ENDIF
IF(ABS(RFP*_HMF-HH2)*FAK<=30)
VHA=0.6
ELSE
VHA=ABS(RFP*_HMF-HH2)*FAK/50
IF(VHA>7)
VHA=7
ENDIF
ENDIF
VHA=VHA/FAK
IF (_DIS1>0)
VHA=_DIS1
ENDIF
N6 G90 AX[_Z]=HH2/_HMF+VHA*HH1/_HMF
GOTOF _MA7
_MA_SPB:
IF (_VRT>0)
N7 G0 G91 AX[_Z]=HH1*_VRT/_HMF
ELSE
N7 G0 G91 AX[_Z]=HH1*HZ/FAK/_HMF
ENDIF
N70 G1
_MA7:HH2=HH5
GOTOB _MA5A
_MA8:
SBLON
N8 G0 G90 AX[_Z]=RTP
N80 F=HH4
SBLOF
_MAE:MSG("")
RET
FEHL1:STOPRE
SETAL(61101)
RET
FEHL2:STOPRE
SETAL(61107)
RET
_FEHL3:STOPRE
SETAL(61803)
RET