QQ登录

只需一步,快速开始

快捷登录

登录 或者 注册 请先

UG爱好者

查看: 2515|回复: 6
打印 上一主题 下一主题

[求助] NXOpenC++装配体约束出现问题

[复制链接]

上等兵

Rank: 1

2

主题

12

帖子

100

积分
跳转到指定楼层
楼主
发表于 2016-6-15 21:54:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

图中接触约束明明已经求解成功,为什么这两个面没有合上呢,而且创建的接触约束和对齐约束双击之后都不能重定义,
如下图。显示添加的引用无效(想想只有可能是选择的接触面不对,但图中接触面看得出来就是我要选择的面),
但具体不知道什么无效,有谁能帮忙解答吗??

有奖推广贴子: 

回复

使用道具 举报

上尉

Rank: 6Rank: 6

27

主题

785

帖子

6258

积分
沙发
发表于 2016-6-16 10:11:23 | 只看该作者
能否指明一下,是那两个面要接触对齐呢??
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

2

主题

12

帖子

100

积分
板凳
 楼主| 发表于 2016-6-16 15:43:02 | 只看该作者
UG自在观 发表于 2016-6-16 10:11
能否指明一下,是那两个面要接触对齐呢??

可以看图一,我选中了接触这个约束,图上面夹着白色圆柱那段的左右两个圆环面。
回复 支持 反对

使用道具 举报

上尉

Rank: 6Rank: 6

27

主题

785

帖子

6258

积分
地板
发表于 2016-6-16 16:42:24 | 只看该作者
对齐之后,试一试用同心约束。看一看是否可以
回复 支持 反对

使用道具 举报

上尉

Rank: 6Rank: 6

27

主题

785

帖子

6258

积分
5#
发表于 2016-6-16 16:42:42 | 只看该作者
还不行,介意再把图档上传。我看一看
回复 支持 反对

使用道具 举报

上等兵

Rank: 1

2

主题

12

帖子

100

积分
6#
 楼主| 发表于 2016-6-16 20:59:14 | 只看该作者
UG自在观 发表于 2016-6-16 16:42
还不行,介意再把图档上传。我看一看

我先把我做的接触约束代码发上来,(整个做装配的代码比较长,不知道这里能不能上传文件,可以的话我就把全部文件代码发给你)我创建的是螺栓螺母装配,全称包括模型都是代码生成的。可以看我之前发的图片,代码中comp1和comp2是我创建的两个组件(comp1中创建两个圆柱体作布尔和,即螺栓部分,comp2中创建两个圆柱体作布尔差,即螺母部分),找接触约束配合面的那部分代码中的bd11_Tag是组件comp1中创建的两个圆柱体做布尔和后获得的实体,bd22_Tag是组件comp2中两个圆柱体作布尔差后获得的体。
  1. //接触约束
  2. NXOpen::Positioning::ComponentPositioner *componentPositioner3;
  3.          componentPositioner3 = workPart->ComponentAssembly()->Positioner();   
  4.          componentPositioner3->ClearNetwork();   
  5.          NXOpen::Assemblies::Arrangement *arrangement1(dynamic_cast<NXOpen::Assemblies::Arrangement *>(workPart->ComponentAssembly()->Arrangements()->FindObject("Arrangement 1")));
  6.          componentPositioner3->SetPrimaryArrangement(arrangement1);   
  7.          componentPositioner3->BeginAssemblyConstraints();   
  8.          NXOpen::Positioning::Network *network3;
  9.          network3 = componentPositioner3->EstablishNetwork();   
  10.          NXOpen::Positioning::ComponentNetwork *componentNetwork3(dynamic_cast<NXOpen::Positioning::ComponentNetwork *>(network3));
  11.          componentNetwork3->SetMoveObjectsState(true);     
  12.          NXOpen::Assemblies::Component *nullNXOpen_Assemblies_Component(NULL);
  13.          componentNetwork1->SetDisplayComponent(nullNXOpen_Assemblies_Component);   
  14.          componentNetwork1->SetNetworkArrangementsMode(NXOpen::Positioning::ComponentNetwork::ArrangementsModeExisting);   
  15.          componentNetwork1->SetMoveObjectsState(true);   
  16.          componentNetwork1->SetNetworkArrangementsMode(NXOpen::Positioning::ComponentNetwork::ArrangementsModeExisting);
  17. NXOpen::Positioning::Constraint *constraint3;
  18.          constraint3 = componentPositioner3->CreateConstraint(true);   
  19.          NXOpen::Positioning::ComponentConstraint *componentConstraint3(dynamic_cast<NXOpen::Positioning::ComponentConstraint *>(constraint3));
  20.          componentConstraint3->SetConstraintAlignment(NXOpen::Positioning::Constraint::AlignmentInferAlign);   
  21.          componentConstraint3->SetConstraintType(NXOpen::Positioning::Constraint::TypeTouch);
  22. uf_list_p_t face_list1;
  23.              tag_t  object_id1 =NULL_TAG;
  24.          UF_MODL_create_list(&face_list1); //初始化列表
  25.          UF_MODL_ask_body_faces (bd11_Tag, &face_list1);//获得实体上所有表面
  26.          UF_MODL_ask_list_item(face_list1,0,&object_id1);
  27.          UF_OBJ_set_color(object_id1,3);
  28.                  Face *face1;
  29.          face1=dynamic_cast<NXOpen::Face *>(NXObjectManager::Get(object_id1));

  30.              uf_list_p_t face_list2;
  31.          tag_t  object_id2 =NULL_TAG;
  32.          UF_MODL_create_list(&face_list2); //初始化列表
  33.          UF_MODL_ask_body_faces (bd22_Tag, &face_list2);//获得实体上所有表面
  34.          UF_MODL_ask_list_item(face_list2,1,&object_id2);
  35.          UF_OBJ_set_color(object_id2,3);
  36.                  Face *face2;
  37.          face2=dynamic_cast<NXOpen::Face *>(NXObjectManager::Get(object_id2));

  38.          NXOpen::Positioning::ConstraintReference *constraintReference1;
  39.          constraintReference3 = componentConstraint3->CreateConstraintReference(comp1, face1, false, false, false);
  40. NXOpen::Positioning::ConstraintReference *constraintReference2;
  41.          constraintReference2 = componentConstraint3->CreateConstraintReference(comp2, face2, false, false, false);   
  42.          constraintReference2->SetFixHint(true);
  43. componentNetwork1->Solve();   
  44.          componentPositioner3->ClearNetwork();
  45.                  componentPositioner3->DeleteNonPersistentConstraints();   
  46.          NXOpen::Assemblies::Arrangement *nullNXOpen_Assemblies_Arrangement(NULL);
  47.          componentPositioner3->SetPrimaryArrangement(nullNXOpen_Assemblies_Arrangement);   
  48.          componentPositioner3->EndAssemblyConstraints();
复制代码

回复 支持 反对

使用道具 举报

上等兵

Rank: 1

2

主题

12

帖子

100

积分
7#
 楼主| 发表于 2016-6-16 21:03:03 | 只看该作者
UG自在观 发表于 2016-6-16 16:42
对齐之后,试一试用同心约束。看一看是否可以

我创建了3个约束,先对comp1固定,然后让两个圆柱面通过轴对齐约束,最后是两个圆环面接触约束
回复 支持 反对

使用道具 举报

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

本版积分规则

 
 
QQ:1359218528
工作时间:
9:00-17:00
 
微信公众号
手机APP
机械社区
微信小程序

手机版|UG爱好者论坛 ( 京ICP备10217105号-2 )    论坛管理员QQ:1359218528

本站信息均由会员发表,不代表本网站立场,如侵犯了您的权利请联系管理员,邮箱:1359218528@qq.com  

Powered by UG爱好者 X3.2  © 2001-2014 Comsenz Inc. GMT+8, 2024-5-1 18:04

返回顶部