
UNITS/MM, ANGDEC
WKPLAN/XYPLAN
PRCOMP/ON
TECOMP/OFF
FLY/1
MODE/PROG, MAN
SNSET/APPRCH, 10.000000
SNSET/RETRCT, 10.000000
SNSET/DEPTH, 0.000000
SNSET/SEARCH, 20.0000
SNSET/CLRSRF, 5.000000
RECALL/D(MCS)
GEOALG/CIRCLE, LSTSQR
GEOALG/ARC, LSTSQR
GEOALG/PLANE, LSTSQR
$$
$$
DECL/COMMON,DOUBLE,NOM_D,SNS_D
DECL/COMMON,DOUBLE,P_Cord[3],SPH_Cord[3],II,JJ,KK
DECL/CHAR,20,SNS_LAB,PROBE_N
     SNS_LAB = VALUE/SNSLCT
       SNS_D = OBTAIN/SS(),8
     
       
TEMPSTRING = PROMPT/TITLE,'25球检验程序',TEXT,'请将测头移动到标准球的正上方',$
                    TEXT,'标准球的理论直径为',EDIT,NOM_D
                    
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$取得标准球球心的坐标值$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$定义标准球理论值$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
F(P_Point) = FEAT/POINT,CART,0,0,0,0,0,1
  MEAS/POINT,F(P_Point),0
  ENDMES
  
  P_Cord[1] = OBTAIN/FA(P_Point),3
  P_Cord[2] = OBTAIN/FA(P_Point),4
  P_Cord[3] = OBTAIN/FA(P_Point),5
  MEAS/POINT,F(P_Point),1
    PTMEAS/CART, P_cord[1], P_cord[2], P_cord[3]-1, 0, 0, 1
  ENDMES
  
  P_Cord[1] = OBTAIN/FA(P_Point),3
  P_Cord[2] = OBTAIN/FA(P_Point),4
  P_Cord[3] = OBTAIN/FA(P_Point),5
F(M_SPH) = FEAT/SPHERE, OUTER, CART, P_cord[1], P_cord[2], P_cord[3]-NOM_D/2,$
                NOM_D
MODE/AUTO,PROG,MAN
  MEAS/SPHERE,F(M_SPH),5
  ENDMES
  
  SPH_Cord[1] = OBTAIN/FA(M_SPH),4
  SPH_Cord[2] = OBTAIN/FA(M_SPH),5
  SPH_Cord[3] = OBTAIN/FA(M_SPH),6
F(M_SPH) = FEAT/SPHERE, OUTER, CART, SPH_Cord[1], SPH_Cord[2],$
                SPH_Cord[3],NOM_D
  MEAS/SPHERE,F(M_SPH),5
  ENDMES
  
  SPH_Cord[1] = OBTAIN/FA(M_SPH),4
  SPH_Cord[2] = OBTAIN/FA(M_SPH),5
  SPH_Cord[3] = OBTAIN/FA(M_SPH),6
F(M_SPH) = FEAT/SPHERE, OUTER, CART, SPH_Cord[1], SPH_Cord[2],$
                SPH_Cord[3],NOM_D
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$平移坐标系$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 PROBE_N = VALUE/SNSLCT
      II = OBTAIN/SS(),5
      JJ = OBTAIN/SS(),6
      KK = OBTAIN/SS(),7
F(DAT_DUM) = FEAT/PLANE,CART,SPH_Cord[1],SPH_Cord[2],SPH_Cord[3],-II,-JJ,-KK
D(SPH25) = DATSET/F(DAT_DUM),ZDIR,ZORIG
D(SPH25) = TRANS/XORIG,FA(M_SPH),YORIG,FA(M_SPH),ZORIG,FA(M_SPH)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$产生测量点$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SNSET/APPRCH, 10
SNSET/RETRCT, 10
SNSET/DEPTH, 0
SNSET/SEARCH, 10
SNSET/CLRSRF, 10
MODE/PROG,MAN
DECL/COMMON,DOUBLE,Radian_SPH,APP_D,TEMP_R,TEMP_G
DECL/COMMON,INTGR,I,J,K 
  Radian_SPH = ASSIGN/22.5*3.141592654/180
       APP_D = VALUE/SNSET,APPRCH
      TEMP_G = ASSIGN/APP_D + NOM_D/2 + SNS_D/2
      TEMP_R = ASSIGN/NOM_D/2
      
  MEAS/SPHERE,F(M_SPH),25
    
    PTMEAS/CART, 0, 0, NOM_D/2, 0, 0, 1
    
$$$$$$$$$$$$$$$$$$$$$$球22.5度时分布4个测量点$$$$$$$$$$$$$$$$$$$$$$    
    DO/I,1,4
      
      PTMEAS/POL,TEMP_R*SIN(Radian_SPH),0,TEMP_R*COS(Radian_SPH),$
                 SIN(Radian_SPH),0,COS(Radian_SPH)                 
      D(TEMP) = ROTATE/ZAXIS,360/16 
                
      DO/K,1,3           
        GOTO/POL,TEMP_G*SIN(Radian_SPH),0,TEMP_G*COS(Radian_SPH)
        D(TEMP) = ROTATE/ZAXIS,360/16
      ENDDO
      
    ENDDO
      D(TEMP) = ROTATE/ZAXIS,22.5   
$$$$$$$$$$$$$$$$$$$$$$球45度时分布8个测量点$$$$$$$$$$$$$$$$$$$$$$ 
    DO/I,1,8
    
      PTMEAS/POL,TEMP_R*SIN(2*Radian_SPH),0,TEMP_R*COS(2*Radian_SPH),$
                 SIN(2*Radian_SPH),0,COS(2*Radian_SPH)
      D(TEMP) = ROTATE/ZAXIS,360/32
                 
      DO/K,1,3           
        GOTO/POL,TEMP_G*SIN(2*Radian_SPH),0,TEMP_G*COS(2*Radian_SPH)
        D(TEMP) = ROTATE/ZAXIS,360/32
      ENDDO
      
    ENDDO
      D(TEMP) = ROTATE/ZAXIS,22.5
$$$$$$$$$$$$$$$$$$$$$$球67.5度时分布8个测量点$$$$$$$$$$$$$$$$$$$$$$    
    DO/I,1,4
      
      PTMEAS/POL,TEMP_R*SIN(3*Radian_SPH),0,TEMP_R*COS(3*Radian_SPH),$
                 SIN(3*Radian_SPH),0,COS(3*Radian_SPH)                 
      D(TEMP) = ROTATE/ZAXIS,360/16 
                
      DO/K,1,3           
        GOTO/POL,TEMP_G*SIN(3*Radian_SPH),0,TEMP_G*COS(3*Radian_SPH)
        D(TEMP) = ROTATE/ZAXIS,360/16
      ENDDO
      
    ENDDO
      D(TEMP) = ROTATE/ZAXIS,22.5
$$$$$$$$$$$$$$$$$$$$$$球90度时分布8个测量点$$$$$$$$$$$$$$$$$$$$$$    
    DO/I,1,8
    
      PTMEAS/POL,TEMP_R*SIN(4*Radian_SPH),0,TEMP_R*COS(4*Radian_SPH),$
                 SIN(4*Radian_SPH),0,COS(4*Radian_SPH)
      D(TEMP) = ROTATE/ZAXIS,360/32
                 
      DO/K,1,3           
        GOTO/POL,TEMP_G*SIN(4*Radian_SPH),0,TEMP_G*COS(4*Radian_SPH)
        D(TEMP) = ROTATE/ZAXIS,360/32
      ENDDO
      
    ENDDO
    D(TEMP) = ROTATE/ZAXIS,22.5
    
  ENDMES
   
 
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
M(EASI_SPHERE_HIGHLOW_POINTS) = MACRO/'FEATLABEL', 'DEVICELABEL', HIGHR, LOWR, RADSEPARATION, ER
  DECL/LOCAL, CHAR, 255, FNAME
  DECL/LOCAL, REAL, XC,YC,ZC,XX,YY,ZZ, CDIST
  DECL/LOCAL, INTGR, PCOUNT, LPCOUNT
  
  FNAME = OBTAIN/F(), 1
  ER = ASSIGN/0
  HIGHR = ASSIGN/0
  LOWR = ASSIGN/100000
  
  PCOUNT = VALUE/FA(), PTDATA
  XC = OBTAIN/FA(), 4
  YC = OBTAIN/FA(), 5
  ZC = OBTAIN/FA(), 6
  DO/LPCOUNT, 1, PCOUNT
    XX = OBTAIN/FA()[LPCOUNT],2
    YY = OBTAIN/FA()[LPCOUNT],3
    ZZ = OBTAIN/FA()[LPCOUNT],4
    
    CDIST = ASSIGN/SQRT((XX-XC)*(XX-XC)+(YY-YC)*(YY-YC)+(ZZ-ZC)*(ZZ-ZC))
    
    IF/(CDIST .GT. HIGHR)
      HIGHR = ASSIGN/CDIST
    ENDIF
    IF/(CDIST .LT. LOWR)    
      LOWR = ASSIGN/CDIST
    ENDIF
    WRITE/DID(), 'PTN = ',LPCOUNT:2, '  X = ', XX, '  Y = ', YY, '  Z = ', ZZ, '  R = ', CDIST
    WRITE/DID(DEFAULTSCREEN),'PTN = ',LPCOUNT:2, '  X = ', XX, '  Y = ', YY, '  Z = ', ZZ, '  R = ', CDIST
  ENDDO
  RADSEPARATION = ASSIGN/(HIGHR-LOWR)
ENDMAC
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$输出SPH1结果$$$$$$$$$$$$$$$$$$$$$$$$$$
DECL/COMMON, REAL, HR, LR, RADSEP
DECL/COMMON, INTGR, LPRET
DECL/COMMON, CHAR, 256, STESTDATE, STESTTIME, SSEP
DID(ISO103602-2Report) = DEVICE/STOR,'ISO-103602-Report.out'
OPEN/DID(ISO103602-2Report), DIRECT, OUTPUT, APPEND
SSEP = ASSIGN/'--------------------------------------------------------------------------------'
STESTDATE = ASSIGN/SDATE()
STESTTIME = ASSIGN/STIME()
WRITE/DID(ISO103602-2Report),SSEP 
WRITE/DID(DEFAULTSCREEN),SSEP 
WRITE/DID(ISO103602-2Report),'ISO10360-2 sphere minimin and maximun radius test. Performed on'
WRITE/DID(DEFAULTSCREEN),'ISO10360-2 sphere minimin and maximun radius test. Performed on'
WRITE/DID(ISO103602-2Report),'TIME : ', STESTTIME  
WRITE/DID(DEFAULTSCREEN),'TIME : ', STESTTIME 
WRITE/DID(ISO103602-2Report),'DATE : ', STESTDATE 
WRITE/DID(DEFAULTSCREEN),'DATE : ', STESTDATE
CALL/M(EASI_SPHERE_HIGHLOW_POINTS), (M_SPH), (ISO103602-2Report), HR, LR, RADSEP, LPRET
WRITE/DID(ISO103602-2Report),' ' 
WRITE/DID(DEFAULTSCREEN),' ' 
WRITE/DID(ISO103602-2Report),'Maximun Radius = ', HR:6:5, '  Minimun Radius = ', LR:6:5, '  Form Error = ', RADSEP:6:5
WRITE/DID(DEFAULTSCREEN),'Maximun Radius = ', HR:6:5, '  Minimun Radius = ', LR:6:5, '  Form Error = ', RADSEP:6:5
CLOSE/DID(ISO103602-2Report), KEEP                
                









