SolidWorks专区  |  新闻  |  文库  |  资料  |  案例  |  有问必答  |  视点  |  进阶  |  渠道  |  博客  |  电子周刊 |  视频 |  百味书屋

SolidWorks二次开发精确草绘问题的分析与探讨

发表时间: 2014/6/9 作者: 盛利*张亮有*谢立新 来源: 万方数据
文章针对SolidWorks软件编程法二次开发进行研究,分析了开发过程中草绘的误差机理及其对建模的影响。对于编程法的草绘失败问题,提出了二次开发环境下的草绘中微小尺寸、误差产生的微小间隙和复杂计算问题的解决方法。对于复杂模型的二次开发问题,以带式输送机的建模为例提出了一种新的“块操作”的编程草绘方法,有效地减少了草绘误差,避免了复杂计算,取得了较好的效果。
 

0 引言

    基于SolidWorks平台的二次开发是一种基于CAD/CAM软件平台的二次开发。这种方式使得软件开发人员不必编写复杂繁多的基本绘图函数,而只需要调用SolidWorks API函数来实现图形的参数化设计,提高了软件开发效率,缩短了开发周期。目前,基于SolidWorks的二次开发方法主要有编程法和尺寸驱动法两种。编程法是调用SolidWorks API函数直接由程序生成模型,该方法不需要模型库的支持,适合生成变参数较多的模型,程序的可移植性较好,但是对开发人员的编程技术要求较高;尺寸驱动法是一种修改零件模板的方法,将模板尺寸设为变量,通过尺寸驱动的方法修改模型,程序的运行实质是对模板的更新。该方法较为简单,不需要开发人员掌握很多API函数,但对模型库的依赖性极高,适合于与数据库操作技术相结合进行机械零件库的开发设计。

    在带式输送机整机三维设计中,通过分析输送机虚拟样机装配中的主次要关系可知,输送机的侧型布置决定了各零/部件的装配位置与规则,是输送机虚拟样机装配的关键所在,其自动化装配的实现取决于输送机侧型布置的精确建模。输送机侧型布置形式较多,主要为上运、下运、凸弧、凹弧和凹凸弧以及重锤张紧等,且每种侧型的变参数多,使用编程法对其进行参数化建模是个复杂的过程,在编制程序时会出现较多问题。本文就Visual Basic 6.0集成开发环境下SolidWorks的参数化设计中出现的草绘误差与其造成草绘和模型特征失败的问题进行分析探讨,提出合理的建模方法。

1 草绘误差机理的分析

    SolidWorks提供了几何关系捕捉功能,可以捕捉到草图的中点、端点和交叉点等特殊点以及相切、垂直、平行等几何关系完成线段的草绘。无论是在SolidWorks草绘环境中,还是在二次开发环境中,对象捕捉功能都可以帮助设计人员快速完成草绘,但也存在功能弊端。在SolidWorks二次开发过程中,开启对象捕捉功能使得系统错误地捕捉目标点区域内已经存在的点或是特殊点(如原点、中点、端点和交叉点等等),而不能按照程序给定的点坐标参数来捕捉。开发人员在必要时必须关闭对象捕捉功能才能驱动程序正常地完成草绘。输送带矩形截面草绘如图1所示,图1所示的输送带矩形横截面草绘,带宽为500mm,带厚为10mm。使用程序进行草绘,开启对象捕捉功能时,系统会错误地捕捉到右端同一点致使草绘失败。

输送带矩形截面草绘

图1 输送带矩形截面草绘

    但在对象捕捉功能关闭状态下对SolidWorks二次开发存在草绘误差,主要表现为点的坐标误差,能否正确地捕捉到某一点的坐标是生成草图进而完成特征创建的关键。使用底层API进行程序绘制时,往往因为点点之间的微小间隙使得草图中包含开环轮廓,造成放样、扫描等特征创建的失败。经过分析发现,这种点点间的微小间隙是由点的坐标误差引起的。SolidWorks草绘环境下的草绘测试证明,当两点间的间隙小于0.00001mm时,系统自动将两点合并,即默认两点为相同点。若两点为不同线段的端点,则该两条线段为闭合的。而二次开发环境下,关闭对象捕捉功能时,即使变量是Double Precision(双精度)类型也不能使两点合并。在基于VB编程环境下,造成这种间隙误差的因素主要有以下几方面。

    1)VB中变量类型产生的表示误差。VB支持的标准Numeric数据类型有Integer(整型)、Long(长整型)、Single Precision(单精度)和Double Precision(双精度)4种。不同的数据类型具有不同的计算和存储精度。变量类型的错误定义还将直接影响到设计的参数化。这就要求在尺寸计算过程中仔细分析计算方法并选择合理的数据类型。一般情况下,多数选择双精度数据类型。

    2)点坐标计算过程中的舍人误差和截断误差。由于计算机的字长有限,参加运算的数据及其运算结果在计算机上存放会产生舍人误差。同时,如果采用的算法是一种近似的方法,那么只能得到计算的近似解,由此产生方法误差。例如,计算过程中的三角、对数或指数等等函数的使用。

    3)点坐标计算过程中的误差传播和误差累积。在二次开发中,点的坐标是各变参数的函数,表现为有关量之间关系的计算公式。四则运算中的误差随计算过程传播和累积,使得目标点与程序绘制点间产生间隙。

    由以上的误差产生机理分析可知,点坐标的计算误差不可避免,不仅影响草绘的精度甚至使得特征创建失败。对于输送机侧型布置这种复杂的建模问题,需要更为便捷和精确的草绘方法。

2 草绘问题的解决方法

    编程法二次开发草绘失败问题主要表现为微小间隙造成的轮廓开环和复杂点坐标计算产生的误差。对此造成的草绘失败问题存在两种较为简便的处理方法,即开启对象捕捉以忽略微小尺寸间隙的影响,添加约束和使用草绘工具命令以减少计算。

    2.1 合理使用对象捕捉功能

    与SolidWorks草绘环境下的图形草绘不同,在二次开发过程中,开发人员必须根据实际情况使用API合理地开启和关闭对象捕捉。开启对象捕捉可以让系统自动忽略点坐标误差造成微小尺寸间隙影响,使得两点合并,轮廓形成闭环:关闭对象捕捉可以解决微小尺寸的草绘问题以及系统的错误捕捉引起的草绘失败。开启和关闭对象捕捉功能的API函数为:

    swApp.SetUserPreferenceToggle

    swSketchInference true‘开启对象捕捉

    swap.SetUserPreferenceToggle

    swSketchInference False‘关闭对象捕捉

    在SolidWorks二次开发中,开发人员需要根据对象捕捉开启与关闭状态下的不同作用频繁地开启和关闭对象捕捉功能。值得注意的是,为了不影响其后的草绘和最后特征的生成,对象捕捉的开启与关闭必须成对使用。即在关闭对象捕捉后编写该程序段草绘代码,最后在该段代码后重新开启对象捕捉。

    2.2 调用约束与草绘工具的API函数

    通过误差机理的分析可知,在点坐标参数的计算中会出现方法误差,减少程序中的计算不仅有利于程序的编制和运行、减少工作量,还可以提高草绘的精准度。SolidWorks草图支持多种几何约束关系,包括水平、垂直、固定、重合、相切和平行等,选择不同的草图实体有不同的约束关系:同时,SolidWorks提供了功能便捷的草绘工具,例如转换实体引用、等距实体和镜像实体等。一般来说,在SolidWorks草绘环境下使用的指令都可以在SolidWorks API中找到相对应的函数。在程序中通过添加约束关系和使用草绘工具命令可以巧妙地回避一些复杂的计算,减少计算量来达到设计目标。SolidWorks二次开发中,添加草图约束的API函数为:swModel.SketchAddConstraints(ByVal IdStr As String)。该函数的参数为约束类型,常见的有以下几种:

    sgTANCENT    相切约束

    sgCOINCIDENT    重合约束

    sgVERTICAL2D    竖直约束

    sgHORIZONTAL2D    水平约束

    sgPARALLEL    平行约束

    sgPERPENDICULAR    垂直约束

    在点与点间存在微小间隙时,使用重合约束使程序绘制点与目标点相重合进而获得需要的草图也是微小尺寸间隙的一种解决方法。开发中辅以转换实体引用(IModelDoc2::SketchUseEdge2)、等距实体(IModelDoc2::SketchOffset.)和镜像实体(IModelDoc2::SketchMirror)等方法,可以快捷地解决大部分草绘工作而无需进行复杂的计算,从而提高草绘的精度。

    以输送带槽型截面为例,输送带槽型截面草绘如图2所示。带宽为500mm,带厚为10mm,中托辊长为200mm。槽型截面是模型中的放样截面之一,必须保证该截面轮廓为闭环,否则放样特征失败。通过点坐标计算,程序绘制直线AB,然后镜像出直线CD。带厚下边线使用等距实体命令绘制,等距距离为10mm。由于A和E两点的坐标是35°槽角的函数,坐标参数表达式的计算存在误差使得输送带槽型截面非闭环,因此,必须在对象捕捉功能开启的状态下计算点A和点E的坐标绘制直线AE,或者使用重合约束使程序绘制点与A、E两点重合。保证槽型截面为闭环是完成放样特征创建的基础。

输送带槽型截面草绘

图2 输送带槽型截面草绘

3 应用实例

    通过以上对草绘误差机理的分析及其解决方法的探究,本文将该研究运用于带式输送机侧型的三维参数化设计中并开发了相关应用程序。同时,针对这种复杂模型的草绘,提出一种二次开发环境中草绘“块操作”的方法。

    以上运带式输送机侧型的建模为例,该输送机张紧装置为重锤式张紧,输送机侧型草绘的块操作演变流程如图3所示。该重锤张紧装置距离头部传动滚筒水平距离为3200mm,输送倾角为8°。由于变参数太多且与输送倾角参数相关联,通过计算来确定各改向滚筒的网心坐标极其复杂且误差较大。经分析可知,在实际绘图过程中各图元的尺寸参数是相互独立的,它们之间没有函数关联;但是各图元的坐标参数是相互关联的,表现为图元的各种约束使其在图形中占有正确的位置,并形成图形尺寸链。块操作方法即在二次开发中,首先调用API函数绘制草图主体部分,确保其具有正确的尺寸和坐标:然后使用尺寸参数,调用API函数绘制草图块部分,确保草图块部分中各图元间有正确的尺寸和相对位置:最后通过调用添加草图约束的API函数,添加适当的约束将块部分“装配”到主体部分,使其在图形中占有正确的位置。通过该方法有效避免了复杂的坐标计算,减小计算过程中的误差,大大减少了编程的工作量。

    如图3所示,输送机侧型为草图主体部分,重锤张紧装置为草图块部分。各改向滚筒的直径尺寸参数对于主体部分是相对独立的,但改向滚筒的网心坐标参数与主体部分是相关联的。根据改向滚筒直径尺寸参数调用API函数绘制重锤张紧部分,并保证该块部分中各图元间的相对位置关系:然后调用添加相切约束的API函数使90°改向滚筒与输送带无载分支相切(sgTANGENT),添加平行约束使两90°改向滚筒的连心线与无载分支平行(sgPARALLEL);最后程序调用剪切实体的API函数(ISketchManager::SketchTrim)进行草图修改,生成符合要求的草图,从而为特征创建打下基础。

输送机侧型草绘的块操作演变流程

图3 输送机侧型草绘的块操作演变流程

    本文开发的带式输送机侧型三维建模的应用程序依照提供的带式输送机的主要部件型谱和结构件型谱,使用Microsoft Access建立了关系型数据库,其中包含滚筒与支架配合尺寸、传动滚筒头架主要尺寸、改向滚筒尾架主要尺寸以及垂直张紧装置主要尺寸等关系型数据表。应用程序使用Visual Basic语言,采用ADO技术对数据库进行访问,用户可以通过选择输送机代号快捷地进行数据库查询,并可将多次的数据库查询结果返回到程序界面,方便用户进行比对和选择。程序会通过执行语句将数据库中的参数和用户输入的托辊及其布置参数输出给程序代码中的相应变量,然后调用SolidWorks API函数完成输送机侧型的精确草绘和特征建模。输送机侧型三维建模的可视化程序界面和输送机侧型三维建模(程序运行结果)如图4和图5所示。

输送机侧型三维建模的可视化程序界面

图4 输送机侧型三维建模的可视化程序界面

输送机侧型三维建模

图5 输送机侧型三维建模

4 结语

    通过分析SolidWorks二次开发过程中草绘误差的产生机理,得出了草绘中的微小间隙和复杂计算问题的解决方法,提高了建模的精确度,并减少了开发工作量;针对复杂模型的二次开发的草绘问题提出了一种新的“块操作”方法,并成功地应用于输送机侧型三维设计的二次开发中。同时,运用该研究成果,利用Visual Basic和Microsoft Access使用编程法对SolidWorks进行二次开发,开发了具有实用价值的带式输送机侧型的建模程序,为带式输送机整机参数化设计奠定了基础。本文中的方法具有一定的通用性,对于其他工程软件的二次开发平台,所提出的草绘问题的解决方法也同样适用,例如AutoCAD、NX和Pro/E等工程软件。



责任编辑:程玥