相关文章,在仿真秀官网搜索:
RationalDMIS 7.1变量取值最大偏差/最小偏差(面轮廓度)
RationalDMIS 7.1曲面测量与评价(面轮廓度)
RationalDMIS3.5—6.5面轮廓度如何评价
RationalDMIS PC-DMIS Metrolog XG关于测量中法向偏差的计算(点轮廓度,T值,ND)
PC-DMIS中的T值与RationalDMIS点轮廓度是分别如何评价的?
RationalDMIS 7.0 图形区点颜色显示点轮廓度(T值)是否超差
在车身及薄壁件的测量当中,经常需要评价点轮廓公差并给出报告,但是点轮廓的具体意义是什么呢?很多人误以为是理论点和实际点的距离,这个理解是错误的;比较常用的一个说法将点轮廓公差叫做点的综合误差,也就是在法矢方向的误差,这个误差值有正负区分;当实际点相对于理论点及理论法矢在正方向,点轮廓为正;否则为负;
如下图:黑色原点及箭头为理论点和理论法矢,红色原点和蓝色原点分别为在正方向和负方向的2个实测点,那么点轮廓绝对值就是将实测点投影到过理论点以理论法矢为方向的直线上得到的投影点和理论点之间的距离;
在DMIS标准中点轮廓公差的定义说明如下:
TOL/PROFP:Specifies a profile tolerance applied to a point along the normal of the point's corresponding line(curve) or surface
算法原型基于高中数学,空间向量的夹角和距离公式:
三坐标给出的面的矢量偏差通常是这样获得的:由CAD数模可以得到曲面上某点M的理论坐标值(x0,y0,z0),和过该点的法线向量m与X、Y、Z三个坐标轴的夹角θ10,θ20,θ30,建立M点的标准法向矢量。设实测点为M1,获得坐标为(x1,x2,x3),那么差值为:
Mx = x1-x0
My = y1-y0
Mz = z1-z0
M0-M1的向量为:
P=DX*I+DY*J+DZ*K
M0M1向量在法线向量m上的投影就是通常三坐标测量给出的曲面的P - “法向偏差”。法向偏差通常是GD&T中的轮廓度的公差值。
P值为正,实测点在该点负值的切平面外侧(通常三坐标软件表示为黄或红色),工件做大了。P为负值,实测点在该点的切平面内侧(通常三坐标软件表示为蓝色),说明工件做小了。因此法向偏差P可以比较直观的显示零件的某处是做大了还是做小了。
以下给出演示算法的DMIS程序:
$$ Calc point profile
$$ By FuHaixin, Ver:20170511
M(PtProfile)=MACRO/'PtLabel'
DECL/COMMON,DOUBLE,NOMX, NOMY, NOMZ, NOMI, NOMJ, NOMK
DECL/COMMON,DOUBLE,ACTX, ACTY, ACTZ
DECL/COMMON,DOUBLE,PtDist
NOMX = OBTAIN/F(@PtLabel),3
NOMY = OBTAIN/F(@PtLabel),4
NOMZ = OBTAIN/F(@PtLabel),5
NOMI = OBTAIN/F(@PtLabel),6
NOMJ = OBTAIN/F(@PtLabel),7
NOMK = OBTAIN/F(@PtLabel),8
ACTX = OBTAIN/FA(@PtLabel),3
ACTY = OBTAIN/FA(@PtLabel),4
ACTZ = OBTAIN/FA(@PtLabel),5
$$ 计算理论点实际点距离
PtDist = ASSIGN/ SQRT( (NOMX-ACTX)*(NOMX-ACTX) + (NOMY-ACTY)*(NOMY-ACTY) + (NOMZ-ACTZ)*(NOMZ-ACTZ) )
DECL/COMMON,VECTOR,VcAct2Nom
DECL/COMMON,DOUBLE, VcAct2NomI, VcAct2NomJ, VcAct2NomK
$$ 得到实际点和理论点连线的向量,并将向量单位化;
VcAct2Nom = ASSIGN/ VCART( NOMX-ACTX, NOMY-ACTY, NOMZ-ACTZ )
VcAct2Nom = ASSIGN/ VUNIT( VcAct2Nom )
VcAct2NomI = ASSIGN/ VECX( VcAct2Nom )
VcAct2NomJ = ASSIGN/ VECY( VcAct2Nom )
VcAct2NomK = ASSIGN/ VECZ( VcAct2Nom )
$$ 计算点轮廓结果;
DECL/COMMON,DOUBLE,COSAngle , PtProf
COSAngle=ASSIGN/(NOMI*VcAct2NomI+NOMJ*VcAct2NomJ +NOMK*VcAct2NomK)/SQRT(NOMI*NOMI+NOMJ*NOMJ+ NOMK*NOMK)/SQRT(VcAct2NomI*VcAct2NomI+ VcAct2NomJ*VcAct2NomJ+ VcAct2NomK*VcAct2NomK )
PtProf = ASSIGN/ COSAngle * PtDist * -1
$$ WRITE/DID(DefaultScreen),PtProf
ENDMAC
CALL/M(PtProfile),'PT1'
CALL/M(PtProfile),'PT2'
CALL/M(PtProfile),'PT3'
CALL/M(PtProfile),'PT4'
CALL/M(PtProfile),'PT5'
CALL/M(PtProfile),'PT6'
CALL/M(PtProfile),'PT7'
CALL/M(PtProfile),'PT8'
CALL/M(PtProfile),'PT9'
CALL/M(PtProfile),'PT10'