PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

基于CATIA CAA 二次开发飞机零部件设计

[复制链接]

2017-5-8 16:59:05 3694 0

admin 发表于 2017-5-8 16:59:05 |阅读模式

admin 楼主

2017-5-8 16:59:05

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
飞机零部件设计是飞机总体设计中的一个重要步骤。由于飞机零部件有几万个,而且大部分零部件类似,结构复杂,重复设计这些飞机零部件耗时耗力,因此如何快速地生成飞机零部件是一个重要的问题。本文以某飞机的框类零件作为研究对象,以CATIA的二次开发作为工具研究了一种可快速驱动生成新的框类零件的参数化建模方法。首先,创建CATIA/CAA二次开发环境跟架构;然后,基于CATIA二次开发的方法,进行三维零部件的参数驱动。
( k  B) a% P1 ?1 CATIA/CAA二次开发平台的创建
! u" ]% d5 d. N3 P: R4 y    1.1 搭建CAA二次开发的RADE环境
) e$ g2 ^1 y3 A8 U+ Q4 ~' w) m    CAA API的实现是通过其提供的快速应用研发环境RADE(rapid application development environment)来完成的。RADE是一个可视化的集成开发环境,它提供完整的编程工具组。实际上RADE以Microsoft Visual Studio VC++为载体,在VC++环境中增加了CAA的开发工具。  I' _7 y5 `! }( H2 q
    安装完CAA与RADE后,打开RADE目录下Environment Setup,选择文件安装路径D:\CATIA\B14,此时启动Microsoft Visual Studio VC++,单击工具—定制选择CAA V5 的附加项和宏文件,创建RADE 环境,重新启动Microsoft Visual Studio VC++即完成与CAA的结合。CAA将自动添加自身的菜单和命令到界面中,通过使用新的编程环境来进行CATIA的二次开发。如图1所示。
- O  _2 E3 _" J系统界面/ Y9 `) P- v4 h% `- Y/ n
+ S) R/ Z7 H( _7 z  `
    1.2 构架CATIA二次开发的结构框架
* H. m( T" [# B- L7 g    (1)创建二次开发的workspace跟module。并在CAA V5 Workspace菜单中选择菜单项Locate Prerequisite Workspace,添加CATIA的安装路径,由RADE调用相关资源。7 w9 U! r- U7 G5 ^
    (2)创建接口。将module设置为活动工程,插入compenent,添加接口函数,此时建立了一个空的Addin。在MyFrame.dico文件中可以看到这个Addin的声明:
! H& Y: [  d, o4 S8 Y; j    NewAddin CATIPrtWksAddin libPartDesignAddin
' c3 S8 C- @" S/ h* I8 e/ I    在NewAddin.cpp中添加两个函数体
2 l6 c* n) [' r  V7 g    void NewAddin: :CreateCommands( ) { }
( |! r3 ?9 G* ^- B* S! j) p! b    CATCmdContainer*NewAddin: :CreateToolbars( ) { }4 h5 c; F: c8 S4 L" C2 \; {( h
    在函数体内添加创建菜单跟工具条的代码。# z) C: Q7 }$ V' Z' V5 C
    (3)创建响应命令。设置module 为当前活动工程,插入Resourse—command,并对创建的命令建立响应
& s6 }0 R- L. m# y8 c! f! p    new CATMyWorkBenchCmdHeader("菜单","PartDesignAddin","TestCmd",(void*)NULL);
! z0 G/ H' W* R) {. ^$ z) z: I- b    在CAA V5 Encyclopedia的C++ API下All Frameworks中查找需要运用的接口函数,利用其使用方法编写程序,实现对飞机零部件的二次开发。如图2和图3所示。
6 |. R2 ^& i! Y, S$ j1 R2 框类零件的三维参数化建模3 c) i2 k( F* h# C, D
    2.1 调用CATIA已创建的飞机框类零件  r6 D6 m! W- f' g
    为便于用户在前台进行操作,用二次开发的方式书写程序将飞机零部件模型在Microsoft Visual Studio VC++运行的同时显示在CATIA界面中。' W: x2 D7 F; t& x; V
    CATSession*pSession=NULL;
, Q) L1 r  L5 g5 J9 k4 j+ W    rc=GetPtrSession(pSession);
8 i- u, S, ~9 s* g: a6 x% V$ o) |' L    CATIIniInteractiveSession*interSession=NULL;4 N/ W. L0 [& [' U% T1 F. {0 w5 C
    rc=pSession→QueryInterface(IID_CATIIniInteractiveSession,(void**)&interSession);……
2 l: s1 h$ P& H1 D
8 a, v  V# K0 t) B& y4 n    2.2 提取飞机框类零件的特征参数信息1 T6 P0 `) {$ b5 l' |) S$ ^; l
    根据飞机零部件结构复杂、维数级别繁琐与特征复杂的特点,需要先读取模型,将不同类型的参数分类,并采取对其进行提取特征参数信息的方法,实现对飞机框类零件几何信息,拓扑信息的获取。
) m2 S" g0 G# R7 t' F3 }( H& u+ U* n    cout<<"PushButton020"<<endl;" s' @7 m. p. t# s  Z7 j* p
    //定义并实现CATFrmEditor接口,获取当前的Part
/ j3 Y  w' p0 O; `6 K2 F7 s/ {* T    CATFrmEditor*pEditor=CATFrmEditor: :GetCurrentEditor( );
# S8 C" T- ^3 l0 v  o( N) Y+ ~3 n    ……4 G: f$ m% X  u8 k
    CATInit_var spInitOnDoc(pDoc);7 y7 b3 }8 [1 R7 s. ^5 S+ G1 i7 O
    //定义并实现CATIPrtContainer 接口4 L* e4 q2 z9 H
    CATIPrtContainer*spPartConatiner=(CATIPrtContainer*)spInitOnDoc→GetRootContainer("CATIPrtContainer");
1 R3 _0 a  e: W    ……
9 f- ~- y- J7 o5 J9 A8 {    if(spCkeFact==NULL_var){cout <<"spCkeFact==NULL_var"<<endl;return;}$ s1 s( S# p! w
    //CATICkeParmFactory_varspCkeFact=CATIPrtContainer;
5 X8 ]6 j. K: q* C' N' o    CATLISTV(CATBaseUnknown_var)list;
0 t' B, J  f6 ?    //CATIVisitor_var aStandardVisitor=spCkeFact→CreateStandardVisitor(IID_CATICkeParm,&list);
' @7 o5 k$ K0 h: N9 C. ^    CATIPrtPart_var myPart=NULL_var;3 `# i: A( d3 k
    myPart=spPartConatiner→GetPart( );
" z5 B6 c" @$ Y& N. Z& R" q: N    ……
% Q8 |* [8 B+ S7 @% I1 y    CATUnicodeString pathName = spParm→Pathname( );
: G- {" l7 ~( H" h# T8 O& d1 d    //cout<<"pathName:"<<pathName<<endl;* P3 \% n' v9 }; Y4 E( `7 a* `
    ……
. H/ x9 p% J' T$ p/ Z$ ?( E) S) |+ Z    if(m==1)continue;( x& h- B% p2 E( [6 q
    CATICkeInst_var oValue=spParm→Value( );2 {+ D- S7 y, N$ E- c9 G
    CATUnicodeString paramValue=oValue→AsString( );0 |  T/ o/ L+ _9 x
    ……/ u7 d$ v% q1 D4 [5 Z7 a' w, p
    提取的特征参数类型跟参数值。1 j5 ]0 u: P) [; ], h$ I% ?
特征参数
: T1 O3 @9 ]6 o. E
' W0 }1 t6 h. i8 E! `: Y    2.3 修改参数,驱动生成新的模型; T+ x1 r% l7 x
    将提取的信息写入设计表中,创建要修改的主副参数的对话框,对提取的参数类型分类,并对不同类型的参数值进行修改,将已经赋好的参数值带回,驱动重新生成新的模型。在修改一个尺寸后,参数化模型中的相关尺寸会自动更新。+ i, }  F% W; N+ L
    //创建Txt的Sheet
* t# f; J2 q/ E4 N2 m# T    CATICkeSheet_var
# [& \9 V7 F: L9 W/ c' w. p8 R    JDCreateDftCmd: :CreateSheet(CATILinkableObject _ var ispiLink,4 i" r+ u4 C# w( {" D; C
    CATUnicodeString ioFilePath)//创建表格
; W( o3 z; d! @  e: J6 l    {
: _4 F2 L% G# ^: @+ _8 D/ T4 E    CATDocument*pDoc=ispiLink→GetDocument( );. R4 `/ _0 M1 X0 Y
    if(pDoc==NULL)
+ H% R8 z4 @# z    {: i1 V& G8 T# k. n9 `2 \
    ……$ ]: J# T$ b6 @7 J, ^6 X
    }# t8 v' ~8 _+ R( Q
    CATICkeSheet_var spSheet=NULL_var;
" n; U$ C! m. n" |5 \3 Z    CATIDesignTable_var spDesign=NULL_var;7 l# f. W$ J. q/ ^
    CATICkeParmFactory_var spCkeFact;5 e9 o1 P9 u* I  n* o/ c
    ……
9 N" \" h: v1 Q; o    spSheet=spDesign→Sheet( );
% ?% W9 N" O* @    return spSheet;6 R- o5 H* M- J9 `" f# W
    }! u3 I% P4 q, _) w
    在Dialog.CATNIs中设置对应的需要修改的特征参数信息,使得已提取的参数信息跟对话框上的参数一一对应。9 [$ C: E3 [3 ~$ o$ Y2 O
参数对应
7 G; Z3 W5 l7 w! ~3 h$ J4 {* n3 U$ X3 @' Z2 _% _9 ?
    Label001.Title="长度";
9 D  V0 X: \6 u* N4 G  |% I8 a! Z    Label003.Title="宽度";
) X) k+ R$ V" `: n) G5 S    Label006.Title="高度";" @7 o; [& [' d( \9 b) n$ r
    Label008.Title="MBD";- |# p( B) Z+ @# }7 [& T, b. K
    Label011.Title="副参数";! z+ Z4 h+ M" [# H9 g2 a
    Label015.Title="主参数";$ }1 v# s" C6 r' o4 M' x" U
    Label016.Title="孔1半径";* E& z, r: p+ Z( v8 |4 w' g
    Label018.Title="凹糟间距";
! `! {, y, ?: Z6 _    修改特征参数信息,确定后将值赋回,驱动重新生成模型。如图6所示。
5 G+ y4 ~3 Y' U3 W& ?0 m重新生成模型- N) p0 V; P) h  a* T2 n
图6 重新生成模型
* B: m5 K& Z# j* v0 ]* G" Q6 l3 A0 a3 结束语0 U4 S- K6 h& l( ]3 s  x
    针对飞机零部件的特点,多次重复的建模工作带来了人力、物力以及时间上的极大地浪费,而且这样描述的零件数据种类过多,存在大量的几何拓扑结构相同或相似,以及尺寸规格不同的零件。因此,基于CATIA二次开发平台CAA,结合Visual C++6.0提出了一种三维参数建模的方法,开发了可以修改驱动生成三维模型的参数化设计程序,实现了用户交互式对飞机零部件的快速设计,极大的缩短了设计时间,提高了设计效率。
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了