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


发布评论