[发明专利]一种Solidworks二维工程图视图自动调整方法有效
申请号: | 202010635999.2 | 申请日: | 2020-07-03 |
公开(公告)号: | CN111767590B | 公开(公告)日: | 2023-09-08 |
发明(设计)人: | 胡汝凯;江友志;刘夫云;余汉红;吴强;耿立冬;陈鑫淼;陈浩东;吴鹏兴 | 申请(专利权)人: | 桂林电子科技大学;桂林福达股份有限公司 |
主分类号: | G06F30/12 | 分类号: | G06F30/12;G06F30/17 |
代理公司: | 桂林市华杰专利商标事务所有限责任公司 45112 | 代理人: | 杨雪梅 |
地址: | 541004 广*** | 国省代码: | 广西;45 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 solidworks 二维 工程图 视图 自动 调整 方法 | ||
1.一种Solidworks二维工程图视图自动调整方法,其特征在于,包括视图缩放比例自动调整和视图位置自动调整,包括如下步骤:
1)对视图缩放比例自动调整:首先确定主视图的缩放比例范围,计算相对最佳视图缩放比例,然后对主要特征视图缩放比例自动调整,再对其他局部视图比例自动调整;
2)对视图位置自动调整:首先确定主视图的位置基准,三视图根据主视图的位置基准进行三视图位置自动调整,再进行其他视图位置自动调整;
步骤2)中,所述的对视图位置自动调整,具体包括如下步骤:
2-1)确定主视图的位置基准
根据视图之间的相对映射关系,满足三视图投影规则,设定主视图位置为其它视图相对位置的基准;
2-2)三视图位置自动调整
调用GetCurrentSheet函数获取当前图纸对象,从当前图纸对象中获得主视图对象和图纸的属性值,其中属性值调用GetProperties2()函数获取当前图纸的8个属性值,返回类型为Double的8个元素的数组,存放入数组Properties()中,即Properties()=[Papersize,TemplateIn,Scale1,Scale2,FirstAngle,Width,Height,SameCustomProp],
首先获取图纸的尺寸,在二维平面坐标系中坐标化处理,设图纸的尺寸宽为w,高为h,则图纸范围坐标为(0,0)(w,h),根据图纸大小,确定主视图的位置,以图纸中心为对称点,将图纸分为四等份,主视图在图纸的左上角,取图纸左上角部分的中心为主视图的中心坐标点位置,确定主视图的中心坐标点位置为(1/4w,3/4h),将主视图中心点坐标放入数组A()中,A(0)为主视图中心点X坐标1/4w,A(1)为主视图中心点Y坐标3/4h,根据计算的坐标点设置主视图位置;根据三视图规则,左视图中心点的Y轴坐标与主视图中心的Y轴坐标相同,俯视图中心点的X轴坐标与主视图中心点的X轴坐标相同,获取所有视图的中心点坐标,存入列表框中,按照视图顺序存放入数组x()、y()中,由数组的下标可以获取视图的总数量;
根据数组y(),判断数组y()中与y(0)值相同的元素数量,元素的数量为主视图水平方向视图的数量,存放入变量n中,将元素对应的视图重新编号(1~n),n的值就是在主视图水平方向视图的数量,确定主视图水平方向视图数量后,根据主视图水平方向各个视图边界框的宽度值,由下述公式(3)计算出视图之间的间距值Δw,将Δw存入变量delta1中,
公式(3)中,Δw是视图之间的间距值,w是图纸的宽度,w1…wn是各个视图边界框的宽度,n是主视图水平方向视图的数量;
根据获取的视图之间间距值Δw,由下述公式(4)计算出主视图水平方向各个视图的位置调整x坐标,主视图位置已经确定,以主视图为基准,向右依次排列,第n个视图中心点的调整坐标值为(xn,y(0)),用SetPosition函数根据视图中心点调整坐标值重新设置视图位置,直至主视图水平方向所有视图调整完毕;
公式(4)中,xm是第m个视图中心点的x坐标值,x1是主视图中心点的x坐标,w1…wn是各个视图边界框的宽度,m是当前调整视图的序号,Δw是视图之间的间距值;
根据数组x(),判断数组中与x(0)值相同的元素数量,存放入变量m中,将元素对应的视图重新编号(1~m),m的值就是在主视图竖直方向视图的数量,确定主视图竖直方向视图数量后,根据主视图竖直方向各个视图边界框的高度值,由下述公式(5)计算出视图之间的间距值Δh,将Δh存入变量delta2中,间距值Δh的计算公式为:
公式(5)中,Δh是视图之间的间距值,h是图纸的高度,h1…hm是各个视图边界框的宽度,ht是图纸中标题栏的高度,m是主视图竖直方向视图的数量,
根据获取的视图之间间距值Δh,由下述公式(6)计算出主视图竖直方向各个视图的位置调整y坐标,第一个视图即主视图位置已经确定,以主视图为基准,向下依次排列,第m个视图中心点的调整坐标值为(x(0),ym),
公式(6)中,yn是第n个视图中心点的y坐标值,y1是主视图中心点的y坐标,h1…hm是各个视图边界框的高度,Δh是视图之间的间距值;
用SetPosition函数根据视图中心点调整坐标值重新设置视图位置,直至主视图竖直方向所有视图调整完毕;
2-3)其它视图位置自动调整
运用划分区域的方法,确定其它视图位置的调整范围,首先根据主视图最下边框线,确定其它视图调整区域的上边框线;根据俯视图的最右边框线,确定其它视图调整区域的左边框线;根据图纸标题栏最上边框线,确定其它视图调整区域的下边框线;最后根据图纸的最右边框线,确定其它视图调整区域的右边框线;
用GetOutline()函数获取的主视图边界框最小点和最大点坐标,将俯视图边界框的最小点和最大点坐标值存放入数组Vmin()、Vmax()中,Vmin(0)为主视图边界框最小点X坐标值,Vmin(1)为主视图边界框最小点Y坐标值,Vmax(0)为主视图边界框最大点X坐标值,Vmax(1)为主视图边界框最大点Y坐标值,可得出主视图边界框最下边线为直线y=Vmin(1),同理将俯视图边界框的坐标值存放入数组Dmin()和数组Dmax()中,Dmin(0)为俯视图边界框最小点X坐标值,Dmin(1)为俯视图边界框最小点Y坐标值,Dmax(0)为俯视图边界框最大点X坐标值,Dmax(1)为俯视图边界框最大点Y坐标值,可得到俯视图边界框最右边线为直线x=Dmax(0);
根据步骤2-2)得到的视图中心点坐标对应的x坐标值不与x(0)相同,同时y坐标值也不与y(0)相同,将此类视图归类于其它视图,将其它视图中点的x坐标和y坐标重新存放入新的数组ox()、oy()中,其中ox()存放x坐标值,oy()存放y坐标值,数组中元素的数量就是其它视图的数量,存入变量num中,将元素对应的视图重新编号1~num,根据主视图边界框最下边线y=Vmin(1)、俯视图边界框最右边线x=Dmax(0)、图纸的最右边框线x=h、标题栏最上边框线y=ht,计算出其它视图调整范围边框宽为wo,wo=h-Dmax(0),将获取的视图调整范围边框宽度值wo和数量num带入下述公式(7)中,计算出当前视图与其它视图的间隔值Δo,将Δo存入变量delta3中,间隔值Δo的计算公式为:
公式(7)中,Δo是需要调整的其它视图之间的间隔值,w是图纸的宽度,Dmax(0)是俯视图边界框最大的x方向的值,w1…wnum是各个视图边界框的的宽度值,num是需要调整的其它视图的数量;
在其它视图位置进行调整时,为了图纸显示更加规范整洁,设置其它视图位置与俯视图在同一水平线上,根据俯视图边界框最大的x方向的值Dmax(0)和其它视图位置间隔值Δo,根据下述公式(8)计算视图中心点的位置x坐标值:
公式(8)中,xn是第n个视图中心点的x坐标值,wn是第n个视图的边界框宽度,w1…wn是各个视图边界框的宽度,n是当前调整视图的序号,Δo是视图之间的间距值;
计算出各个视图需调整中心点位置的x坐标,即可获得视图调整的中心点坐标,以俯视图为基准,向右依次排列,第n个视图的调整中心点位置坐标为(xn,Ytopview),用SetPosition函数根据视图中心点调整坐标值重新设置视图位置,直至所有视图调整完毕。
2.根据权利要求1所述的一种Solidworks二维工程图视图自动调整方法,其特征在于,步骤1)中,所述的对视图缩放比例自动调整,具体包括如下步骤:
1-1)调用GetCurrentSheet函数获取当前图纸对象,从当前图纸对象中获得主视图对象和图纸的属性值,其中属性值调用GetProperties2()函数获取当前图纸的8个属性值,返回类型为Double的8个元素的数组,存放入数组Properties()中,即Properties()=[Papersize,TemplateIn,Scale1,Scale2,FirstAngle,Width,Height,SameCustomProp],其中Papersize为图纸大小,TemplateIn为图纸模板,Scale1为图纸缩放比例的分子,Scale2为图纸缩放比例的分母,FirstAngle为投影类型,Width为图纸的宽,Height为图纸的高,SameCustomProp为图纸属性与文档属性中指定的图纸是否相同;
1-2)根据获取的图纸属性值,计算主视图缩放比例最大图框,将最大图框的尺寸值转化为平面坐标系中的坐标,得到最小坐标(0,H/2)和最大坐标(W/2,H),由数组Properties()可知,W=Properties(5),L=Properties(6),确定主视图缩放比例最大图框,将坐标点存放入数组min()、max()中,min(0)为最小坐标的X坐标值0,min(1)为最小坐标的Y坐标值H/2,max(0)为最大坐标的X坐标值W/2,max(1)为最大坐标的Y坐标值H;
1-3)调用GetFirstView函数获取第一个视图对象,即主视图对象,用GetOutline()函数获取当前视图边界框对角点,即最小点和最大点坐标,存放入数组Vmin()、Vmax()中,Vmin(0)为主视图边界框最小点X坐标值,Vmin(1)为主视图边界框最小点Y坐标值,Vmax(0)为主视图边界框最大点X坐标值,Vmax(1)为主视图边界框最大点Y坐标值;
1-4)根据获取的主视图缩放最大图框和主视图边界框坐标,计算出图框最短尺寸l2,主视图对应的边长的实际尺寸l1,设定视图边界框与图框最佳显示比例k2=1:2,通过下述公式(1-1)与公式(1-2)计算出主视图最佳缩放比例1:K,将最佳缩放比例分母值K存放入变量k中;
L1=k1l1 (1)
L2=k2l2 (2)
L1为视图映射在图纸的尺寸,L2为对应的视图边界框映射在图纸中的尺寸,由L1=L2联立公式(1)和公式(2)得主视图的实际缩放比例为:k1=k2l2/l1;
1-5)对主要特征视图进行调整,通过SetProperties2()函数设置图纸比例,因为SetProperties2()函数返回的是类型为Double的8个元素的数组,图纸缩放比例分母是在数组中第4个元素,则SetProperties2(3)=k,实现主要特征视图根据最佳缩放比例k调整;
1-6)确定图纸中是否存在局部视图,通过GetViews()函数,获取图纸中所有视图,再用GetName2()函数获取所有视图的名称数组,遍历数组,根据名称,判断视图中是否存在局部视图,若不存在,则视图缩放比例调整结束;若存在,对局部视图进行调整;
1-7)对局部视图进行调整,首先遍历视图,根据视图名称判断,若是局部视图,则选定当前视图,判断主视图最佳缩放比例分母k值,若k=1,则局部视图的调整比例为2:1,用ScaleRatio()函数设置局部视图比例为2:1,ScaleRatio(0)为缩放比例分子,ScaleRatio(1)为缩放比例分母;若k1,对应的局部视图比例为1:k/2,最后对k/2四舍五入进行取整,取整后得到的便是局部视图自适应调整缩放比例,将取整后的k/2值存放入k2中,得到的局部视图最佳缩放比例为1:k2,用ScaleRatio(1)函数设置局部视图比例分母为k2;遍历所有视图,将所有局部视图调整完成,则视图缩放比例自适应结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于桂林电子科技大学;桂林福达股份有限公司,未经桂林电子科技大学;桂林福达股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010635999.2/1.html,转载请声明来源钻瓜专利网。