热门关键词:

基于Inventor的二次开发中引出序号添加方法的研究

  • 该文件为pdf格式
  • 文件大小:263.29KB
  • 浏览次数
  • 发布时间:2017-03-02
文件介绍:

本资料包含pdf文件1个,下载需要1积分

Inventor提供了强大的API二次开发接口。在Inventor中使用 API是相当有意义的,在现代化产品族的设计中,有很多系列化的零部件的结构形状基本不变,变化的只是结构尺寸或者是部件中的零件个数。对于这类系列化零部件工程图的绘制,利用VB软件,对Inventor进行二次开发设计出参数化绘图软件利用参数驱动用-套程序完成-个系列零部件工程图绘制,能极大地提高设计绘图效率。

工程图的绘制首先要生成表达部件所需要的视图,在Inventor API中很容易获得表达部件所需要的视 图。工程图的各种标注都是基于视图中的线条进行的,这里有必要说 明-下视图的生成过程 ,如图1所示,首先需要调用工程图模板,通过声明Inventor API的DrawingDocument对象,语句Set oDocoapp.Documents.Add(kDr-awingDocumentObject,”D:参数化绘图工程图模板.idw”)即可以调用所需的工程图模板n。

然后引用所需部件通过驱动Inventor API的投影功能生成视图 ,此过程 中要选择适 当的投影方向及视图中心,这里我们用oViewl代表主视图,生成主视图的部分程序如下:Set oDoc oapp.Documents.Add (kDrawin-gDocumentObject,”D:参数化绘图工程图模板.idw”)Set oPartDocoapp.Documents.Open(”D:参数化绘图夹件.iam”,False)Set oSheetoDoc.ActiveSheetSet oPointloTG.CreatePoint2d (10, 10)Set oViewl-oSheet.DrawingViews.AddBas-eView(oPartDOC,oPoint l,kFrontView Orientation,kHiddenLineDrawingViewStyle)视图生成后我们才可以以视图为基础完成尺寸标注、符号标注、添加引出序号等-系列操作。

由于 目前Inventor工程图二次开发中引出序号的标注在满足国家标准要求方面存在很多问题,本文就对引出序号的添加方法进行讨论,尺寸标注、符号标注等其他操作不再论述。

1 引出序号标注中存在的问题创建部件的视图后,需要向投影视图中的零件和子部件添加引出序号。引出序号就是-个标注标志,用于标识明细表中列出的项,引出序号的数字与明细表中的零件序号相对应。而明细表是显示在工程图中的BOM表标注,为部件的零件或者子部件按照顺序标号 。也就是说视图中的引出序号的数字是已知的,是由先前的三维零、部件装g JIN序决定的。另外,国家标准对于引出序号标注的要求中指出:装配图中所有的零、部件应编号;同-装配图中相同的零、部件用-个序号,-般只标注-次;装配图中序号应按顺时针或逆时针方向顺次整齐排列口。为尽量满足国家标准的要求,本文将分析常用标注方法存在的问题并提出改进方法。

收稿日期:2012-06-20l'r者简介:吴卫卫 (1987-),男,河南商丘人,硕士研究生,研究方向为图形图像处理。

第35卷 第1期 2013-01(上) 173]务1造 匐 出图1变压器上夹件的引出序号标注实例1.1常用的引出序号的标注方法我们知道Inventor工程图几乎所有的标注都是基于投影视图中的线条的,引出序号的标注也不例外。Inventor在通过投影生成视图的过程中,系统已经默认给每个线条分配了编号,我们可以利用Inventor VBA功能,编制程序查询到每个线条的编号 。基于Inventor工程图的这个特点,人们大多使用下面的方法进行引出序号的标注,以图1变压器低压侧上夹件中序号3的标注为例进行说明:首先在视图中找出引出序号所在的那条线条,通过查询得到该线条的系统编号为17,在绘图过程中可以用oView1.DrawingC-urves.Item(17)来代表这条线条;然后需要声明-个点作为引出序号放置位置的参考点,这里用 oMidpointoDrawingcurves(17).MidpointP编号为17的线条的中点作为参考点,引出序号的位置根据需要放置在以oMidpoint坐标为基准确定的新坐标上,下面序号3的标注位置 (oMi-dpoint.X-2,15)即是横坐标为oMidpoint横坐标值减2、纵坐标为l5的坐标点上;引出序号3的添加过程可由下面程序完成:声明指引线位置及引出序号:Dim oLeaderPoints As ObjectColectionSet oLeaderPointsoapp.TransientObjects。

CreateObjectColectionDim oBMloon As BMloon确定引出点及序号位置:Dim oM idpoint As Point2dSet oMidpointoDrawingcurVes(1 7).Mi-dpointCall oLeaderPoints.Add (oTG.CreateP0int2d(oMidpoint.X -2,15) )[741 第35卷 第1期 2013-01(上)Dim oGeometrylntent As GeometrylntentSet oGeometryintent oSheet.CreateGeom-etrylntent(oDrawingcurves(17) )Cal oLeaderPoints.Add (oGeometryintent)生成引出序号:Set oBalloon oSheet.Balloons.Add (oLea-derPoints)oLeaderPoints.Clear其他零件序号的标注用同样的方法找到所需标注的零件的-条线条然后进行标注,直至所有零件序号标注完成。也就是说有多少个零件就要选择多少个线条进行标注。

1.2常用标注方法存在的问题很显然对于-般简单的部件图来说这种方法简单快捷,但是在系列化零部件的绘图中这种方法存在极大的缺陷。因为系列化的过程中可能增减-些不影响部件大致结构的小零件或者有部分零件的结构发生变化 。

1-2I1由于增减零件引起引出序号变化的问题系列化的部件中可能增减-些不影响部件大致结构的小零件,这将导致投影视图中线条数量的变化,线条的系统编号也随之改变。举例说明如下:程序中我们同样用oView1.DrawingCu-ryes。

Item (17)语句选择编号为17的线条,由于零件个数的增加此线条此时就可能在零件2上,结果就会出现同样用上面程序以及系统编号为17的线条生成引出序号,显示的引出序号可能是2,而不是原来的3的情况,如图2所示。

图2增加零件后的引出序号标注这是由于在装配体上增加了两个螺母,如果螺母的增加使原来的装配顺序有所变化,螺母在投影过程中产生的线条就会打乱原来线条的编号,也就是说原来编号为17的那条线条现在在零件2上,那么在参数化过程中我们就不能确定编号 l泣 訇 化为17的这条线条具体在哪个零件上,从而难以确定引出序号的放置位置,在零件很多的部件图上就会出现引出序号标的混乱以及由于零件的增减导致个别引出序号标不出来的问题。

1.2.2 由于零件结构变化引起引出序号变化的问题在系列化部件的设计过程中,即使不出现零件个数增减的现象也难免有个别零件的结构发生变化,这种结构的变化,同样会在视图投影过程中引起线条数量的变化,也直接会影响线条的系统编号,从而引起了引出序号的变化,导致引出序号标注的混乱。

2 遍历视 图线条的方法标注引出序号鉴于系列化部件绘图中引出序号标注的上述问题,本文采用遍历视图线条的方法,从而避开线条的选择 ,使引出序号标注的在正确性、完整性和规范性方面有很大改进。

2.1遍历线条标注引出序号通过三维部件的投影得到视图,大部分CAD软件二维工程图都是以线条为基础的 ,Invent-or也不例外。也就是说视图的基本单元便是线条即是Inventor API中的DrawingCurves对象,这里DrawingCurves相当于视图中所有线条的集合,DrawingCurves的子对象DrawingCurve相当于集合中的每-个线条。因此我们可以通过循环语句ForEach oDrawingCurve In oView1.DrawingCurves完成对视图中所有线条的遍历。

对于部件的视图来说 ,可能存在很多种形状,例如直线段类、样条曲线类、圆曲线类、椭圆曲线类等等。如果对遍历到的所有形状的线条都进行引出序号的标注的话,显然太过复杂,而对于大多数部件图仅需要标注直线段便可以得到满足要求的引出序号标注,因为零件的投影视图中总会有直线段出现 。那么我们就可 以在遍历后的线条 中筛选出形状为直线段的线条,然后进行相应操作,这里语句If oDrawingCurve.Curv-eTypekLineSegmentCurve Then筛选出形状为LineSegmentCurvel直线段类型的线条。然后序对筛选到的直线段标注引出序号。主程序如下:Set oLeaderPointsoapp.TransientObjects。

CreateObjectCollectionFor Each oDrawingCurve In oVJew 1.Draw-ingCurvesIf oDrawingCurve.CurveType kLineSeg-mentCHI Ve ThenSet oMidpointoDrawingCurve.M idPointCall oLeaderPoints.Add (OTG.CreatePoint2d(oMidpoint.X-2,20))Set oGeornetryintent oSheet.CreateGeom-etrylntent(oDrawingCurve,kMidPointIntent)Cal1 oLeaderPoints.Add (oGeometryintent)Set oBalloon oSheet.Balloons.Add (OLea-derPoints)EndIfNext oDrawingCurve这段程序在遍历线条后筛选出直线段线条进行标注,在引出序号标注完整的前提下,极大地缩短了程序的计算时间,提高了运行效率。

90--l4. 2O图3遍历直线线条后标注引出序号2.2删除重复的引出序号上面的程序段完成了对视图中的直线段线条标注引出序号的任务,由于是对所有的直线段线条都标出引出序号 ,如果-个零件有四条线条就会标出四个相同的引出序号,因此我们还需要删除重复的引出序号标注。在Inventor API中,引出序号的是可以通过数字读出来的,那么在标注过程 中就可以通过判断引出序号数字是否重复,然后删除重复的标注,通过定义ioBaloon。

BalloonValueSets(1).Value将引出序号的数值赋给i,然后我们设定-个包含51个元素的数组,并且数组的元素为布尔值即a(51)As Boolean这里51是自己设定的-个数值,这个数只要足够大多出零件的个数即可。定义数组之后就可以在上面的主程序循环中嵌入判断语句即可删除重复标第35卷 第1期 2013-01(上) 1751 l 訇 似注,判断程序的主语句如下:ioBalloon.BalloonValueSets(1).ValueIfa(i)FalseThena (i)TrueElseoBalloon.DeleteEndIfoLeaderPoints.Clear删除重复标注的结果如图4所示。

图4删除重复标注后的引出序号2.3对引出序号位置进行适当调整然而删除重复标注之后引出序号并未完全达到工程图国家标准的要求 ,从主程序可以看出所标注的引出序号的位置为 (oMidpoint.X-2,20),即是在以引出序号所在边的中点横坐标减2为横坐标、20为纵坐标的坐标点上,在零件个数很多的部件图中,这就可能会存在引出序号不能按顺序排列或者序号交叉的情况,还需要对引出序号的位置进行适当的调整,使引出序号的标注美观而且符合要求。

上面曾提到过在Inventor API中,引出序号的数值是可以读出来的。这样引出序号的调整也变得简单很多。例如,对序号4进行调整,就可以通过序号4的数值找出引出序号4所在位置,然后定义新的坐标作为序号4的新位置。主要的程序语句如下:joBalloon.BalloonValueSets(4).Value[761 第35卷 第1期 2013-01(上)If1 (4)Then定义新的坐标值Set oNewPo sitionoTG.CreatePoint2d (1 5,20)EndIfoBalloon.PositionoNewPosition执行此段程序的操作后,序号4的位置就会移动到人为确定的坐标 (15,20)上,用同样的方法移动其他的零件序号的位置以尽量满足工程图国家标准的要求,如图1所示。

3 结束语在系列化部件的设计和生产过程中,用In-ventor.次开发的方法绘制工程图确实可以节省大量的人力物力,但是工程图有大量的人为标准,使得工程图绘制过程遇到了很多困难。

就像本文所提到的引出序号的标注的问题,由于Inventor工程图的二次开发研究较少,引出序号标注的方法也很少并且存在很多不完善的地方,本文的方法是作者在Inventor工程图二次开发过程中总结大量经验得出的。

这种遍历视图线条的方法使引出序号的标注变得简单、灵活、准确,在满足国家标准对引出序号标注的规范性要求方面有很大改进。

正在加载...请等待或刷新页面...
发表评论
验证码 验证码加载失败