网站首页 > 技术教程 正文
干涉检查的接口很诡异(猜测为CATIClash等),在CAA Help view中无法找到,百科全书亦没有。然而,我们却可以从CNextObjectBrowser中查询到该接口,也就意外着CATIA应该是开放该接口的,事实上,我们是可以基于Automation的方式进行开发的。
干涉简述:
干涉检查是装配设计中应用非常广泛的功能之一,例如,通过干涉检查可以判断多个对象之间在静态位置和相对运动时的交涉情况,从而能够保证装配质量。虽然CATIA提供了干涉检查的相关功能,但是有时候,我们是需要去定制干涉结果或者借助干涉结果去实现其他功能。为了明确程序开发的输入输出,编者首先在这里介绍下CATIA自带的功能。如下图,可知该功能的实现主要需要输入三个参数:干涉类型、选择方式以及待干涉Product的结点。
本文假定选择方式为“两个选择之间”,此处已经获取的文档结点为spRootProduct,Instance CATIProduct为InstProduct1和InstProduct2,干涉Demo程序如下,大家举一反三。
干涉检查代码示例:
void ClashCompute(CATIProduct_var spRootProduct, CATIProduct_var InstProduct1, CATIProduct_var InstProduct2) { //开始获取CATIAClashs CATIAProduct* pCATIAPrd = NULL; spRootProduct ->QueryInterface( IID_CATIAProduct, (void **)&pCATIAPrd ); CATIAClashes* pCATIAClashes = NULL; CATUnicodeString strname = "Clashes"; CATBSTR BSTR; strname.ConvertToBSTR(&BSTR ); CATBaseDispatch* pBaseDis = NULL; pCATIAPrd->GetTechnologicalObject( BSTR, pBaseDis); //获取Object对象 pBaseDis->QueryInterface( IID_CATIAClashes, (void **)&pCATIAClashes ); //创建一个CATIClash并添加到CATIAClashs集中 CATIAClash* pCATIAClash = NULL; pCATIAClashes->Add( pCATIAClash); CATIClash* pClash = NULL; pCATIAClash->QueryInterface( IID_CATIClash, (void **)&pClash ); //设置CATIClash的参数并计算 CATListValCATBaseUnknown_var InstProduct1List; InstProduct1List.Add(InstProduct1); CATListValCATBaseUnknown_var InstProduct2List; InstProduct2List.Add(InstProduct2); pClash->SetGroupMode(CATGroupModeBetweenTwo);//设定选择方式 pClash->SetGroup(1, InstProduct1List); //设定图44中的“选择:1” pClash->SetGroup(2, InstProduct2List); //设定图44中的“选择:2” CATComputationCase iCase = CATComputationCaseClashContact; pClash->SetComputationCase(iCase); //设定干涉类型“接触+碰撞” pClash->Compute(); //读取计算结果 CATIClashResult* pResult = NULL; pClash->GetResult(pResult); int count = 0; pResult->CountConflicts(count); //输出结果 for (int k=0;k<count;k++) { CATIConflict*pResultConflict=NULL; pResult->GetConflict(k,pResultConflict); CATIProduct*oFirstProduct=NULL; CATUnicodeString oShapeName1; CATIProduct*oSecondProduct=NULL; CATUnicodeString oShapeName2; pResultConflict->GetFirstProduct( oFirstProduct, oShapeName1); pResultConflict->GetSecondProduct( oSecondProduct, oShapeName2); /* 其中,第K个相互干涉(碰撞和接触)的两个Product结点指针:oFirstProduct和oSecondProduct 开发者可以捕获干涉记录中相互干涉的对象,然后依据该结果并根据一定的标准去进行后续的开发 可输出结果例如: cout<<”FirstProductNumber:”<<oFirstProduct->GetPartNumber()<<endl; */ } }
分析:
本处的编程方式可理解为“先形式,后内容”,即首先创建一个干涉的空壳实例,然后设定各种参数,最终完成干涉结果的检查。大家可以有意地分段测试函数,查看效果。同时,这里用到一种以CATIA为前缀的接口,这种接口(如CATIASection:断面剖切)的实现很多会涉及GetTechnologicalObject对象的获取,而编程均属于上述方式。
欢迎关注:CAA二次开发(微信公众号)
开发深似海、疑义相与析!
猜你喜欢
- 2024-10-30 芜湖CATIA三维软件培训|你真的知道CATIA吗
- 2024-10-30 Catia v5/v6 catia自学视频教程
- 2024-10-30 NX二次开发-编辑部件族信息 ug nx二次开发
- 2024-10-30 CATIA功能性建模FMP,助力汽车零部件产品开发效率提升
- 2024-10-30 CAD软件二次开发框架 cad 二次开发
- 2024-10-30 UG/PROE/CATIA/PROE,你会用几个,一起来见证绘图软件的变迁吧!
- 2024-10-30 汽车行业必备设计软件CATIA安装程序与使用教材
- 2024-10-30 python with catia python中with open as的用法
- 2024-10-30 计算机辅助设计软件——CATIA catia辅助设计程序
- 2024-10-30 NX二次开发-NXManager外部开发环境配置
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)