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

[已解决] NX Open C++自动化装配约束求解正确但是显示不正确

  [复制链接]

2014-5-6 20:11:05 4450 2

小新 发表于 2014-4-28 11:53:40 |阅读模式

小新 楼主

2014-4-28 11:53:40

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

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

x
QQ截图20140428114628.png
* ?' `: }+ q+ x' \! R# V7 Y1 i这个是两个正方体进行装配。有三个约束条件,分别是三个面对齐。但是加载DLL后,RT所示,对其约束信息框中约束求解正确,没有出错。所对齐的面也和代码中设定的一致。但是实际窗口中两个面却没有对齐啊。其余两个约束也是同样状况。& o, e* q1 p0 m# \. Z1 Y8 _) c
主要代码:2 L- `+ m3 J6 r
  1. //Face *face1(dynamic_cast<Face *>(component2->FindObject("PROTO#.Features|BLOCK(1)|FACE 2 {(250,0,50) BLOCK(1)}")));
    3 a& d, X, j9 `* H2 o* L
  2.         Face *face1=findface(component2,"FACE4");
      R$ I, r& x/ S- e1 g, J
  3.     Positioning::ConstraintReference *constraintReference1;
      A7 |# x  p5 G7 k
  4.     constraintReference1 = componenTConstraint1->CreateConstraintReference(component2, face1, false, false, false);$ q. F( A! z- |7 s
  5.     ) u8 ]* m4 P1 R4 x4 E7 ~
  6.     Point3d helpPoint1(151.841109777454, 1.38777878078145e-014, 70.5813805572551);
    ' q* m  g6 |$ }7 S# @3 t
  7.     constraintReference1->SetHelpPoint(helpPoint1);9 N! k# F. C3 w
  8.    
    : r, @% U2 }+ K7 o6 E% I
  9.     //Face *face2(dynamic_cast<Face *>(component1->FindObject("PROTO#.Features|BLOCK(1)|FACE 2 {(50,0,50) BLOCK(1)}")));' P+ M7 b. z* y, H1 v4 N. f0 N/ ]
  10.         Face *face2=findface(component1,"FACE1");
    $ q' r! x, L- X% D7 K3 E
  11.     Positioning::ConstraintReference *constraintReference2;5 n# ]  P  d: b6 {9 s) E
  12.     constraintReference2 = componentConstraint1->CreateConstraintReference(component1, face2, false, false, false);
复制代码
上面被注释的两行是通过JA录制产生的。我没用用的自己写的findface函数,代码如下:# {) g: e4 ?9 v. ?; U$ e
  1. Face * findface(Assemblies::Component *component,const char *c)
    # Q0 ?) ^& U3 f6 }( V
  2. {
    - U) A7 j5 b# I2 h, {2 K
  3.         Part * component_part=(dynamic_cast<Part *>(component->Prototype()));
    " V2 `2 T/ G4 h- z% F  h) D' p
  4.         BodyCollection *bc=component_part->Bodies();# q- Z: O0 p. D
  5.         Face *face;
    7 Y2 {! A* N8 y# G; @4 b' D, [' W2 Y
  6.                   l$ v) A1 T) }% z; }8 i
  7.         for(BodyCollection::iterator it = bc->begin();it!=bc->end();it++)+ G9 N: V3 S+ j0 s9 V4 y$ O# ?
  8.         {
    1 k5 J# V& m+ t  z( h
  9.                 Body *body = (*it);
    - O" j8 U. G$ M( @4 b
  10.                 std::vector<Face*> faces = body->GetFaces();! P5 m, x, n4 \0 r
  11.                 unsigned int k=faces.size();
    . o, w3 t' h% s! A1 M5 s! W$ j
  12.                 for(unsigned int j=0;j<faces.size();j++)& a7 j5 h" |( ]6 [
  13.                 {
    8 ^8 D; H1 ^4 |
  14.                         const char *c1=faces[j]->Name().GetText();       
    # H  s; y) L' K0 s1 q7 j
  15.                         if (!strcmp(c,c1))
    0 p% O& k4 @4 @" k% U
  16.                                 {
    8 R% E- j! `8 g* c! w1 Y) B/ p/ i
  17.                                         face=faces[j];! f' B' `  |/ l2 Y2 |. r+ m
  18.                                         return(face);" b0 |4 O; S3 h& J7 B0 j
  19.                                 }
    0 {6 n  |- g! b7 S& j
  20.                 }
    / b0 O( U% C3 `
  21.         }1 I2 K$ `6 A. n9 e
  22.         1 _4 @! ~8 H- K1 M( c
  23. }
复制代码
- `& [9 k& D. z4 |/ a

$ k7 E9 F: H* z2 g: d/ V5 I) l, Q2 D( v5 r  P' G) K/ f' V$ g
7 _; B( T( d2 e' K
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复2

admin 发表于 2014-4-28 12:51:25

admin 沙发

2014-4-28 12:51:25

你找到的面是 部件原型的面   ]- g2 k# f, `4 y/ l
8 m# W! C5 u7 H2 P, R( I( m" o4 Z/ Z. G
装配里面需要的面是 occurrence实例对象的面 , 所以结算结果不对8 n# _" T& o; X

- x. l1 m" h* O' _& A( P这个地方使用 ufun的  
$ B( i- [: n; Y) z; K9 @5 }8 f4 p- m* _$ c
$ `, A" X, b& o- bUF_OBJ_cycle_by_name    去找 就可以了
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

小新 发表于 2014-5-6 20:11:05

小新 板凳

2014-5-6 20:11:05

admin 发表于 2014-4-28 12:51+ D1 w/ ^" _$ P! ]
你找到的面是 部件原型的面 8 t3 S: R& `; v" o  v! \2 o7 L4 G0 R9 v
! z# P. A- d2 r7 I
装配里面需要的面是 occurrence实例对象的面 , 所以结算结果不对
4 h! F, t1 w% U' P+ K! k' }
但是CreateConstraintReference()方法中第二个参数没有要求用的是occurrenc的面啊?在NX C++中好像也没有关于occurrence和instancen的相关类
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了