野火论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始


查看: 16433|回复: 11

[原创] 优化进阶版干涉检查

[复制链接]

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
发表于 2018-6-25 11:14 | 显示全部楼层 |阅读模式
不仅可以显示干涉零件列表,也可以输出EXCEL干涉信息,更可以点击干涉列表任意一行,只显示干涉零件对。
只显示干涉零件.png

测试模型

测试模型
`(XM}E~~8270KPFEI41H_VN.png

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-25 11:20 | 显示全部楼层
用到了 PROE简化表示功能开发,任意显示想显示的零部件,可以用于模型轻量化,也可以一键还原模型
回复 支持 反对

使用道具 举报

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-25 11:21 | 显示全部楼层
  status=ProSolidFeatVisit(mdl,(ProFeatureVisitAction)FeatureAsmVisitAcFn1,FeatFilterAction,(CArray<ProFeature,ProFeature>*)&feat_list1);
                              int num1=(int)feat_list1.GetCount();
                                                  for (int s=0;s<num1;s++)
                                                  {
                                                           ProSolid   mdl1;
                                                       status=ProAsmcompMdlGet((ProAsmcomp *)(&feat_list1[s]),(ProMdl *)&mdl1);
                                                           ProMdlNameGet(mdl1,name);//获得模型名称
                                                           csName=CString(name);//元件名称转为字符串
                                                             if(name==m_name1||name==m_name2)//如果某一行的零件名称与遍历得到的零件名称一样则创建简化表示
                                           {
                                                       comp_id_table[0]=feat_list[i].id;
                                                      comp_id_table[1]=-1;
                                                      status=ProAsmcomppathInit((ProSolid)mdl,comp_id_table,1,&comp_path);//获得元件的路径,作用极其大
                                  status = ProMdlToModelitem(mdl, &model_item);
                                  status = ProSimprepdataitemInit( comp_path.comp_id_table,comp_path.table_num, model_item.id, &sr_action,&item);//初始化简化数据
                                  status = ProSimprepdataitemAdd (data, &item);//添加简化数据
                                               }
                                                  }
                                        }
                            }
               }
                      status = ProSimprepCreate ((ProSolid)owner, data, &simp_rep);//创建简化表示
                      if (status == PRO_TK_NO_ERROR)
                        {
                       status = ProSimprepActivate ((ProSolid)owner, &simp_rep);//激活简化模型
                        }
                   status = ProSolidDisplay ((ProSolid)owner);//显示简化模型
           }
                   status = ProSimprepdataFree (&data);//释放数据
回复 支持 反对

使用道具 举报

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-25 11:22 | 显示全部楼层
部分代码,至于简化表示的遍历我就不说了,上面的代码 帮助文档都有,组合一下就行
回复 支持 反对

使用道具 举报

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-25 11:23 | 显示全部楼层
comp_id_table[0]=feat_list[i].id;
comp_id_table[1]=-1;
  status=ProAsmcomppathInit((ProSolid)mdl,comp_id_table,1,&comp_path);
这个路径的获取花了很大功夫
回复 支持 反对

使用道具 举报

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-25 11:27 | 显示全部楼层
分享出来吧,有需求的人可以参考,不过有个问题为啥相同零件的id号是一样的,目前程序不好的是,根据名称判断要简化的干涉对,有大佬知道哪个可以唯一标识零件吗(相同零件也不一样的那一种)
回复 支持 反对

使用道具 举报

6

主题

44

回帖

1

威望

助工

Rank: 2

积分
61
发表于 2018-6-25 15:46 | 显示全部楼层
写代码的真的牛逼
回复 支持 反对

使用道具 举报

1

主题

367

回帖

0

威望

工程师

Rank: 3Rank: 3

积分
434
QQ
发表于 2018-6-26 09:06 | 显示全部楼层
谢谢分享,这代码怎么用呢
回复 支持 反对

使用道具 举报

8

主题

53

回帖

0

威望

助工

Rank: 2

积分
73
 楼主| 发表于 2018-6-26 09:22 | 显示全部楼层
FREE1988 发表于 2018-6-26 09:06
谢谢分享,这代码怎么用呢

遍历 模型特征获得零件名与干涉列表名对比,一样则创建简化表示,只显示干涉零件
回复 支持 反对

使用道具 举报

159

主题

712

回帖

3

威望

讲师

Rank: 6Rank: 6

积分
1046
发表于 2021-5-12 10:00 | 显示全部楼层
能否分享一下呢,我觉得这个蛮有用的.
回复 支持 反对

使用道具 举报

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

本版积分规则

本站为非营利性站点,部分资源为网友搜集或发布,仅供学习和研究使用,如用于商业用途,请购买正版。站内所发布的资源,如有侵犯你的权益,请联系我们,本站将立即改正或删除。

QQ|手机版|小黑屋|野火论坛(©2007~2024) ( 苏ICP备11036728号-2 )苏公网安备 32039102000103号

GMT+8, 2024-4-26 05:34 , Processed in 0.106962 second(s), 27 queries .

快速回复 返回顶部 返回列表