南京东岱信息技术有限公司有一大批技术精湛的solidworks技术工程师,他们可以给你解决一些技术上面的问题。
摘要: 用三维设计软件So lidWorks 进行产品设计开发过程中, 为了实现设计意义上的变量化绘图和系列化设计, 有必要对So lidWo rks 进行本地化的二次开发. 介绍了SolidWo rks 的应用程序接口( applicat ion pro gr amming interface, API) 函数的使用方法, 并结合门式起重机端梁的开发实例, 阐述了利用Visual C++ 编程环境对Solid Wor ks 进行二次开发, 根据产品设计计算的参数动态地改变模型零件尺寸, 实现产品变量化设计、三维建模绘图的思想和方法. 本方法中So lidWorks 与VC+ + 相结合, 减少了编程工作量, 能够有效提高产品的设计开发效率, 对于开发系列化产品设计软件具有重要参考价值.
So lidWor ks 是1 套基于Windows 平台的优秀三维设计软件, 具有用户界面友好, 上手快的优点. 采用特征建模、变量化驱动可方便地实现三维建模、装配和生成工程图.
SolidWo rks 软件本身所具有的交互方式, 可以使用户对已生成模型的尺寸、几何轮廓和相互约束关系随时进行修改, 而不需要编程. 但要实现设计意义上的变量化绘图和系列化设计, 需要建立设计计算获得的参数与三维图形之间的直接相关性, 这是SolidWor ks 软件本身所无法实现的[ 1] . 所以要使SolidWorks 在产品设计过程中充分有效地发挥作用,就需要对其进行专业化和本地化的二次开发工作.
通过SolidWo rks 软件内嵌的应用程序接口( Applicat ion Pro gramming Interface, API) , 可以对Solid-Wo rks 的设计参数百分之百进行修改, 实现有效的二次开发. 任何支持API 的编程语言都可作为开发工具, 如Visual C+ + , Visual
Basic, Delphi 等. 本文着重探讨基于V isual C+ + 6. 0 对SolidWo rks2006 进行变量化设计二次开发的方法.
1 SolidWorks 二次开发原理与思路
1. 1 二次开发原理
对SolidWor ks 进行二次开发主要通过软件内嵌的A PI 接口, 该接口为用户提供了自由、开放、功能完整的开发工具, 其中包含了大量的功能函数. 用户借助高级编程语言作为开发平台, 在设计友好操作界面的同时, 通过在程序中调用API 函数可以访问和操作SolidWorks, 对SolidWor ks 进行各种操作控制, 以实现产品三维模型的建立.
SolidWorks 所提供的各种API 函数数以百计, 这些API 函数是对SolidWorks 进行二次开发的基础. 但是在用户利用编程语言开发自己的应用程序时, 需要对这些API 函数进行频繁调用. 所以非常有必要利用API 函数来生成成员函数, 并封装为1 个类, 以简化程序的编写工作. 该类能够控制SolidWorks 进行各种操作, 如启动、关闭、打开和关闭零件文件、修改草图和特征参数, 以及模型重建、零部件装配等.
1. 2 二次开发思路
通过编程调用API 函数对SolidWorks 进行二次开发通常有2 种方式, 一是完全编程的方式, 即在编程环境中通过对API 函数的调用, 来实现在SolidWor ks 中进行建模所需要的全部操作. 该方法使三维模型完全实现了参数驱动, 但编程工作量大, 开发效率低, 对开发人员的要求也较高. 二是采用SolidWo rks 建模与在编程环境中编程相结合的方法来实现对So lidWorks 的二次开发, 首先在SolidWor ks 中建立初始三维模型, 确定具体设计变量; 然后在程序中调用API 函数, 修改模型的设计变量并重建, 以得到最终模型. 在此方法中, 模型的设计变量是程序与模型之间相联系的纽带, 通过少量的变量化参数来控制模型, 实现快速、准确的三维图形设计.
相对于完全编程的方式, 由于第二种方法将大部分的工作( 即初始模型建立部分) 转移到了相对简易的SolidWo rks 中进行, 所以大大减少了相对繁琐的编程工作的工作量, 提高了开发效率. 本文中采用SolidWor ks 初始建模与VC++ 编程相结合的方法, 选定典型零件, 按正确的设计关系在SolidWorks 环境中绘制三维模型图形并保存. 在三维建模过程中根据设计需要分析并确定模型的设计变量, 然后通过编程环境编制程序, 调用API 函数打开已保存好的三维零件图形文件, 修改其设计变量并重新生成模型, 实现模型几何或拓扑信息的改变, 从而完成零件的三维变量化建模过程.
2 SolidWorks 二次开发过程
以下通过对门式起重机端梁的变量化设计具体阐述基于Visual C ++ 6. 0 编程环境对Solid Wo rks2006 的二次开发过程.
2. 1 在SolidWorks 中建立三维模型
首先在SolidWor ks 中进行零件建模. 门式起重机端梁的结构比较简单, 主要由上下盖板、主副腹板组成. 在SolidWo rks 中, 在右视基准面上建立草图, 利用直线工具画出端梁截面草图, 如图1 所示, 并通过” 拉伸凸台/ 基体”命令, 生成端梁的拉伸特征. 创建的端梁三维模型如图2 所示.
其次确定模型的设计变量, 并添加必要的约束. 在确定设计变量时应尽量减少变量的数目, 并同结构设计计算所获得的变量保持一致. 端梁的设计变量确定为6 个, 分别为盖板宽、盖板厚、腹板内侧间距、腹板外侧间距、腹板高、端梁长. 模型中其他尺寸关系及相互间的约束均在SolidWorks 建模过程中予以确定, 如端梁须相对于中心线对称; 对从属参数直接添加关系式方程( 如图1 中带”∑”符号的尺寸为已添加关系式方程的尺寸) , 使之与设计变量关联等.
最后, 对模型中的设计变量及在后期装配中需要的配合面、基准面等进行命名, 以在程序中方便调用. 在SolidWo rks 中进行命名非常方便, 在此不再赘述.

2. 2 创建CSldWorks 类库
为了在程序中更方便地使用SolidWo rks A PI 函数, 通常将API 函数改写为成员函数, 并封装为1 个CSldWorks 类. 这里主要介绍本实例中用到的5 个成员函数, 分别为启动So lidWorks、打开零件文件、修改模型尺寸、重建模型、保存零件文件, 并给出函数的实现. 其他函数可以自己编写.
//SldWorks. h
class CSldWorks
{ public: ISldWorks * m_pSldWor ks; IMo delDoc *
m_pModelDoc; IPartDoc * m_pPartDo c;
HRESULT Star t( ) ; //启动So lidWor ks
HRESULT New Part ( IPartDoc * * pPartDoc) ; //新建零件文件
HRESULT SetDimValue( BST R st ringin, do uble value) ; //修改模型尺寸
HRESULT Rebuild( ) ; //重建模型
long SaveFile( BSTR Path) ;//保存零件文件
} ;
CSldWorks 类库的实现:
MSldWorks. cpp
HRESULT CSldWo rks: : Start ( )//启动SolidWorks
{ HRESU LT hr= CoCreateInstance( CLSID_SldWorks, NULL,
CLSCTX_LOCAL_SERVER, IID
_ISldWor ks, ( vo id * * ) ( & m_pSldWorks) ) ;
ASSERT( hr= = S_OK& & m_pSldWorks! = NU LL) ;
m_pSldWor ks- > put_Visible( tr ue) ;
return hr;
}
HRESULT CSldWo rks: : New Part ( IPartDo c * * pPartDoc) //新建零件文件
{ HRESU LT hr= m_pSldWorks- > INew Part ( & ( *
pPartDoc) ) ;
ASSERT( hr= = S_OK& & ( * pPartDoc) ! = NU LL) ;
hr= ( * pPartDoc) - > Quer yInterface( IID_IModelDoc,
( v oid * * ) & m_pModelDoc) ;
ASSERT( hr= = S_OK& & m_pModelDo c! = NU LL) ;
return hr;
}
HRESULT CSldWo rks: : SetDimValue( BSTR st ring in,
double v alue) //修改模型尺寸
{ LPDIMENSION ret ;
HRESULT hr= m_pModelDoc- > IPar ameter( str ing in,
& ret ) ;
ASSERT( hr= = S_OK& & ret ! = N ULL) ;
hr= ret- > put_Value( value) ;
ASSERT( hr= = S_OK) ;
ret- > Release( ) ;
return hr;
}
HRESULT CSldWo rks: : Rebuild( ) //重建模型
{ VARIANT_BOOL ret;
HRESULT hr= m_pModelDoc- > EditRebuild3( & ret ) ;
ASSERT( hr= = S_OK) ;
return hr;
}
long CSldWorks: : Sav eFile( BSTR Path) //保存零件文件
{ HRESU LT hr;
long ret= 0;
hr= m_pModelDo c- > SaveA sSilent ( Path, false, &
ret) ;
ASSERT( hr= = S_OK) ;
return ret ;
}
2. 3 用户界面设计与程序建模实现
在Visual C+ + 中制作窗体界面如图3 所示. 在界面的编辑框中输入端梁相应数据( 或利用编程从其他数据源读入数据) , 此处数据为设计计算所获得的参数. 点击/ 端梁建模0按钮,即可运行程序, 实现端梁的三维建模.
程序具体的工作流程如图4 所示.

以下为程序中实现对端梁变量化绘图的主要程序代码:
void CMo del JDLModel( )
{ CSldWorks SW;
char CurrentPath[ 200] ; //当前路径
CSt ring DangQianLuJing ;
GetCurr entDirectory( 200, CurrentPath) ;
DangQianLuJing . Fo rmat ( "% s", CurrentPath)
;
SW. Start ( ) ;
SW. Open( _bst r_t (
DangQianLuJing+ "\\ 模型\\ 端梁模型. sldprt") , swDocPART ) ;
SW. SetDimV alue( _bst r_t ( " 端梁上盖板宽@端梁草图") , JBCC[ 30] )
;
SW. SetDimV alue( _bst r_t ( " 端梁上盖板厚@端梁草图") , JBCC[ 36] )
;
SW. SetDimV alue( _bst r- t( "端梁腹板外侧间距@端梁草图") , JBCC[ 32] )
;
SW. SetDimV alue( _bst r_t ( " 端梁腹板内侧间距@ 端梁草图") , JBCC[ 31] )
;
SW. SetDimV alue( _bst r_t( " 端梁腹板高@ 端梁草图" ) , JBCC[ 34]
) ;
SW. SetDimV alue( _bst r_t ( " 端梁总长@端梁拉伸") , JBCC[ 28] )
;
SW. Rebuild( ) ;
SW. Sav eFile( _bst r_t ( DangQianLuJing+ "\\ 模型\\ 端梁. sldprt") ) ;
}
图5 所示为程序的变量化驱动运行结果.

3 结论
本文阐述了利用面向对象的开发工具Visual C+ + 对SolidWorks 进行二次开发, 实现三维变量化建模的过程. 通过对门式起重机端梁等一些典型结构件进行设计调试证明, 上述方法简便易行. 在企业产品设计开发过程中, 运用此方法并结合生产实际, 可以定制符合企业自身需要的变量化模型库, 这将极大地提高设计效率, 缩短新产品的开发周期, 具有较强的现实意义.
南京东岱信息技术有限公司目前主要从事销售solidworks以及技术支持solidworks。
发表于:
2014-04-24 09:28 阅读(22573)
评论(38) 收藏 好文推荐
本博客所有内容,若无特殊声明,皆为博主原创作品,未经博主授权,任何人不得复制、转载、摘编等任何方式进行使用和传播。
作者该类其他博文:
网站相关博文: