基于SOLIDWORKS的标准件库二次开发

2019-03-30 06:15李培远
科学与技术 2019年4期
关键词:语言

摘要:利用SolidWorks工具对螺母标准件进行建模的二次开发,极大方便用户在机械产品设计方面的工作,可以让用户有更多的精力用于新零件的设计开发上,减少设计开发周期,大幅度提高产品设计的效率,提高市场效益,降低人工成本。鉴于VB语言存在的不足,使用C#语言,结合SolidWorks API函数,以六角螺母为例,采用尺寸驱动法,通过数据库中的参数来驱动零件重新建模,开发了基于SolidWorks的六角螺母标准件库。详细介绍了主要开发步骤包括创建数据库、设计零件模板以及编写程序等。运行结果表明,该设计结果可以降低劳务的重复性,提升设计的效率,具有比较好的实用性。

关键词:SolidWorks;建模设计;C#语言

Abstract:Using SolidWorks tools to model the secondary development of nuts standard parts greatly facilitates users'work in mechanical product design. It can make users have more energy for the design and development of new parts,reduce the design and development cycle,greatly improve product design efficiency,improve efficiency and reduce costs. In view of the deficiencies of VB language,using C# language and SolidWorks API function,taking hexagonal nuts as an example,using dimension-driven method,driving parts to re-model through the parameters in the database,the standard parts library of hexagonal nuts based on SolidWorks is developed. The main development steps are introduced in detail,including creating database,designing part template and compiling program. The operation results show that the design results can reduce the repeatability of labor services,improve the efficiency of design,and have good practicability.

Key words:SolidWorks;Modeling Design;C#;

引言

Solid Works是一款优秀的产品设计软件,因其设计过程简便、建模功能强大、开放性与兼容性较好,为广大机械产品设计人员和工程师所接受[1]。

虽然SolidWorks有强大的功能,但该软件是针对整个机械制造行业的通用型软件,不是针对具体企业和行业所设计的,不能满足特定的产品设计用户的建模过程与简化要求。例如,国外制图标准与国内不一致,在生成设计工程图时,没有中国的制图GB标准(尤其是基准符号、放大图标注、粗糙度标注、装配图序号、标题栏、明细表等),也不存在适合我国制图标准的标准件库[2]。因此,如何通过SolidWorks的二次开发创建类似于螺母这样的标准件库,让用户有更多的精力用于新零件的设计上,极大方便我国用户在机械產品设计开发的工作,提升设计效率,减少设计开发时间,提高效益,降低成本,是一项非常有意义且必要的工作[3]。

虽Visual Basic拥有其简单易用和“所见即所得”的特性,使得它目前依然较多SolidWorks二次开发者使用的工具。然而Visual Basic语言不支持继承性、无多线程技术支持、功能不全的异常处理能力等多项明显缺点,在SolidWorks二次开发的技术发展中无法满足需求[4]。C#是由微软公司开发的较新的、现代的、简单的、面向对象的、类型安全的、且是介于C和C++之间的开发编程工具,功能十分强大[5]。

鉴于VB语言的不足,使用C#语言,结合SolidWorks的API函数,以六角螺母为例,开发了基于SolidWorks的六角螺母标准件库。运行结果表明,该设计结果可以降低劳务的重复性,提升设计的效率,具有比较好的实用性。

1.六角螺母标准件库二次开发方法

编程法和尺寸驱动法是SolidWorks的二次开发过程中的常用两种方法。

比较两种SolidWorks建模过程的二次开发,虽使用软件自带的宏录制功能来简化编程任务,然而其简化程度不同。使用编程法时,在三维造型过程中使用宏录制功能将造型过程全部录制下来,然后通过修改宏代码的方式,赋以相关的变量。虽然简化了编程工作,仍存在避免不了的缺点。在使用宏功能录制整体造型时,不能录制全部的设计过程,开发者依然需要用SolidWorks API函数对遗漏的设计过程进行代码编写。

比较尺寸驱动法,不需要通过宏录制功能记录整个造型设计的过程,而是产品零件建模工作完成后,只需对参数化的尺寸进行修改即更新零件,使用宏录制功能将尺寸的修改过程录制下来。这样就不用考虑模型的设计建模过程是怎样,只关心对零件建模的修改,而且很大程序上减少了SolidWorks API 函数的使用[6]。

考虑到编程法的不足和尺寸驱动法的优势,因此在本文采用尺寸驱动法对六角螺母标准件进行二次开发。

2. 主要开发步骤

2.1数据库的创建

使用尺寸驱动方法进行SolidWorks二次开发时,尺寸参数的名称必须和SolidWorks模型中相对应的尺寸的名称相同。因此,合理的设计数据库,才能实现预期的功能。本文创建的六角螺母库参数数据库如图1所示。图1中,主动参数为M*P,其它所有从动参数的参数值可以通过主动参数直接确定。

2.2设计零件模板

尺寸驱动方法在重新生成模型时,模型中的每一个尺寸都需要获得相应的尺寸来驱动重新建模。本文设计的六角螺母标准件的零件模板如图2所示。

2.3编写程序

在六角螺母参数数据库以及零件模板建立好后,接下来的编写程序是最重要也是最复杂的步骤。以下关键代码的主要功能是实现用户在装配体环境下从设计库中插入标准件时,触发一个插入零件的事件,系统会自动打开这个零件,同时弹出参数对话框,在用户选择了相应参数重新建模后,能够将新生产的零件自动保存在一个固定的地方。在保存零件时应该判断是否已经有完全相同尺寸的零件存在,如果已经存在,需要用已存在的零件来替换这个零件。在保存零件后应该关闭该零件,返回到装配体环境。具体的程序如下:

if(SwApp.ActivateDoc("六角厚螺母")!= null)//判断需要保存的零件是否已经存在

{

string NewFileName;

FrmParam.ShowDlgParam(@"D:\螺母\nut1.flx");

NewFileName = FrmParam.filename();//设置零件保存的名称

NewFileName = "E:\螺母\" + NewFileName;

if(File.Exists(NewFileName)== false)//保存的零件不存在

{ //保存该零件,同时关闭该零件,返回到装配体环境

SldWorks swApp =(SldWorks)Marshal.GetActiveObject("SldWorks.Application");

ModelDoc2 swActiveDoc =(ModelDoc2)swApp.ActiveDoc;

swActiveDoc.SaveAs2(NewFileName,0,false,false);

swApp.CloseDoc(NewFileName);

}

Else //保存的零件已经存在

{ //用已有的零件来替换该零件,同时关闭该零件,返回到装配体环境

bool bResult = doc.ReplaceComponents(NewFileName,"默认",false,false);

SldWorks swApp =(SldWorks)Marshal.GetActiveObject("SldWorks.Application");

ModelDoc2 swActiveDoc =(ModelDoc2)swApp.ActiveDoc;

swActiveDoc.SaveAs2(@"E:\螺母\nut2.SLDPRT",0,false,false);

swApp.CloseDoc(@"E:\螺母\nut2.SLDPRT");

File.Delete(@"E:\螺母\nut2.SLDPRT");

}

3 总结

通过对SolidWorks二次开发的工具和SolidWorks二次开发的方法的比较,选择了尺寸驱动的方法与C#语言,结合SolidWorks API函数,以六角螺母为例,通过数据库中的参数来驱动零件重新建模,开发了基于SolidWorks的六角螺母标准件库。详细介绍了主要开发步骤包括创建数据库、设计零件模板以及编写程序等。运行结果表明,该设计结果可以降低劳务的重复性,提升设计的效率,具有比较好的实用性。

参考文献

[1]吴志林,张凯还. 基于SolidWorks尺寸驱动建模的二次开发[J]. 计算机时代,2013(01):14.

[2] 严竹生. SolidWorks二次开发关键技术研究[J]. 中国科技信息,2006(21):146.

[3] 王晓丽、季忠.SolidWorks的二次开发方法比较[J].现在制造技术与装备,2006(2):50.

[4]许陈. 基于红外投影的驾驶员头部姿勢探测实验系统的开发[D].南京理工大学,2014.

[5]唐敏康,李永兵. 基于C#.NET的Solidworks二次开发在数字矿山中的应用[J]. 现代矿业,2009(05):63.

[6]王晓丽、季忠.SolidWorks的二次开发方法比较[J].现在制造技术与装备,2006(2):50.

基金项目:国家自然科学基金资助项目“基于本体的复杂产品功能语义表示与智能分解研究”(61772247);

浙江省科技计划项目“面向复杂地形环境下中小型桥梁的安全检测系统研发”(LGF8E070001);

浙江省教育厅科研项目“面向龙泉青瓷的视觉上釉机械手系统研究”(Y201636936)

作者简介:李培远,男(汉族),浙江苍南人,助理实验师,研究方向:CAD/CAM技术研究与应用、3D打印技术研究与产业化。

(作者单位:丽水学院工学院;浙江省特色文创产品数字化设计与智能制造重点实验室)

猜你喜欢
语言
用鲸鱼“语言”通信
White Lover
我有我语言
语言的将来
Action Speaks Louder Than Words 你对肢体语言了解多少
有趣的语言