SolidWorks二次开发草图绘制不准确的分析与探讨

2022-05-14 03:27倪洪启何崇玉孟宪春
机械工程师 2022年5期
关键词:球阀草图二次开发

倪洪启, 何崇玉, 孟宪春

(1.沈阳化工大学 机械与动力工程学院,沈阳 110142;2.秦皇岛北方管业有限公司 河北省波纹膨胀节与金属软管技术创新中心,河北 秦皇岛 066004)

0 引言

随着智能制造的兴起,CAD/CAM的运用也越来越广泛。作为一款基于Windows开发的CAD软件,SolidWorks软件的市场占有率非常高。SolidWorks软件提供应用程序接口(Application Programming Interface,API)函数库,可供用户进行二次开发[1]。开发人员通过该软件进行开发时只需要调用SolidWorks API函数就可以对图形进行参数化,无需编写复杂的基本绘图函数。同时,该软件自带宏工具[2],通过宏录制就可以快速获取开发人员所需要的库函数。因此可以提高软件的开发效率,缩短开发周期。

目前,基于SolidWorks平台的二次开发主要有2种方法[3]:第一种是使用SoildWorks自带的库函数,通过调用库函数,生成草图,再进行特征操作,完成整个零件图的创建;第二种方法是参数化的方法,该方法和第一种方法类似,不同的是创建零件的具体尺寸未在代码中直接给定,而是用形参来代替。程序运行时,用户可以手动输入尺寸的大小,生成自己所需要的模型。

在实际通过SolidWorks平台进行二次开发时,会存在对象捕捉导致系统错误捕捉和微小尺寸无法生成的问题。基于以上2种情况,会导致复杂草图生成错误或者生成草图不准确。本文基于VB.Net对SolidWorks进行二次开发,分析开发过程中的问题,并提出一些解决方法。

1 草图绘制失败的分析

SoildWorks二次开发中草图绘制失败主要有两方面的原因:一方面是对象捕捉的影响,开启对象捕捉后,系统错误的捕捉导致绘制失败;另一方面是绘制的线条过小,模型草图的尺寸很小时,微小尺寸无法通过SolidWorks API的库函数生成。

1.1 对象捕捉导致的失败

SolidWorks中自带了几何关系/捕捉这个功能,用户在使用SolidWorks进行绘制草图时,软件会自动捕捉草图中的端点、中点、相切、垂直等几何关系,方便设计人员草图的绘制[4]。但是,在通过调用库函数对SolidWorks进行二次开发时,软件无法通过库函数知道线与线之间的约束关系,会自动给绘制的草图增加一些错误的约束,正因为这些错误的约束,导致草图绘制错误。

如图1所示,打开对象捕捉后,在绘制球阀草图时,由于两端点之间距离过小,系统自动将两根线的端点连接在一起,关闭对象捕捉后,则可以成功绘制草图。但是,关闭对象捕捉后,生成的看似闭合的草图之间会存在缝隙,无法生成闭合草图,因此无法对草图进行特征操作。

图1 球阀手柄草图

关闭对象捕捉产生间隙的原因主要是数据类型导致的,通过VB.Net进行编程时,一般变量数据类型都设为单精度型(Single)或双精度(Double)型。无论单精度还是双精度在储存中都分为符号位、指数位和尾数部分等3个部分[5]。这种结构是一种科学计数法,把一个浮点数表示为尾数乘以2的指数次方再添加符号[6]。但有些小数无法完整地用二进制来表示,从而在储存时可能有误差。

1.2 微小尺寸无法生成导致的失败

在通过SolidWorks平台经用底层API绘制草图时,如果绘制的直线长度小于2 mm时或者圆弧夹角小于2°时,这段直线或圆弧将不会生成。

在通过API函数进行开发时,所用的单位都是以米为单位[7],但在SolidWorks操作时所用的一般都以毫米为单位[8]。在绘制微小尺寸时,本就微小的尺寸在缩小1000倍后变得更小,系统误认为绘制直线的两点坐标一致,导致微小尺寸无法生成。

2 解决办法

针对以上2个问题,本文中总共给出了3种方法,即取消对象捕捉、增加几何约束和一种新提出的“剪切法”。每种方法有其不同的适用情景,在使用各个方法时,开发人员需要根据实际情况选择合适的解决方法。

2.1 取消对象捕捉法

SolidWorks自带的对象捕捉的功能会影响草图的绘制,可以通过关闭草图对象捕捉功来解决问题。此方法绘制的草图虽然可以通过SolidWorks中的修复草图命令进行修复,但在SolidWorks API中暂时还没有修复草图的命令,因此,一般情况下关闭对象捕捉法主要用于直接绘制闭合图形的情况,例如绘制矩形、圆形、键槽等。

图2所示的水泵开关指示灯草图。开启对象捕捉后,绘制一系列圆时,有些圆会自动与相邻的圆施加相切约束,导致绘制不正确。关闭对象捕捉后,草图生成成功,而且绘制的图形是封闭图形,不会影响后续的特征生成。

图2 水泵开关指示灯草图

在实际使用过程中,我们一般都是先获取原用户对象捕捉设置,再关闭对象捕捉,进行草图绘制,绘制结束后再恢复原用户设置,这样可以避免运行代码时修改用户原始的SolidWorks设置。其中VB.Net代码如下:

2.2 几何约束法

SolidWorks的Api中的库函数可以对草图进行尺寸标注、修改尺寸和施加各种约束,通过各种约束条件把草图进行完全约束,可以绘制出合格的草图。在基于VB.Net的SolidWorks二次开发中,添约束的库函数为[9]:

Part.SketchAddConstraints( IdStr As String ),其中约束类型主要有以下几种:在对草图进行尺寸标注时,我们需要先选中需要标注的对象,再进行标注。库函数[9]如下:

图3为水泵开关主体的草图,该草绘中存在多个细小尺寸,通过标注尺寸、修改尺寸和添加约束的方法,能够精确地绘制该草图。

图3 水泵开关草图

2.3 剪切法

用约束法精确绘制草图时,碰到需要多个约束才能精确绘制的草绘,需要花费大量时间进行约束,会大大增加开发难度,因此,通过综合前2个方法的优点,提出了一种名为“剪切法”的新方法。“剪切法”主要是利用了SolidWorks API中的剪切函数,利用剪切函数修剪草图时,可以修复关闭对象捕捉后草图不封闭的问题。方法的主要流程如图4所示,首先关闭对象捕捉,在绘制非闭合曲线时将线条绘制的长度大于需要绘制的真实长度,然后打开对象捕捉,通过SolidWorks API中的剪切函数,修剪不需要的线。最后对草图进行标注,使其完全约束。打开对象捕捉后,使用剪切函数能使交点处的点施加重合约束,解决了无法生成封闭草图的问题,巧妙地避开关闭对象捕捉的缺点。此方法中SolidWorks API中的剪切函数为[9]:

图4 剪切法操作流程

Part.SketchManager.SketchTrim( Option As String, X As Double, Y As Double , Z As Double)

使用“剪切法”绘制复杂草图时,可以通过很少的代码就可以得到非常复杂的草图,极大地提高了开发效率。

3 应用实例

通过以上对草图绘制问题的研究,将该研究中的方法运用于三片式球阀的三维参数化设计中,同时也验证了“剪切法”的实用性。

在对三片式球阀进行参数化设计时,由于球阀手柄特别薄,尺寸比较小,所以绘制时最为麻烦。图5为用“剪切法”绘制三片式球阀手柄的截面草图的流程,首先绘制出大致的草图,然后使用剪切函数修剪草图,成功绘制出手柄的截面草图,且草图内有阴影。在SolidWorks中草图有阴影表示为封闭图形,可以对草图进行拉伸(Imodel-Doc2:: FeatureExtrusion)、旋转(IModelDoc2:: FeatureRevolve2)、扫描(IModelDoc2:: InsertProtrusionSwept4)、放样(IModelDoc2:: InsertProtrusionBlend 4)等特征操作[9]。手柄的绘制表明“剪切法”在实际运用时能够较好地完成设计要求,且使用简单。

图5 三片式球阀手柄草图绘制流程

在本文开发的三片式球阀的三维参数化设计应用程序中,球阀的设计准则与参数主要参考阀门设计手册[10]。并使用Microsoft Access建立关系数据库。其中应用程序的可视化界面如图6所示。

图6 三片式球阀的三维参数化设计可视化界面

应用程序中主要零件材料中有3种材料,分别是碳钢、不锈钢和锻钢。选择不同材料时,会根据选择的材料调用Access数据库自动选择阀门各部分使用的材料。同样,修改球阀型号时,阀门各部分尺寸也会自行调整。在创建完三片式球阀的三维图后,该程序还可以一键导出球阀的BOM表,导出的BOM表为Excel文件,如图7所示。导出BOM表的VB.Net代码为:

图7 三片式球阀BOM表

4 结语

本文通过分析SolidWorks二次开发过程中草图不精准的问题,提出了3种方法解决了工程实际问题,得出以下结论:1)利用以上的方法可以提高建模的精确度,极大地减少开发的工作量;2)在绘制复杂草图时,提出了“剪切法”,与前两种方法相比,该方法可以通过简洁的代码获得准确的草图,为以后二次开发的发展提供了新的思路;3)本文中提到的方法具有通用性,除了SolidWorks平台,对于其他工程软件的二次开发平台,例如Pro/E、UG等软件,也都适用。

猜你喜欢
球阀草图二次开发
高压气动球阀响应时间的试验研究
SolidWorks二维草图的绘制经验与技巧
上装式超低温球阀启闭过程应力分析
一起抽蓄机组球阀关闭时间偏长缺陷处理
惠州抽水蓄能电厂进水阀无法全开常见故障分析
不能承受的生命之轻
浅谈Mastercam后处理器的二次开发
例谈课本习题的“二次开发”
画好草图,寻找球心
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用