设为首页 | 加入收藏 | 联系我们 | 内部邮箱

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

时间:2014-07-14 15:11来源:万方数据 作者: 点击:
    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两点重合。保证槽型截面为闭环是完成放样特征创建的基础。
------分隔线----------------------------