PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2017-5-8 16:59:05

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

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

x
飞机零部件设计是飞机总体设计中的一个重要步骤。由于飞机零部件有几万个,而且大部分零部件类似,结构复杂,重复设计这些飞机零部件耗时耗力,因此如何快速地生成飞机零部件是一个重要的问题。本文以某飞机的框类零件作为研究对象,以CATIA的二次开发作为工具研究了一种可快速驱动生成新的框类零件的参数化建模方法。首先,创建CATIA/CAA二次开发环境跟架构;然后,基于CATIA二次开发的方法,进行三维零部件的参数驱动。
4 p; D2 X! u8 ]- [+ P; R) j" H1 CATIA/CAA二次开发平台的创建5 N0 P% ]8 s6 l: z" N
    1.1 搭建CAA二次开发的RADE环境
9 ?% C. B5 {. N# z6 C    CAA API的实现是通过其提供的快速应用研发环境RADE(rapid application development environment)来完成的。RADE是一个可视化的集成开发环境,它提供完整的编程工具组。实际上RADE以Microsoft Visual Studio VC++为载体,在VC++环境中增加了CAA的开发工具。% l5 L' G' P* R0 F3 V
    安装完CAA与RADE后,打开RADE目录下Environment Setup,选择文件安装路径D:\CATIA\B14,此时启动Microsoft Visual Studio VC++,单击工具—定制选择CAA V5 的附加项和宏文件,创建RADE 环境,重新启动Microsoft Visual Studio VC++即完成与CAA的结合。CAA将自动添加自身的菜单和命令到界面中,通过使用新的编程环境来进行CATIA的二次开发。如图1所示。" t) F" m& y+ N" n
系统界面9 I9 @5 q. Q2 q+ e1 E9 [% \
/ u( W- ?: X7 e; I3 D
    1.2 构架CATIA二次开发的结构框架
; N% z1 q4 d+ a& c: _    (1)创建二次开发的workspace跟module。并在CAA V5 Workspace菜单中选择菜单项Locate Prerequisite Workspace,添加CATIA的安装路径,由RADE调用相关资源。/ r1 [+ c; H" E4 H3 k- H& @  B+ V  N" Z
    (2)创建接口。将module设置为活动工程,插入compenent,添加接口函数,此时建立了一个空的Addin。在MyFrame.dico文件中可以看到这个Addin的声明:& Z! {1 |  V+ x1 |2 n2 r5 p$ G
    NewAddin CATIPrtWksAddin libPartDesignAddin2 P7 F. Y6 a+ D9 `
    在NewAddin.cpp中添加两个函数体( O4 t1 |' M- [' Z' P5 I+ o; ?, e8 t
    void NewAddin: :CreateCommands( ) { }0 P' `! Y+ Y# y9 G9 X: y" M4 E+ \7 N
    CATCmdContainer*NewAddin: :CreateToolbars( ) { }8 z5 u" M) D4 F0 x; L5 i6 k7 q
    在函数体内添加创建菜单跟工具条的代码。
0 R" N  _! b5 k) u    (3)创建响应命令。设置module 为当前活动工程,插入Resourse—command,并对创建的命令建立响应/ R8 j. B% W6 x  |/ o  k
    new CATMyWorkBenchCmdHeader("菜单","PartDesignAddin","TestCmd",(void*)NULL);
9 q3 O( S! p# P6 z    在CAA V5 Encyclopedia的C++ API下All Frameworks中查找需要运用的接口函数,利用其使用方法编写程序,实现对飞机零部件的二次开发。如图2和图3所示。  f, m5 U6 }4 l. U# }2 l3 k. |
2 框类零件的三维参数化建模/ @( s. r: X* l6 w2 K0 S8 y  m
    2.1 调用CATIA已创建的飞机框类零件/ H6 I; F* A- O( P" ]( m
    为便于用户在前台进行操作,用二次开发的方式书写程序将飞机零部件模型在Microsoft Visual Studio VC++运行的同时显示在CATIA界面中。
+ k; C) t/ R. ]- h    CATSession*pSession=NULL;0 d; v1 ?9 S( n; d9 w  f, q
    rc=GetPtrSession(pSession);
* s4 n. r' f9 ]! p1 d    CATIIniInteractiveSession*interSession=NULL;
) q8 x8 o# {: ^# ?! Y4 W    rc=pSession→QueryInterface(IID_CATIIniInteractiveSession,(void**)&interSession);……- U; |3 Y; h* T: [2 Y( \

: I: F* p7 T0 w    2.2 提取飞机框类零件的特征参数信息1 o. L! {# v; ]6 C( t" z
    根据飞机零部件结构复杂、维数级别繁琐与特征复杂的特点,需要先读取模型,将不同类型的参数分类,并采取对其进行提取特征参数信息的方法,实现对飞机框类零件几何信息,拓扑信息的获取。- X' R" V9 ]: e+ E. X
    cout<<"PushButton020"<<endl;
  A( }" L: o) c' b- y    //定义并实现CATFrmEditor接口,获取当前的Part
- J5 g* r( q* R( H1 D    CATFrmEditor*pEditor=CATFrmEditor: :GetCurrentEditor( );
# b  [( m) ]+ ?$ {/ Y: m    ……& F6 Z6 M% u& M
    CATInit_var spInitOnDoc(pDoc);
, \, G8 Q2 ~4 I: R- [    //定义并实现CATIPrtContainer 接口) @: m2 E# A  c9 r( l/ u2 u6 H7 S
    CATIPrtContainer*spPartConatiner=(CATIPrtContainer*)spInitOnDoc→GetRootContainer("CATIPrtContainer");: U4 \8 ~, B& S% i) i% ^+ ?1 p3 n
    ……, A& [6 C+ D+ I' B8 c0 x
    if(spCkeFact==NULL_var){cout <<"spCkeFact==NULL_var"<<endl;return;}
/ X" m6 f! t7 W* k- r    //CATICkeParmFactory_varspCkeFact=CATIPrtContainer;
3 a  m" z1 _6 l' |! L    CATLISTV(CATBaseUnknown_var)list;; @# u9 l  R. U8 |8 a& O1 {* h5 v
    //CATIVisitor_var aStandardVisitor=spCkeFact→CreateStandardVisitor(IID_CATICkeParm,&list);
. y% D- C- h8 t* Q* l" b    CATIPrtPart_var myPart=NULL_var;4 L% c6 g( ^3 ^% S
    myPart=spPartConatiner→GetPart( );
' @$ C' g( _/ S& E. H    ……3 V: Z  O* x: S& Y& F
    CATUnicodeString pathName = spParm→Pathname( );
' @* b! x, v& c$ P* F& |    //cout<<"pathName:"<<pathName<<endl;4 q0 R$ x) g; T$ F
    ……
* ~4 f- X" n( O& n$ g) X3 |: d! T, h    if(m==1)continue;, U( \9 `/ |( ~" x; V- Z+ \
    CATICkeInst_var oValue=spParm→Value( );1 R4 @3 D7 X. E& W  {  w4 i- Z( K
    CATUnicodeString paramValue=oValue→AsString( );
5 d$ q- d! M2 n7 C& A5 I    ……
" e# ^. [7 w" M, i    提取的特征参数类型跟参数值。' r& |! S: A5 g3 i+ f* D$ }
特征参数4 V: D; M# {% p2 [$ P

* l; J) s6 d$ z& ^- K, t0 ^1 N    2.3 修改参数,驱动生成新的模型1 \4 r$ Y0 X7 b+ P0 ]
    将提取的信息写入设计表中,创建要修改的主副参数的对话框,对提取的参数类型分类,并对不同类型的参数值进行修改,将已经赋好的参数值带回,驱动重新生成新的模型。在修改一个尺寸后,参数化模型中的相关尺寸会自动更新。+ U( t. c' g0 ~
    //创建Txt的Sheet9 w- Q. N4 |. S( k4 |# U& G
    CATICkeSheet_var2 X  i0 w: @% |- c
    JDCreateDftCmd: :CreateSheet(CATILinkableObject _ var ispiLink,) ]( k7 i6 f9 E' }5 H& h
    CATUnicodeString ioFilePath)//创建表格7 L( `2 c  [7 h% l! o
    {
% h' _% j  G8 t% V- @: E    CATDocument*pDoc=ispiLink→GetDocument( );; f' }" X* T) {- t# t# {: ~( q
    if(pDoc==NULL); o3 \! d3 c. O& A. A' j
    {( z. v" j" e" M( k0 V) O
    ……; b  O2 o  C" T1 J  `' P$ L6 M) P- s& S
    }
* E4 A+ a9 s4 R. v. H2 x    CATICkeSheet_var spSheet=NULL_var;$ e. N; K9 X; o
    CATIDesignTable_var spDesign=NULL_var;
* Q( q- T$ ~( E; ]" N, ^% T: i* w    CATICkeParmFactory_var spCkeFact;$ z4 T" z% H* i& a2 |
    ……9 r% k( O  q, b) O3 Y
    spSheet=spDesign→Sheet( );
( L" u) h: K5 h, i  }) j5 ^) W    return spSheet;  {6 k# C* x7 v
    }; T$ v% O, i8 ^) R$ w% T9 l
    在Dialog.CATNIs中设置对应的需要修改的特征参数信息,使得已提取的参数信息跟对话框上的参数一一对应。
) \5 r9 }0 ]9 v' y8 p% k0 p; a参数对应
& w2 G$ _: t& z4 Q- {' w% |
) F# u! i4 r* k9 h! O    Label001.Title="长度";8 }; |9 @" F& q, L
    Label003.Title="宽度";# `4 E9 m) J$ R' C$ ^; j
    Label006.Title="高度";0 B& j9 A' i4 [- z7 ?" G
    Label008.Title="MBD";
* O  a( e' a& e7 j0 W! n) K    Label011.Title="副参数";& a8 N' ?4 L3 B& }2 c7 P: _
    Label015.Title="主参数";0 |5 `4 k( z  B6 k; h
    Label016.Title="孔1半径";
' f' d0 W$ z: }5 s" c' U, R    Label018.Title="凹糟间距";
! I) w6 [: J! ~8 u0 A% `2 P    修改特征参数信息,确定后将值赋回,驱动重新生成模型。如图6所示。9 n8 B9 {, G" k9 O/ [
重新生成模型. c; C( P7 y3 r8 {
图6 重新生成模型. @3 `2 S  g* ~6 y( A
3 结束语1 H1 r/ j8 I8 Y+ Q
    针对飞机零部件的特点,多次重复的建模工作带来了人力、物力以及时间上的极大地浪费,而且这样描述的零件数据种类过多,存在大量的几何拓扑结构相同或相似,以及尺寸规格不同的零件。因此,基于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二次开发专题模块培训报名开始啦

    我知道了