2024年4月15日发(作者:)

《机床与液压》

2004

1

No

1

9

73

SolidWorks

环境下的参数化建模方法

郗向儒

,

韩 锐

,

李  

(

西安理工大学机械与精密仪器工程学院

,

陕西西安

710048

)

摘要

:

研究了在

SolidWorks

平台上进行参数化实体建模的方法。利用其提供的

API

接口

,

VC++6

1

0

开发环境下对

SolidWorks2001+

进行了二次开发。本文对两种不同的参数化建模方法进行了比较

,

详细介绍了其中一种通过修改模型参

数实现参数化建模的方法

,

实现了简单零件的三维参数化建模。简化了建模过程

,

提高了建模效率

,

有利于企业缩短产品

设计周期

,

提高竞争力。

关键词

:SolidWorks;

二次开发

;

参数化

;API

中图分类号

:TH122

  文献标识码

:A

  文章编号

:1001-3881

(

2004

)

9-073-3

MethodsofParameterizedModelinginSolidWorks

XIXiang

2

ru,HANRui,LIXun

(

SchoolofMachinery

andPrecisionInstrumentEngineering,Xi

anUniversityof

Technology,Xi

an710048,China

)

Abstract:Themethonddevelopmentto

SolidWorks2001+wasperformedbyVC++6

1

ferencemethodsofparameterizedsolidmodelingwas

compared,ee-dimensionalparameterizeddesignofsimplepartwasrealized,

whichsimplifiesthemodelingprocessandraisesthemodelingefficiency,anditisgoodforcompaniestoreducethedesignperiodand

togainbroadmarketacceptance.

Keywords:SolidWorks;Secondarydevelopment;Parameterized;API

  

SolidWorks

Windows

平台下优秀的特征造型软

,

为方便用户进行二次开发

,SolidWorks

提供了

OLE

应用程序开发接口

SolidWorksAPI,

其中包含有

数以百计的功能函数

,

为程序员提供了直接访问

SolidWorks

的能力。

SolidWorksAPI

提供了两种接口

的方式

:Dispatch

COM

。用户可以使用支持

OLE

编程的开发工具

,

VB

VBA

C

VC++

等对

API

功能函数进行调用

,

这些函数都可以在

api

2

help

1

chm

中找到相关说明。本文在

Windows98

SolidWorks2001+

环境下进行二次开发

,

采用

Dis

2

patch

方式。

1

 基于

SolidWorks

的插件程序设计

SolidWorks

通过其内部的

add-inmanager

来管理

用户编制的插件程序

,

用户程序在编译后生成动态链

接库

(

DLL

)

,SolidWorks

提供了动态链接库的接口

,

能够将用户的

DLL

嵌入到

SolidWorks

内部使用。

二次开发的程序中可以包含用户自定义的资源

,

例如

:

对话框、工具条、光标等

,

这些资源的使用方

法与普通

VC++

程序略有不同

,

所有的用户资源在

使用时必须遵循以下顺序

:

(

1

)

获取并保存当前资

;

(

2

)

设置用户资源为当前资源

;

(

3

)

使用用户资

;

(

4

)

释放用户资源

;

(

5

)

重新设置以前保存的资

源。

下面以含有两个按钮的工具条为例

,

说明如何在

SolidWorks

中添加自定义资源。首先在用户程序中添

加两个大小不同的

toolbar

资源

IDR-TOOLBAR-

SMALL

IDR-TOOLBAR-BIG,

分别包含两个按钮。

然后在程序中添加如下代码

:

HINSTANCECurrentResource=AfxGetResource

2

Handle

()

;

 

//

获取并保存当前资源

HINSTANCE

 

NewInstance=LoadLibrary

(

-T

(

))

;

 

//

加载动态链接库“

TestApp

1

dll

AfxSetResourceHandle

(

NewInstance

)

;

 

//

设置应

用程序使用用户资源

m-SmallToolbar

1

LoadMappedBitmap

(

IDR-TOOL

2

BAR-SMALL

)

;

HBITMAPhbmSmallImageWell=

(

HBITMAP

)

m-

SmallToolbar

1

GetSafeHandle

()

;

m-LargeToolbar

1

LoadMappedBitmap

(

IDR-TOOL

2

BAR-BIG

)

;

HBITMAPhbmLargeImageWell=

(

HBITMAP

)

m-

LargeToolbar

1

GetSafeHandle

()

;

m-ToolbarId=m-pSolidWorks->AddToolbar

(

-T

(

)

,-T

(

)

,TestApp

TestToolbar

  

(

long

)

hbmSmallImageWell,

(

long

)

hbm

2

LargeImageWell

)

;

 

//

添加工具条

m-pSolidWorks->AddToolbarCommand

(

-T

(

)

,m-ToolbarId,0,TestApp

  

-T

(

ToolCB0@ToolbarUpdate0,

第一个图

))

;

 标”

//

第一个按钮对应函数

ToolCB0

m-pSolidWorks->AddToolbarCommand

(

-T

(

)

,m-ToolbarId,1,TestApp

  

-T

(

ToolCB1@ToolbarUpdate0,

第二个图

))

;

 标”

//

第二个按钮对应函数

ToolCB1

)

,m-pSolidWorks->ShowToolbar

(

-T

(

TestApp

m-ToolbarId

)

;

 

//

显示工具条

74

FreeLibrary

(

NewInstance

)

;

 

//

释放用户资源

AfxSetResourceHandle

(

CurrentResource

)

;//

重置

《机床与液压》

2004

1

No

1

9

原资源

启动

SolidWorks

,

加载动态链接库

TestApp

1

dll

,

在菜单中调用以上程序

,

即可在

SolidWorks

中添加工具条。在

SolidWorks

中添加对话

框的方法与上述方法类似。

2

 参数化建模方法

SolidWorks

中参数化建模可以通过两种方法实

,

一种方法是用户根据需要直接用程序生成需要的

模型

,

称为完全程序化参数建模

;

另一种方法是利用

已有的模型

,

通过修改模型参数的方法得到需要的模

,

称为参数修改法建模。

2

1

1

 完全程序化参数建模

采用程序方法进行建模时

,

建模的过程完全由程

序进行控制

,

相当于将手动分步建模的过程由计算机

连续完成

,

理论上讲

,

凡是手工建模能够完成的复杂

模型都可以用这种方法生成。完全程序建模的方法特

别适合生成具有多个变参数的模型

,

建模的灵活性

,

不需要模型库的支持

,

可以在建模的同时完成设

计计算、强度校核、寿命计算等工作

,

程序可实现的

功能强大

,

参数的输入也可以采用数据库等多元化的

方法。通常情况下

,

这种方法的程序设计工作量较

,

要求程序员对

SolidWorksAPI

函数具有较高的理

解和运用能力

,

适合于模型比较简单、参数变量多或

参数间有关联的情况。由于

SolidWorksAPI

的函数较

,

全部熟悉比较困难

,

一个简单的了解函数应用的

办法是通过

SolidWorks

中的宏来记录用户在造型过程

中的操作

,

所有的操作会以

VBscript

的形式保存下

,

而几乎所有的

VC++

函数名与

VBscript

的函数

名相同或类似

,

然后通过帮助得到相应函数的用法。

具体的实现方法参见文献

[2,3]

2

1

2

 参数修改法建模

采用参数修改法建立参数化模型必须有模型库

的支持

,

模型库通常由用户事先用手工方式建立

,

存在程序指向的目录下。需要使用时

,

从模型库中打

开模型文件

,

对指定的尺寸参数进行修改

,

重建

,

可以获得满足需要的模型。这种方法的程序设计工作

量小

,

与造型过程无关

,

适用于模型标准化程度高的

情况或造型过程复杂

,

可变参量少的情况。参数修改

法建模对模型库的要求较高

,

手工建模时需要综合考

虑尺寸标注方式

,

尽量避免尺寸参数间的关联和制约

关系

,

需要修改的尺寸参数必须独立标注

,

尺寸标注

的名称可通过查阅其属性获得。可变参数的输入可以

通过对话框、数据库等多种方式实现

,

也可以从程序

的设计计算结果中获得

,

修改模型参数前必须打开零

件库中对应的零件

,

打开零件的操作可以由手动完

,

也可以通过程序完成。

这种建模方法不需要程序员掌握大量的

API

建模函

,

程序的复杂程度与模型的复杂程度无关。由于参数

修改必须对应指定的标注对象和零件对象

,

所以这种建

模方法对模型库的依赖性很强

,

模型库一旦确定就不能

随意修改

,

否则将造成程序无法正常运行。

3

 实例

下面以曲柄滑块机构中的曲柄零件为例

,

说明如

何根据输入参数来生成需要的零件。

首先建立模型库

,

1

所示的曲柄模型是手

工建模的

,

保存在程序指

定的目录下。图中的

R

参数化建模需要修改的曲

曲柄的长度参数

柄长度参数

,

在图

2

所示

1

 

的模型草图中

,

可以找到

R

对应的数值为

150mm,

是独立标注的参数

,

选中并查看其属性可获得该标注

对象的名称为

:

D14@

草图

1

,

该标注对象非常重

,

后面的程序在修改长度参数时要首先获取该对

,

然后再调用

API

函数对其进行设置。

2

 曲柄的草图

VC++

工程中创建对话框资源

,

如图

3

所示

,

采用本文第一部分提到的方法

,

SolidWorks

中使用

对话框

,

曲柄的长度由对话框输入。模型库中曲柄的

长度为

R

=150mm,

这里将其设置为

R

=50mm,

了便于比较

,

连杆的长度

L

=300mm

保持不变。由

菜单或按钮打开图

3

所示的对话框

,

输入的曲柄长度

参数对应的变量为

Rlength,

该变量会在设置曲柄长

度时用到。输入参数后

,

点击“装配”按钮

,

程序将

3

 曲柄滑块机构设置对话框

《机床与液压》

2004

1

No

1

9

75

可以看到

,

曲柄长度有了明显变化。首先根据用户输入的参数进行建模

,

然后利用生成的

模型进行曲柄连杆机构的装配。本文仅介绍其中参数

建模部分的程序。

由对话框获得曲柄长度参数后

,

程序首先找到并

获得曲柄零件的对象

,

然后根据前面提到的标注对象

名称

,

获得需要的标注对象。使用

SetValue

()

函数

对标注对象进行设置

,

最后重建模型、刷新屏幕

,

可以得到需要的模型。

下面程序将修改曲柄的长度参数

,

将其设置为

50mm

LPDISPATCHretval=UserApp->getSWApp

()

))

;

 

->ActivateDoc

(

-T

(

roddg1

//

找到曲柄对象

LPDISPATCHmodDisp=UserApp->getSWApp

()

->GetActiveDoc

()

;

IModelDocm-pMod

(

modDisp

)

;

 

//

获得

IModel

2

Doc

对象

m-pMod

IPartDocpart1

(

modDisp

)

;

 

//

获得

IPartDoc

对象

part1

LPDISPATCHpDim=m-pMod

1

Parameter

(

D14@

)

;

 草图

1

//

找到标注对象

IDimensionDime

(

pDim

)

;

 

//

获得

IDimension

4

 曲柄长度参数变化前后对比图

4

 结语

本文基于

SolidWorks

设计平台进行二次开发

,

用本文的方法可以实现三维模型的参数化建模

,

两种

方法都能够保证用户在很短的时间内获得需要的模

,

两种方法各有特点

,

又相互补充

,

有利于提高三

维零件设计的质量和效率

,

具有良好的实用性

,

对于

进一步实现虚拟加工、三维实体仿真、专家系统等

,

具有一定借鉴意义。

参考文献

1

】郭晓宁等1基于

SolidWorks

的平面连杆机构实体运动

分析

[J]

1西安

:

西安理工大学学报

,2001

(

4

)

:

392

395

1

2

】郑 武等1弧面分度凸轮机构的廓面研究和基于

SolidWorks

的实体造型

[J]

1机械科学与技术

,2002

(

6

)

:934

935

1

3

】李存荣

,

彭 华

,

郭顺生等1基于

SolidWorks

的寄生

式设计系统研究与开发

[J]

1机械设计与制造工程

,

2002

(

1

)

:37

38

1

4

SolidWorksCorporation

1

SolidWorks2000APIhelp[Z]

1

作者简介

:

郗向儒

(

1960

)

,

,

汉族

,

陕西省西安

市人

,

硕士

,

副教授

,

研究方向

:

机械设计及传动。

E-

mail:xaut

1

xxr@163

1

com

Dime

Dime

1

SetValue

(

Rlength/1000

)

;

 

//

设置曲柄长度

part1

1

EditRebuild

()

;

 

//

零件重建

m-pMod

1

WindowRedraw

()

;

 

//

屏幕刷新

程序中“

roddg1

”为模型库中曲柄零件的文件

,

D14@

草图

1

”为标注对象的名称

,Rlength

量来自对话框的输入

,

由于

SetValue

()

函数使用的

长度单位是

m,

所以

Rlength

还要除以

1000

。由图

4

收稿时间

:2003-12-22

(

上接第

114

)

dows95

Windows2000

下开发和运行自动化应用程序

设计的完整的软件包

,

其具有优良的监控界面

,

不但

可以直观地显示各种工作设备的工艺状态和工作参

数、控制自动化设备的运行状态

,

而且还能够从趋势

图中直观地观察各种参数的变化曲线。它对自动控制

设备或生产过程进行有效的监视和控制

,

具备界面友

好、便于操作使用的优点。

制冷站集中控制系统通过上位机可以很清楚地

知道整个制冷站的工艺流程

,

观察各个设备的运行状

况、报警指示及处理、重要参数的时实趋势和历史趋

势、在线编程及维护、时实报表及历史报表打印等功

能。

A

系统和

B

系统的操作模式控制都有手动模式和

自动模式两种

,

计算机系统启动后

,

直接自动进入该

制冷站控制流程图主界面。

A

B

系统流程图下方的

方框是报警框

,

在报警框中显示当前最新产生的、最

严重的一条报警。底部的菜单条中包含的项目有

:

A

1用户管理

;B

1工艺流程图

;C

1趋势图

;D

1打印

报表

;E

1报警信息

;F

1参数表

;G

1报警确认

;H

1

退出系统等。该界面美观

,

操作方便。

5

 结束语

制冷站计算机集中控制系统于

2002

9

月投入

使用

,

运行良好

,

该系统具有非常完善的保护及故障

自诊断功能

,

使设备故障率降低

30%

以上

,

使查找

故障时间降低

80%

以上。达到了设计要求

,

系统可

,

保护齐全

,

功能强大

,

不仅自动化控制达到了国

内先进水平

,

而且经济效益明显

,

为我公司今后计算

机自动化控制推广应用提供了经验。

参考文献

1

】黄 俊1半导体变流技术1北京

:

机械工业出版社

,

1991

1

2

】蒋豪贤1电机学1广州

:

华南理工大学出版社

,1997

1

收稿时间

:2003-11-19