一种零部件序号自动标注的方法与流程

文档序号:16091048发布日期:2018-11-27 23:01阅读:820来源:国知局

本发明涉及产品标注领域,尤其涉及一种零部件序号自动标注的方法。



背景技术:

对工业产品零部件进行有序标注是工业产品生产过程中必不可少的一道工序,目前在机械工程设计与制造领域,广泛采用了计算机辅助设计与制造(CAD/CAM)技术,虽然Pro/E、UG、Solidwork和Catia等CAD/CAM一体化软件得到普遍使用,但工厂技术文件都以图样来表达,通常由上述CAD/CAM软件完成3D造型,再转成工程图,在AUTOCAD平台完成标注等工作,在利用AUTOCAD完成装配图的标注中,必须对零部件编写序号,AUTOCAD等软件本身没有直接标注零部件序号的命令,通常完成一个序号标注,需要用画线(line)或引线(leader)命令去画指引线,然后再用TEXT(文字)命令写入零件序号。完成一个标注,至少需要十几个操作步骤,不仅速度慢、效率低,特别是零部件数目较多时,重复操作劳动强度大,零件序号要手工每次输入,标注文字的最终位置需要手工控制,比较随意,图形不美观,难以符合国家机械制图标准,目前虽有一些序号标注的程序,但智能化程度不足,需人工干预较多,要输入较多参数,当三维产品模型在二维工程图中的投影出的形状较为复杂时,一些软件自动生成的标注线指向的零部件会存在误差并出席标注线交叉。



技术实现要素:

针对上述现有技术的现状,本发明所要解决的技术问题是针对上述现有技术提供一种能够直接为三维产品模型的零部件进行自动序号并从零部件的质心出发进行规则标注,又能够避免零标注线相互交叉,且标注速度快的一种零部件序号自动标注的方法。

本发明解决上述技术问题所采用的技术方案为:一种零部件序号自动标注的方法,依次包括如下步骤:

步骤(1)将需要进行标注的三维数字产品模型在窗口化应用程序中以宽度为W、高度为H的分辨率且在直角坐标系O-XYZ中固定一个三维视角对产品的所有零部件依次进行单色渲染。

步骤(2)将三维数字产品的一个零部件进行单色渲染后,后台对当前渲染窗口的结果保存为一幅RGBA的参数图像Irgb,其分辨率为W×H,并把Irgb转化为灰度图Igray。

步骤(3)根据已得到的灰度图Igray,其任意一点像素点的值非1即0,假如其是边界点,那么该点的像素值为1,并且在其邻域内至少存在一个0像素点。使用2×2邻域像素区域对灰度图进行扫描,则四个像素值得和有0,1,2,3,4五种情况,当像素和为0时,说明四像素点为全黑点,当像素和为4时,说明四像素点为全白点,这都不是边界区域。当像素和为1或2或3时,说明四点中既有0像素点也有1像素点,即为需要处理的边界像素区域点集。因此通过2×2邻域像素对灰度图Igray进行逐行扫描,并刷选出像素和等于1或2或3的像素区域,使用4-邻接边缘进行描述,标记出所有满足条件的像素区域中的1像素点,从而得到所有的像素边界点集Boundary。

步骤(4)根据所有边界点集Boundary的像素位置,为每一个边界点BP赋予一个二空间坐标值(x,y),x,y为边界点BP在灰度图Igray中的像素的横坐标和纵坐标位置,并根据边界轮廓对二维形状进行三角化。

步骤(5)二维形状边界三角化后形成具有顶点V和面边E信息的三角化网格模型,使用精确测地线算法计算以三角网格每一个顶点为源点的测地剧场,并通过测地距离场计算二维三角化网格模型的质心。其中,二维形状的质心计算如下步骤(5-1)到步骤(5-4)。

步骤(5-1)计算三角化网格内部以一个顶点为源点到其他各个点的测地距离场Dfiled,并通过公式计算该点到其他个点测地距离的平均值,公式中ρ(x)为在顶点x出的密度,通常取ρ(x)=1,dg(x,y)为点y到点x的内部距离。

步骤(5-2)通过公式计算三角网格模型内部的质心点,c即为二维形状的质心位置。

步骤(5-3)建立能量函数可采用梯度下降法进行求解,其梯度函数由E(y)恒正且有界,该能量函数的收敛性能够得到保证。

步骤(5-4)计算几何体的几何质心需要最小化公式所述的能量函数,且其梯度函数中梯度向量具有明确的几何意义,可通过从x到y的最短路径跟踪得到,其方向为该最短路的结束方向,长度为1,在具体实现中,需要注意以下问题,(1)当y跑出边界时,通过将y的新旧位置连线与表面求交的方式将y拉回去,(2)基于内部距离的惯性矩E(y)的极小值不一定唯一,因此我们随机选取10个不同的初值分别优化E(y),并取最优的y作为几何质心。

步骤(6)使用步骤(1)-步骤(5)的方法为三维数值产品的所有N个零部件计算得到对应的二维质心点位置集{c1,c2L cn}。

步骤(7)建立以宽度为W、高度为H的四边形区域,以长度spaceLen作为间隔距离在W×H的四边形区域上均匀采样生成M个点,其中M≥N,对M个点按逆时针进行排序并作为产品标注的目标点。

步骤(8)为了得到一个零部件的质心位置只指向一个目标点且每一条质心点和目标点的连续不交叉,建立目标优化函数其中dij为第i(1≤i≤M)个质心点到第j(1≤j≤N)标注目标点的欧式距离,目标优化函数的限制条件为且Xij∈{1,0},求解优化目标函数如下步骤(8-1)和步骤(8-2)。

步骤(8-1)计算N个质心位置点到M个标注目的点的欧式距离,形成一个欧式距离矩阵disMatrix。

步骤(8-2)变换距离矩阵disMatrix,使各行各列都出现0元素。距离矩阵disMatrix每行元素都减去该行最小元素;距离矩阵disMatrix每列元素都减去该列最小元素。

步骤(8-3)建立一个与距离矩阵disMatrix行数和列数一样标记矩阵signMatrix,并将标记矩阵signMatrix中所有元素的值初始化为1,行标识向量lineVector(共N个数值),列标识向量rowVector(共M个数值),两个标识向量元素的初始值为0。

步骤(8-4)从距离矩阵disMatrix第一行开始搜索,若该行只有一个零元素,记录零元素的位置(i,j),在标记矩阵signMatrix上位置(i,j)对应的值记为0,在距离矩阵disMatrix中遍历第i行及第j列元素值为0所在的位置(m,n),在标记矩阵signMatrix位置(m,n)对应的值记为2。如果标记矩阵signMatrix所有行都有0元素,则跳转到步骤(9)。

步骤(8-5)从标记矩阵signMatrix第一行开始搜索,若该行没有元素的值为0,则记录行号i,并将标识向量lineVector第i个元素赋值为1(即lineVector(i)=1)。

步骤(8-6)再遍历标记矩阵signMatrix中其他行,若该行没有元素的值为2,记录行号i,并在该行中找出值为0的列号j,并将标识向量rowVector第i个元素赋值为1(即rowVector(i)=1)。

步骤(8-7)找出标识向量lineVector中值为1的位置i和标识向量rowVector中值为1的位置j,在距离矩阵disMatrix中在所有第i行上且不在第j列中的元素最小的值uij。

步骤(8-8)在距离矩阵disMatrix中在所有i行的值减去uij(其中元素值为0的元素不再相减),在所有j行的值加上uij。

步骤(8-9)重复上述步骤(8-4)到步骤(8-9)的步骤。

步骤(9)对已求解得到的最优距离矩阵disMatrix的每一行进行遍历找出值为“0”的元素,并记录为序列对集(i,j),并在最终渲染图上将Xij=1的第i(1≤i≤M)个质心点到第j(1≤j≤N)标注目标点进行连线用于标注。

与现有技术相比,本发明的优点在于:首先,本发明中将待标注的三维零部件在同一个视角窗口下进行渲染,并得到三维零部件的二维形状单色渲染图,将渲染图转化为灰度图并获取二维形状的边界轮廓,通过获取到的边界轮廓对二维形状进行三角网格化,再进一步使用测地线方法计算得到位于二维形状内部的质心,从而简化了二维不规则形状质心的计算步骤,同时又避免了质心位置可能出现在形状外而导致标注出现误差的问题,其次,通过建立零部件标注优化方程,并设定标注的约束条件,形成各个零部件的最终标注结果既保证了每一个标注起始点都是从零部件内部指出,又能够避免标注线相互之间形成交叉,保证了零部件的标注可以按照用户预先设定的规则进行标,提高了零部件的标注速度。

附图说明

图1是本发明的流程示意图。

具体实施方式

以下结合附图,对本发明的具体实施方式作进一步详述,以使本发明技术方案更易于理解和掌握。

如图1所示,一种零部件序号自动标注的方法,依次包括如下步骤:

步骤(1)将需要进行标注的三维数字产品模型在窗口化应用程序中以宽度为W、高度为H的分辨率且在直角坐标系O-XYZ中固定一个三维视角对产品的所有零部件依次进行单色渲染.

使用常用的建模工具(如3dMax、Solidwork)建立三维数字产品模型,依据对应文件存储格式实现模型文件的读取,将模型的各个零部件进行分类读取及管理。使用常见的图形API(如OpenGL、DirectX)建立三维图形渲染窗口化程序,背景颜色设置为白色。

步骤(2)将三维数字产品的一个零部件进行单色渲染后,后台对当前渲染窗口的结果保存为一幅RGBA的参数图像Irgb,其分辨率为W×H,并把Irgb转化为灰度图Igray。

设定渲染程序的分辨率为W×H,固定渲染程序模型矩阵,视觉矩阵,依次对三维数字产品模型的每一个零部件在窗口化程序以同一个颜色对零部件进行渲染,并保存相应的渲染结果形成包含RGB的彩色图,通过公式Gray=(R*299+G*587+B*114+500)/1000将彩色图转化为灰度图Igray。

步骤(3)根据已得到的灰度图Igray,其任意一点像素点的值非1即0,假如其是边界点,那么该点的像素值为1,并且在其邻域内至少存在一个0像素点。使用2×2邻域像素区域对灰度图进行扫描,则四个像素值得和有0,1,2,3,4五种情况,当像素和为0时,说明四像素点为全黑点,当像素和为4时,说明四像素点为全白点,这都不是边界区域。当像素和为1或2或3时,说明四点中既有0像素点也有1像素点,即为需要处理的边界像素区域点集。因此通过2×2邻域像素对灰度图Igray进行逐行扫描,并刷选出像素和等于1或2或3的像素区域,使用4-邻接边缘进行描述,标记出所有满足条件的像素区域中的1像素点,从而得到所有的像素边界点集Boundary。

步骤(4)根据所有边界点集Boundary的像素位置,为每一个边界点BP赋予一个二空间坐标值(x,y),x,y为边界点BP在灰度图Igray中的像素的横坐标和纵坐标位置,并根据边界轮廓对二维形状进行三角化。

步骤(5)二维形状边界三角化后形成具有顶点V和面边E信息的三角化网格模型,使用精确测地线算法计算以三角网格每一个顶点为源点的测地剧场,并通过测地距离场计算二维三角化网格模型的质心。其中,二维形状的质心计算如下步骤(5-1)到步骤(5-4)。

步骤(5-1)计算三角化网格内部以一个顶点为源点到其他各个点的测地距离场Dfiled,并通过公式计算该点到其他个点测地距离的平均值,公式中ρ(x)为在顶点x出的密度,通常取ρ(x)=1,dg(x,y)为点y到点x的内部距离。

步骤(5-2)通过公式计算三角网格模型内部的质心点,c即为二维形状的质心位置。

步骤(5-3)建立能量函数可采用梯度下降法进行求解,其梯度函数由E(y)恒正且有界,该能量函数的收敛性能够得到保证。

步骤(5-4)计算几何体的几何质心需要最小化公式所述的能量函数,且其梯度函数中梯度向量具有明确的几何意义,可通过从x到y的最短路径跟踪得到,其方向为该最短路的结束方向,长度为1.在具体实现中,需要注意以下问题,(1)当y跑出边界时,通过将y的新旧位置连线与表面求交的方式将y拉回去,(2)基于内部距离的惯性矩E(y)的极小值不一定唯一,因此我们随机选取10个不同的初值分别优化E(y),并取最优的y作为几何质心。

步骤(6)使用步骤(1)-步骤(5)的方法为三维数值产品的所有N个零部件计算得到对应的二维质心点位置集{c1,c2L cn}。

步骤(7)建立以宽度为W、高度为H的四边形区域,以长度spaceLen作为间隔距离在W×H的四边形区域上均匀采样生成M个点,其中M≥N.对M个点按逆时针进行排序并作为产品标注的目标点。

步骤(8)为了得到一个零部件的质心位置只指向一个目标点且每一条质心点和目标点的连续不交叉,建立目标优化函数其中dij为第i(1≤i≤M)个质心点到第j(1≤j≤N)标注目标点的欧式距离,目标优化函数的限制条件为且Xij∈{1,0}。求解优化目标函数如下步骤(8-1)和步骤(8-2):

步骤(8-1)计算N个质心位置点到M个标注目的点的欧式距离,形成一个欧式距离矩阵disMatrix。

步骤(8-2)变换距离矩阵disMatrix,使各行各列都出现0元素。距离矩阵disMatrix每行元素都减去该行最小元素;距离矩阵disMatrix每列元素都减去该列最小元素。

步骤(8-3)建立一个与距离矩阵disMatrix行数和列数一样标记矩阵signMatrix,并将标记矩阵signMatrix中所有元素的值初始化为1,行标识向量lineVector(共N个数值),列标识向量rowVector(共M个数值),两个标识向量元素的初始值为0。

步骤(8-4)从距离矩阵disMatrix第一行开始搜索,若该行只有一个零元素,记录零元素的位置(i,j),在标记矩阵signMatrix上位置(i,j)对应的值记为0,在距离矩阵disMatrix中遍历第i行及第j列元素值为0所在的位置(m,n),在标记矩阵signMatrix位置(m,n)对应的值记为2。如果标记矩阵signMatrix所有行都有0元素,则跳转到步骤(9)。

步骤(8-5)从标记矩阵signMatrix第一行开始搜索,若该行没有元素的值为0,则记录行号i,并将标识向量lineVector第i个元素赋值为1(即lineVector(i)=1)。

步骤(8-6)再遍历标记矩阵signMatrix中其他行,若该行没有元素的值为2,记录行号i,并在该行中找出值为0的列号j,并将标识向量rowVector第i个元素赋值为1(即rowVector(i)=1)。

步骤(8-7)找出标识向量lineVector中值为1的位置i和标识向量rowVector中值为1的位置j,在距离矩阵disMatrix中在所有第i行上且不在第j列中的元素最小的值uij。

步骤(8-8)在距离矩阵disMatrix中在所有i行的值减去uij(其中元素值为0的元素不再相减),在所有j行的值加上uij。

步骤(8-9)重复上述步骤(8-4)到步骤(8-9)的步骤。

步骤(9)对已求解得到的最优距离矩阵disMatrix的每一行进行遍历找出值为“0”的元素,并记录为序列对集(i,j),并在最终渲染图上将Xij=1的第i(1≤i≤M)个质心点到第j(1≤j≤N)标注目标点进行连线用于标注。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行同等替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神与范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1