APP下载

一种工程图尺寸标注自适应调整方法

2022-10-12刘夫云耿立冬江友志

机械设计与制造 2022年10期
关键词:工程图数组箭头

刘夫云,耿立冬,江友志,吴 强

(桂林电子科技大学机电工程学院,广西 桂林 541004)

1 引言

在工程设计领域,二维工程图是产品设计的最终输出和生产加工的重要依据,快速得到符合生产要求的二维工程图,是降低出错率、提高设计效率的关键,尺寸标注是二维工程图几何信息表达的重要组成部分,在工程图绘制或参数化模型驱动生成过程中会出现如下问题,如图1 所示。(1)尺寸标注与轮廓线重叠干涉;(2)尺寸文本线之间间距不相等;(3)同层尺寸文本线之间未对齐;(4)尺寸标注与轮廓线重叠干涉。

图1 尺寸标注问题Fig.1 Dimension Problem

二维工程图中尺寸标注布局没有具体的规范标准[1],学者们针对三维模型参数化生成二维工程图进行了大量的研究[1-7],其中文献[2-4]概述了Solidworks 二维工程图参数化调用API 函数方法,简述了二维工程图需要调整的元素。文献[5-6]提出了一种二维工程图尺寸标注自动调整方法,实现对驱动更新后的水平、竖直、角度尺寸标注的调整,但不能对非水平非竖直的线性尺寸标注进行调整,且局限于参数化驱动的目标工程图中。

针对上述问题,这里通过自动获取尺寸标注信息、对水平和竖直尺寸标注自动分层、尺寸标注干涉判断、干涉尺寸微调整等步骤,实现了尺寸标注自适应纠错和调整,并用此原理开发了一种尺寸标注调整系统,验证了此方法对Solidworks二维工程图尺寸标注自适应调整的通用性。

2 尺寸标注简化及位置基准确定

2.1 尺寸标注的结构组成

如图2(a)所示,水平尺寸标注分为尺寸界线、尺寸线、尺寸数字和箭头等四个部分,其余线性尺寸与水平尺寸的结构划分相同,仅布局方向不同。

图2 线性尺寸构成及简化Fig.2 Linear Dimension Composition and Simplification

角度尺寸标注与线性尺寸标注的结构划分相同,如图3(a)所示,可以通过判断尺寸界线是否平行,确定是否是角度尺寸。

2.2 尺寸标注结构简化

在Solidworks二维工程图中默认字体是3.5mm仿宋,字体高度是相对于A0-A4标准图纸模板固定,在工程图中,各个视图缩放比例不同,文字注释字体高度相对于工程图的各个视图也是不同的,通过验证,文字注释在视图中的相对高度为:

式中:h—字体在视图中的相对高度;k—视图比例。

用IScaleRatio 函数可获取当前视图比例,确定注释字高h;用GetArrowHeadAtIndex2()函数获取尺寸线的起始箭头和终点箭头坐标,连接两点坐标确定尺寸线的具体位置。

根据获取的注释字高h和尺寸线位置,对获取的尺寸进行简化,如图2(b)所示。简化的尺寸由矩形框和尺寸文本线组成,其中两箭头点坐标之间的距离称为尺寸的宽度,矩形框用来确定尺寸线之间的位置间距,大小为h,用两端箭头坐标确定的尺寸线,通过判断尺寸线段间是否相交,确定尺寸线之间是否存在干涉。其余线性尺寸均与水平尺寸简化相同。

角度尺寸的简化,如图3(b)所示。同理用GetArrowHeadAt-Index2()函数获取文本线的起始箭头和终点箭头坐标,连接两点,将弧形文本线简化为直线,其余部分与线性尺寸简化相同。

图3 角度尺寸构成及简化Fig.3 Angle Dimension Composition and Simplification

2.3 确定尺寸标注在视图中的位置基准

二维工程图是用各种不同角度的视图来表达三维零件的几何特征信息的,尺寸标注是表述视图中几何特征信息的精确数据,确定各个视图中的基准是尺寸标注自适应调整的基础。

在Solidworks二维工程图中,每一个视图都存在一个视图边界框,视图边界框是一个将当前视图完全包围的框,具有随视图大小变化自动调整的特点,用Solidworks API中GetOutline()函数可以获取当前视图边界框对角点(最小点和最大点)坐标;用position()函数获取视图中点坐标,即视图中心坐标,如图4所示。

图4 视图基准示意图Fig.4 The Sketch Map of View Benchmark

通过尺寸线的位置坐标与视图中点和视图包络框对角点坐标的对比,确定尺寸在视图中的相对位置。

将GetOutline()、position()函数获取的视图信息放入数组中,最小点坐标放入数组Xmin()、Ymin()中,最大点坐标放入数组Xmax()、Ymax()中,中点坐标放入数组Xmid()、Ymid()中,以便后期数据处理和调用。

3 水平、竖直尺寸自动分层调整

3.1 尺寸标注的布局特点

在二维工程图中,常用的尺寸布局方式有两种,如图5所示。

图5 常用的两种标注方式Fig.5 Two Commonly Used Annotation Methods

最短的尺寸标注分布在第一层,根据此特点,可对尺寸进行布局,尺寸标注按尺寸值大小依次排序,最小尺寸放在靠近轮廓的第一布局层。

判断尺寸标注与前一个尺寸是否存在包含关系,然后依次布局,若存在包含关系,则第n个尺寸布局层计算公式,如式(2)所示。

若不存在包含关系,则第n个尺寸布局层计算公式,式(3)所示。

式中:P(n)—第n个尺寸布局层的层数;P(n-1)—第n-1个尺寸布局层的层数;Δ—布局层之间的固定间距。

3.2 尺寸标注自动分层算法实现

3.2.1 水平尺寸和竖直尺寸的分类

在一个线性尺寸标注中存在两个箭头,用GetArrowHeadAt-Index2()函数获取箭头坐标,其中GetArrowHeadAtIndex2(0)表示获取的是第一个箭头,GetArrowHeadAtIndex2(1)表示获取的是第二个箭头。设定数组AHS()、AHE()满足式(5),用于存放当前尺寸箭头信息,其中数组中第一个元素是箭头X坐标,第二个元素是箭头的Y坐标。

根据获取的尺寸标注箭头坐标,对尺寸标注进行划分。将尺寸线两端的箭头坐标对比,若Y坐标相等,则划分为水平尺寸;若X坐标相等,则划分为竖直尺寸;其余尺寸则划分为其它尺寸。

将当前视图中所有起始箭头的X坐标存放入Xstart()中、起始箭头的Y坐标存放入Ystart()中、终点箭头的X坐标存放入Xend()中、终点箭头的Y坐标存放入Yend()中,如图6所示。

图6 尺寸标注坐标分类数组关系图Fig.6 Dimension Coordinate Classification Array Diagram

对获取的尺寸标注进行排序,用来确定尺寸标注的位置,便于对需要调整的尺寸标注进行调整,序号从1开始,每获取一个尺寸后加1。

在数组中,数组下标默认是从0开始,而序号排列是从1开始,故在数组中下标为n的元素,其属于第n+1个尺寸标注;若满足式(6),证明当前视图中第n+1个尺寸标注是竖直尺寸,将其序号存入数组V()中;若满足式(7),证明当前视图中第(n+1)个尺寸标注是水平尺寸,将其序号存入数组H()中;剩余尺寸存放入数组O()中。

3.2.2 自动布局算法

根据上文获取的视图位置基准(视图边界框和视图中点坐标),对获取的当前视图中水平尺寸标注序号数组H()和竖直尺寸标注序号数组V()进行分布区域划分。

水平尺寸的分层,如图7所示。把视图分为从上至下的Ⅰ、Ⅱ、Ⅲ、Ⅳ四个区域。

图7 水平尺寸标注区域划分图Fig.7 Horizontal Dimension Marking Area Division Drawing

根据尺寸标注坐标,对尺寸标注进行分区,尺寸标注的Y坐标大于Ymax为I区域,将其序号放入子数组H1()中;尺寸标注的Y坐标大于Ymid且小于Ymax为Ⅱ区域,将其序号放入子数组H2()中;尺寸标注的Y坐标大于Ymin且小于Ymid为Ⅲ区域,将其序号放入子数组H3()中;尺寸标注的Y坐标小于Ymin为Ⅳ区域,将其序号放入子数组H4()中。

竖直尺寸的分层,如图8所示。同理把视图分为从左至右的Ⅰ、Ⅱ、Ⅲ、Ⅳ四个区域。把序号数组V()中的元素根据不同区域分为数组V1()、V2()、V3()、V4()。

图8 竖直尺寸标注区域划分图Fig.8 Vertical Dimension Marking Area Division Drawing

对获取各区域的子数组进行调整,如图9所示。

图9 尺寸标注序号调整数组关系图Fig.9 Dimension Sequence Number Adjustment Array Diagram

水平尺寸数组中,用式(8)计算各个元素对应的尺寸标注线的长度,放入尺寸标注线长度数组LH1()、LH2()、LH3()、LH4(),对各区域存放的长度数组,进行冒泡排序,按照长度从小到大排序,获取排序后数组元素的原下标,根据区域不同,分别放入数组H10()、H20()、H30()、H40()中;

同理竖直尺寸数组中,用式(9)计算各个元素对应的尺寸标注线的长度,放入尺寸标注线长度数组LV1()、LV2()、LV3()、LV4(),冒泡排序后,将排序后数组元素的原下标分别存放入数组V10()、V20()、V30()、V40()中。

根据调整后数组元素的顺序对尺寸标注位置进行调整,数组中第一个元素是最小的尺寸标注,放在第一层,其余依次按式(2)、式(3)分层排列,其中水平尺寸标注调整函数如下:(其中Ⅰ、Ⅲ为正;Ⅱ、Ⅳ为负)

竖直尺寸标注调整函数如下:(其中Ⅰ、Ⅲ为负;Ⅱ、Ⅳ为正)

4 尺寸干涉判断与自适应调整算法

4.1 尺寸标注干涉判断原理

根据获取的视图中各个尺寸的起始箭头和终点箭头的坐标,如图10所示。

图10 视图中尺寸标注简化图Fig.10 Simplified Dimension Drawing in View

在Solidworks二维工程图默认的平面直角坐标系中(左下角原点),连接各个起始箭头和终点箭头的坐标点,得到坐标系中代表各个尺寸线的线段,把尺寸干涉问题转换为线段之间是否存在交点的问题,判断平面坐标系中线段之间是否有交点,若有交点,则尺寸标注之间存在干涉;反之,则尺寸标注之间不存在干涉。

设一条尺寸的起始坐标点为A,终点坐标点为B,另一条尺寸的起始坐标点为C,终点坐标点为D,判断两个尺寸是否干涉即判断线段AB、CD是否存在交点,用向量积法式(10)判断:

若I1×I2>0,则C、D点在线段的AB的同侧,若同时I3×I4=0,则相交且交点是A或B,否则不相交;若I1×I2<0,则C、D点在线段的AB的异侧,若同时I3×I4<=0,则相交(=0时交点是A或B),否则不相交;若I1×I2=0,则C、D点在线段的AB上,若同时I3×I4=0,则两线段重合。

4.2 干涉尺寸自适应调整

保持已调整的水平尺寸标注和竖直尺寸标注固定,判断存在干涉后,对存在干涉的其它尺寸进行微调整,设起始箭头坐标为A(x1,y1),终点箭头的坐标为B(x2,y2),连接获取的A、B两点,得到代表此尺寸线的线段,式(11)是线段AB的垂直平分线,对每次进行微调整X坐标增量为Δ/2,则Y坐标的增量,如式(12)所示。

尺寸位置坐标的微调整函数为:

在水平、竖直尺寸分层调整中,最短的尺寸标注均放在最下层,所以当尺寸标注在轮廓外即V1()、V4()、H1()、H4()区域内,对干涉的其它尺寸进行减量调整即-Δ/2;当尺寸标注在轮廓内即V2()、V3()、H2()、H3()区域内,对干涉的其它尺寸进行增量调整即+Δ/2。调整结束后,再次循环,直至没有干涉,当前视图调整完毕,获取下一个视图进行调整,直至所有视图调整完毕。

5 程序开发与验证

5.1 程序开发

用Visual Basic语言对该方法进行开发,添加Solidworks API引用,开发系统界面和调用API函数,如图11、图12所示。

图11 软件操作界面Fig.11 Software Operation Interface

图12 调用的API函数图Fig.12 The API Function Diagram of the Call

以中继阀板为例,如图13所示。

图13 存在干涉的视图Fig.13 View with Interference

二维工程图尺寸标注出现不合理现象。其中:①、②尺寸标注之间干涉;③尺寸标注文本线之间间距不相等;④尺寸标注与零件外形轮廓线之间干涉;⑤同层尺寸标注文本线未对齐。

单击界面中一键审查按钮对尺寸标注调整,如图11所示。

首先获取视图基准坐标,放入视图坐标列表框;其次获取视图中尺寸标注箭头坐标,放入尺寸坐标列表框;根据箭头坐标对尺寸标注进行分类,将水平、竖直尺寸标注放入水平竖直尺寸列表框;对水平、竖直尺寸标注进行分层,将分层的尺寸标注存放入临时数据列边框。

根据临时数据列边框中的数组,对水平、竖直尺寸标注重新布局,布局完毕,清零;判断视图中尺寸标注干涉,将干涉的尺寸标注放入临时列表框;对干涉的尺寸微调整直至临时列表框中元素为零,结束;判断视图与视图之间是否存在干涉,根据临时列表框中尺寸标注坐标确定干涉视图,最后对干涉视图位置调整,结束。以上步骤均由程序自动实现,故称为自适应调整。调整后的视图,如图14所示。图13中问题均已解决。

图14 调整后的视图Fig.14 Adjusted View

5.2 程序开发中需要注意的问题

5.2.1 尺寸数量不确定问题

不同二维工程图中视图数量和尺寸标注数量是不同的,要充分的获取每个尺寸标注的信息才能对图纸进行精确的调整。本方法把逐个获取的尺寸标注信息存放入列表框中,定义数组长度为列表框的长度,把列表框中的信息转存到对应的数组中,实现数组长度根据各个视图中的尺寸数量自动调整。

5.2.2 尺寸标注信息所属视图判别问题

在尺寸标注信息获取时,不能准确辨识其所属视图。二维工程图中存在多个视图,每个视图中都有唯一的基准,不同视图中的尺寸标注不能统一分类调整。

这里采取按顺序调整视图的方法,当前视图调整完成后,清空列表框,再获取下一个视图进行调整,直至所有视图调整完毕。

5.2.3 不同视图之间尺寸标注干涉问题

尺寸标注自适应调整完毕后,有可能出现视图与视图之间尺寸标注存在干涉,为避免此问题,本方法在各个视图尺寸标注调整完毕后,获取图纸中全部尺寸标注进行干涉判断。

若不干涉,则证明各个视图之间没有干涉;若干涉,则对干涉尺寸所属视图进行位置调整。

6 结论

(1)根据获取的箭头坐标,将尺寸标注分为水平尺寸标注、竖直尺寸标注和其它尺寸标注。

(2)对水平、竖直尺寸标注分层,根据尺寸标注的布局特点重新布局,实现水平、竖直尺寸标注自动调整。

(3)通过向量积法判断尺寸线段是否存在交点,实现尺寸标注自动干涉判断。

(4)对干涉的其它非水平非竖直尺寸微调整,消除尺寸标注之间干涉。

(5)此方法是一种通用方法,不局限于单一目标图纸调整。

由于尺寸标注的多样性,在非水平非竖直尺寸标注微调整中,仅能把干涉的非水平非竖直尺寸标注调整到相对合适的位置,使之不干涉。

这里提出的新方法已编程实现,在批量二维工程图校核中,能够有效的减少手动调整时间,提高工作效率。

猜你喜欢

工程图数组箭头
JAVA稀疏矩阵算法
“3+4”人才培养模式下本科阶段“工程图学”课程的优化设计
JAVA玩转数学之二维数组排序
面向工程认证的机制专业工程图学(一)课程教学探索
分析三维CAD建模技术在工程图学中的应用
箭头指向何方
寻找勾股数组的历程
项目式教学在工程图学课程中的探索与实践
VB数组在for循环中的应用
寻宝历险记(6)