探测误差校准 通过确定测量点到最小二乘拟合球球心距离的范围,评价三维探测误差P是否符合规定的最大允许探测误差MPEP。探针位置:按制造商限定范围任意配置,一般用20mm的测杆。校准过程:在标准球上选取25个探测点进行探测,探测点须均布。结果处理:用25个测量值计算出最小二乘球中心,求出25个测点到球心的距离R,P=RMAX-RMIN综合性评定:探测误差P不大于最大允许探测误差MPEP,允许重复再测一次。RECALL/D(MCS)UNITS/MM, ANGDECWKPLAN/XYPLANPRCOMP/ONTECOMP/OFFFLY/1SNSET/APPRCH, 10.000000SNSET/RETRCT, 10.000000SNSET/DEPTH, 0.000000SNSET/SEARCH, 10.000000SNSET/CLRSRF, 10.000000GEOALG/CIRCLE, LSTSQRGEOALG/ARC, LSTSQRGEOALG/PLANE, LSTSQR$$$$$$定义一个理论球,位置任意F(SPH1) = FEAT/SPHERE,OUTER,CART, -200.000000, -200.000000, -200.000000,$ 30.000000$$改为手动模式测量一个实际球MODE/MANMEAS/SPHERE, F(SPH1), 5 PTMEAS/CART, -356.937692, -107.199353, -373.184071, 0.071462, -0.037765,$ 0.996728 PTMEAS/CART, -356.892832, -95.183868, -380.621126, 0.074995, 0.908543,$ 0.411005 PTMEAS/CART, -369.263280, -104.866715, -380.604325, -0.899269, 0.145947,$ 0.412328 PTMEAS/CART, -358.708165, -118.254552, -380.602882, -0.067976,$ -0.908444, 0.412442 PTMEAS/CART, -346.313629, -107.139818, -380.541736, 0.908186, -0.033077,$ 0.417257decl/char,100,Var_messageVar_message=prompt/TEXT,'点击继续后,手动在球上取5个测量点'ENDMES$$用球的实际球心位置产生一个新的坐标系,原点在球心上D(ORG_SPH1) = TRANS/XORIG, FA(SPH1), YORIG, FA(SPH1), ZORIG, FA(SPH1)DECL/COMMON, INTGR, AjDECL/COMMON, INTGR, BjAj=prompt/'请输入测头A角角度'Bj=prompt/'请输入测头B角角度'D(CRD1) = ROTATE/ZAXIS, BjD(CRD2) = ROTATE/XAXIS, -Aj$$程序所需的变量声明、赋值$$定义圆周率和其它常规变量decl/DOUBLE,piedecl/INTGR,kkk,jjj$$声明测量点的坐标和法向量decl/DOUBLE,condx[8,4],condy[8,4],condz[4],i[8,4],j[8,4],k[4]$$声明实际球的半径decl/DOUBLE,R_act$$声明除顶点外4层测量点所在平面圆的半径decl/DOUBLE,Rar[4]$$声明标准球的直径decl/CHAR,100,SHP1_D$$取得标准球的直径SHP1_D=prompt/'请输入标准球的直径'R_act=assign/val(SHP1_D)*0.5pie=assign/3.141592654$$将标准球的理论值重新定义F(SPH1)=Feat/SPHERE,OUTER,CART,0,0,0,R_act*2$$循环赋值给数组变量,为球的测量点的坐标do/jjj,1,4,1 do/kkk,1,8,1 condx[kkk,jjj]=assign/R_act*sin(jjj*pie/8)*cos(kkk*pie/4) condy[kkk,jjj]=assign/R_act*sin(jjj*pie/8)*sin(kkk*pie/4) condz[jjj]=assign/R_act*cos(jjj*pie/8) i[kkk,jjj]=assign/sin(jjj*pie/8)*cos(kkk*pie/4) j[kkk,jjj]=assign/sin(jjj*pie/8)*sin(kkk*pie/4) k[jjj]=assign/cos(jjj*pie/8) enddoenddoMODE/PROG,MAN$$开始25点、5层测量实际球RECALL/D(CRD2)MEAS/SPHERE, F(SPH1), 25 GOTO/0,0,R_act+10 $$第1点 PTMEAS/CART, 0.000000, 0.000000, R_act, 0.000000, 0.000000, 1.000000 $$22.5度4个测量点 ptmeas/cart,condx[2,1],condy[2,1],condz[1],i[2,1],j[2,1],k[1] ptmeas/cart,condx[4,1],condy[4,1],condz[1],i[4,1],j[4,1],k[1] ptmeas/cart,condx[6,1],condy[6,1],condz[1],i[6,1],j[6,1],k[1] ptmeas/cart,condx[8,1],condy[8,1],condz[1],i[8,1],j[8,1],k[1] $$45度8个测量点 ptmeas/cart,condx[1,2],condy[1,2],condz[2],i[1,2],j[1,2],k[2] ptmeas/cart,condx[2,2],condy[2,2],condz[2],i[2,2],j[2,2],k[2] ptmeas/cart,condx[3,2],condy[3,2],condz[2],i[3,2],j[3,2],k[2] ptmeas/cart,condx[4,2],condy[4,2],condz[2],i[4,2],j[4,2],k[2] ptmeas/cart,condx[5,2],condy[5,2],condz[2],i[5,2],j[5,2],k[2] ptmeas/cart,condx[6,2],condy[6,2],condz[2],i[6,2],j[6,2],k[2] ptmeas/cart,condx[7,2],condy[7,2],condz[2],i[7,2],j[7,2],k[2] ptmeas/cart,condx[8,2],condy[8,2],condz[2],i[8,2],j[8,2],k[2] $$67.5度4个测量点 ptmeas/cart,condx[2,3],condy[2,3],condz[3],i[2,3],j[2,3],k[3] ptmeas/cart,condx[4,3],condy[4,3],condz[3],i[4,3],j[4,3],k[3] ptmeas/cart,condx[6,3],condy[6,3],condz[3],i[6,3],j[6,3],k[3] ptmeas/cart,condx[8,3],condy[8,3],condz[3],i[8,3],j[8,3],k[3] $$90度8个测量点 ptmeas/cart,condx[1,4],condy[1,4],condz[4],i[1,4],j[1,4],k[4] ptmeas/cart,condx[2,4],condy[2,4],condz[4],i[2,4],j[2,4],k[4] ptmeas/cart,condx[3,4],condy[3,4],condz[4],i[3,4],j[3,4],k[4] ptmeas/cart,condx[4,4],condy[4,4],condz[4],i[4,4],j[4,4],k[4] ptmeas/cart,condx[5,4],condy[5,4],condz[4],i[5,4],j[5,4],k[4] ptmeas/cart,condx[6,4],condy[6,4],condz[4],i[6,4],j[6,4],k[4] ptmeas/cart,condx[7,4],condy[7,4],condz[4],i[7,4],j[7,4],k[4] ptmeas/cart,condx[8,4],condy[8,4],condz[4],i[8,4],j[8,4],k[4] GOTO/0,0,R_act+10ENDMES$$$$$$$$$$$$$$$$$$$$输出宏定义$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$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(@FEATLABEL), 1 ER = ASSIGN/0 HIGHR = ASSIGN/0 LOWR = ASSIGN/100000 PCOUNT = VALUE/FA(@FEATLABEL), PTDATA XC = OBTAIN/FA(@FEATLABEL), 4 YC = OBTAIN/FA(@FEATLABEL), 5 ZC = OBTAIN/FA(@FEATLABEL), 6 DO/LPCOUNT, 1, PCOUNT XX = OBTAIN/FA(@FEATLABEL)[LPCOUNT],2 YY = OBTAIN/FA(@FEATLABEL)[LPCOUNT],3 ZZ = OBTAIN/FA(@FEATLABEL)[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(@DEVICELABEL), '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, RADSEPDECL/COMMON, INTGR, LPRETDECL/COMMON, CHAR, 256, STESTDATE, STESTTIME, SSEPDID(ISO103602-2Report) = DEVICE/STOR,'ISO-103602-Report.out'OPEN/DID(ISO103602-2Report), DIRECT, OUTPUT, APPENDSSEP = 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 : ', STESTDATECALL/M(EASI_SPHERE_HIGHLOW_POINTS), (SPH1), (ISO103602-2Report), HR, LR, RADSEP, LPRETWRITE/DID(ISO103602-2Report),' ' WRITE/DID(DEFAULTSCREEN),' ' WRITE/DID(ISO103602-2Report),'Maximun Radius = ', HR:6:5, ' Minimun Radius = ', LR:6:5, ' Form Error = ', RADSEP:6:5WRITE/DID(DEFAULTSCREEN),'Maximun Radius = ', HR:6:5, ' Minimun Radius = ', LR:6:5, ' Form Error = ', RADSEP:6:5CLOSE/DID(ISO103602-2Report), KEEP$$来源:山涧果子