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

[已解决] 如何查找一个部件对应的occurrence的面

[复制链接]

2014-5-9 10:26:29 3389 1

小新 发表于 2014-5-8 15:55:39 |阅读模式

小新 楼主

2014-5-8 15:55:39

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

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

x
本帖最后由 小新 于 2014-5-8 16:10 编辑
- g1 e, Z0 O3 i5 J: ^" `$ }6 A. i( x, x
录制装配过程的JA,经过对录制的代码进行简化删减后,如下,经编译后能够实现自动化装配。
  1. Session *theSession = Session::GetSession();) l* b( b8 u' \! \
  2.     Part *workPart(theSession->Parts()->Work());/ N+ a5 m+ G1 p' `
  3.     Part *displayPart(theSession->Parts()->Display());4 d/ T; r0 i& h; X. i0 c. F3 ~
  4.             
    1 o  c& R( C9 ^3 ~
  5.     BasePart *basePart1;
    ! q2 U0 {6 T( `1 l& {* j
  6.     PartLoadStatus *partLoadStatus1;- r% V) h$ u8 z% U1 T+ q
  7.     basePart1 = theSession->Parts()->OpenBase("D:\\sy\\model4.prt", &partLoadStatus1);" D' d+ d0 `6 d/ K
  8.     delete partLoadStatus1;) s1 i# v$ L8 T3 e
  9.     2 R  J  p& _  u3 ~
  10.     Point3d basePoint1(0.0, 0.0, 0.0);
    ' H! I, Y' H5 F
  11.     Matrix3x3 orientation1;
    4 c9 i8 T+ g  ~/ j) d) _3 S
  12.     orientation1.Xx = 1.0;    orientation1.Xy = 0.0;    orientation1.Xz = 0.0;. f- C9 n4 y- F6 Q
  13.     orientation1.Yx = 0.0;    orientation1.Yy = 1.0;    orientation1.Yz = 0.0;1 n" V; t9 [/ y' B8 {* J: g9 l( C& Y
  14.     orientation1.Zx = 0.0;    orientation1.Zy = 0.0;    orientation1.Zz = 1.0;+ ?2 Z$ [4 j! m1 v8 p) I
  15.     PartLoadStatus *partLoadStatus2;. H, q6 u5 O9 M2 ^+ b8 \! b
  16.     Assemblies::Component *component1;
    ! F; o9 w6 u8 O/ L" k8 d
  17.     component1 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model4.prt", "MODEL", "MODEL4", basePoint1, orientation1, -1, &partLoadStatus2, true);//添加组件
    6 ]- v. B7 [2 k9 O! q4 K5 X
  18.    delete partLoadStatus2;  
    : X* ^+ B7 \! X8 Y5 C. [, A
  19.     % |* i& Z% C# o( v
  20.     BasePart *basePart2;
    1 I, w6 F) C8 b# u, k" U, ?
  21.     PartLoadStatus *partLoadStatus3;
    " h$ k2 u  _, I. h" m  W6 ~6 B+ O
  22.     basePart2 = theSession->Parts()->OpenBase("D:\\sy\\model5.prt", &partLoadStatus3);    - G3 c; |5 o! i" T- [& c" T
  23.     delete partLoadStatus3;   
    4 j: K0 q0 {5 g( w& n% W* D" ]
  24.     5 `! O, n3 q; x( B
  25.     Point3d basePoint2(0.0, 0.0, 0.0);
    $ O8 r. f9 R$ G. l/ E. ?
  26.     Matrix3x3 orientation2;
    9 G; D/ G2 g$ e2 d* [
  27.     orientation2.Xx = 1.0;    orientation2.Xy = 0.0;    orientation2.Xz = 0.0;. Z6 Z! I# `% w) [& C
  28.     orientation2.Yx = 0.0;    orientation2.Yy = 1.0;    orientation2.Yz = 0.0;4 y' J. z3 h2 L7 A8 V, i6 I
  29.     orientation2.Zx = 0.0;    orientation2.Zy = 0.0;    orientation2.Zz = 1.0;
    ! A1 n. u  L' r
  30.     PartLoadStatus *partLoadStatus4;* u( ?$ Q4 @( b& c
  31.     Assemblies::Component *component2;
    % a2 \* v7 Z. V; {) [  t
  32.     component2 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model5.prt", "MODEL", "MODEL5", basePoint2, orientation2, -1, &partLoadStatus4, true);//添加组件. d. u2 o' j2 b- _8 T' }: O( r9 P
  33.    delete partLoadStatus4;  . l9 R7 q9 w1 s5 f2 x
  34.     0 G; `# h; {  k5 e5 d6 U
  35.     Positioning::ComponentPositioner *componentPositioner1;0 M$ T2 Q5 }: `# k+ l& F7 L
  36.     componentPositioner1 = workPart->ComponentAssembly()->Positioner();     % Z; z4 E, ~1 V& E
  37.     componentPositioner1->BeginAssemblyConstraints();      ! \" Q2 e1 q& k1 F( z5 A7 U
  38.     ! `) {7 u; p" J( O, N& C
  39.     Positioning::Network *network1;
    7 R- g; |/ f0 p' R, _) {. W3 [9 N
  40.     network1 = componentPositioner1->EstablishNetwork();   
    # U, O8 x/ P9 b/ g0 \& J; Q
  41.     Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));* l% \! @7 R7 H3 n3 B
  42.     componentNetwork1->SetMoveObjectsState(true);              
    4 e. w8 U0 a5 l$ R4 w! s- F- l
  43.    
    0 B: \1 w, W# T! e1 [, X
  44.     Positioning::Constraint *constraint1;
    ( S# g2 C" \' D" x5 n% q! Y
  45.     constraint1 = componentPositioner1->CreateConstraint(true);5 v1 x4 h: a7 I; K6 x% M
  46.     2 b. {% Z4 f3 N; Z/ ?' W3 p
  47.     Positioning::ComponenTConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));; h& ^0 b8 `! a4 `6 \3 T
  48.     componentConstraint1->SetConstraintAlignment(Positioning::Constraint::AlignmentContraAlign);    * @% q) |: k& |/ T$ i5 X. B
  49.     componentConstraint1->SetConstraintType(Positioning::Constraint::TypeTouch);
    7 }8 t7 g, @8 b3 w% Z
  50.    
    7 ~) ?' [2 r% B2 ~5 D, ?
  51.     Face *face1(dynamic_cast<Face *>(component2->FindObject("PROTO#.Features|BLOCK(1)|FACE 6 {(500,25,25) BLOCK(1)}")));        5 c/ M' U- ?$ r$ d) Y) z0 `& G
  52.     Positioning::ConstraintReference *constraintReference1;
复制代码
但是出现了一个问题,在上述代码中,进行装配的面是通过FindObject来找到的,不是我想要的那个面,而且FindObject函数参数是一个JA标识符,我无法给某个面定义JA标示符。如果我在建立模型时,我给某个面命名为FACE1。那么我如何找到我想要的面FACE1,然后用于代码
% E$ j# h6 Y. Y/ }
  1. constraintReference1 = componentConstraint1->CreateConstraintReference(component2, face1, false, false, false);
复制代码
其中上述代码中第二参数类型是NXObject *,也无法通过Ufun函数的UF_OBJ_cycle_by_name找到,因为该函数找到是FACE1面的tag,返回的类型不是NXObject *。/ m' v. M- t; R# ^9 z- A
问题:
+ U: V3 F$ X3 c- S. F3 F1 G1)C++中是否有某个方法通过某个对象的tag返回其NXObject *类型! j" O1 b* j# u8 J+ Q
2)C++是否有某个类中的方法可以找到occurrence中的面(CreateConstraintReference需要的是occurrence的对象),而且返回的是NXObject *类型对象,可以直接用于CreateConstraintReference()方法。+ W9 T% S6 s* G+ t4 g( g' L
- O& X+ }& K: g: ^
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

admin 发表于 2014-5-9 10:26:29

admin 沙发

2014-5-9 10:26:29

tag 可以通过 NXObjectManager 返回 NXobject
  u6 e/ y' X- J/ X/ L: K8 q7 q8 X! y3 X7 }4 U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了