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

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

[复制链接]

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

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

小新 楼主

2014-5-8 15:55:39

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

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

x
本帖最后由 小新 于 2014-5-8 16:10 编辑 2 E/ N& I' E  \8 Y! L
$ e2 C3 H/ y) }
录制装配过程的JA,经过对录制的代码进行简化删减后,如下,经编译后能够实现自动化装配。
  1. Session *theSession = Session::GetSession();
    6 k& F( K" g0 H5 Z. c! m# p
  2.     Part *workPart(theSession->Parts()->Work());( P4 @: T( W% B' {
  3.     Part *displayPart(theSession->Parts()->Display());
    , d  @4 d1 q7 v2 A( t% `+ J6 v
  4.             ' m& `7 c, A0 a4 e( a& {! e. K
  5.     BasePart *basePart1;7 d# b2 }8 h. y
  6.     PartLoadStatus *partLoadStatus1;6 p+ z/ y7 L, i
  7.     basePart1 = theSession->Parts()->OpenBase("D:\\sy\\model4.prt", &partLoadStatus1);: F3 z& B7 h$ A3 [) o6 P
  8.     delete partLoadStatus1;
    / Q9 o, x* ]% J* ^/ S0 S
  9.    
    6 g( s, e" \3 ~( R! E0 p  l7 G1 R. m
  10.     Point3d basePoint1(0.0, 0.0, 0.0);
    ' S1 T7 p/ r. @6 x: A3 C
  11.     Matrix3x3 orientation1;9 K  W0 F, u1 Z" A% m  R5 S& ^
  12.     orientation1.Xx = 1.0;    orientation1.Xy = 0.0;    orientation1.Xz = 0.0;
    2 n) B# ]: W7 y: M; m9 b0 _
  13.     orientation1.Yx = 0.0;    orientation1.Yy = 1.0;    orientation1.Yz = 0.0;
    ! e% P% Z, b9 @
  14.     orientation1.Zx = 0.0;    orientation1.Zy = 0.0;    orientation1.Zz = 1.0;
    3 e5 ~; X* v3 Y+ Z! [$ n  C
  15.     PartLoadStatus *partLoadStatus2;
    , x- d3 E! C$ {5 n3 n
  16.     Assemblies::Component *component1;
    ! O. ?  Y  B6 d: S/ G. x7 x
  17.     component1 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model4.prt", "MODEL", "MODEL4", basePoint1, orientation1, -1, &partLoadStatus2, true);//添加组件
    9 W0 z3 N6 c/ B  u, g( Q6 _. r: I6 `
  18.    delete partLoadStatus2;  3 d0 z; `5 _4 h. h/ s  J
  19.     6 b) Y4 x/ }" [. b# z4 e5 G$ m7 A
  20.     BasePart *basePart2;
    # B1 E: f! }' q- ?. I3 \% U
  21.     PartLoadStatus *partLoadStatus3;0 k0 n& Q8 y, s# n. o9 W5 O# |
  22.     basePart2 = theSession->Parts()->OpenBase("D:\\sy\\model5.prt", &partLoadStatus3);    $ \: B' ~9 d7 q
  23.     delete partLoadStatus3;    5 L! X: k" v# }$ R* m5 w/ N
  24.     ! F$ z: s% m) ]- z" j. P
  25.     Point3d basePoint2(0.0, 0.0, 0.0);7 D& u* I% |! y5 O: ]: ~
  26.     Matrix3x3 orientation2;
    & ]4 c6 `: @" G+ k
  27.     orientation2.Xx = 1.0;    orientation2.Xy = 0.0;    orientation2.Xz = 0.0;! i6 k4 m7 b% m6 m9 z
  28.     orientation2.Yx = 0.0;    orientation2.Yy = 1.0;    orientation2.Yz = 0.0;) f; y0 J. N7 ?; m( u' h! e  Y
  29.     orientation2.Zx = 0.0;    orientation2.Zy = 0.0;    orientation2.Zz = 1.0;1 P. A- y. @0 ~. s4 l! x! V
  30.     PartLoadStatus *partLoadStatus4;" d' ?, T  p  T6 s& Q0 M* Q; }5 E* M
  31.     Assemblies::Component *component2;+ |- C7 `" ~# N( s4 B
  32.     component2 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model5.prt", "MODEL", "MODEL5", basePoint2, orientation2, -1, &partLoadStatus4, true);//添加组件
    3 S* h8 v& x4 H2 `% r1 g
  33.    delete partLoadStatus4;  : U3 N& V! [" D
  34.     ( W7 }: y* E8 V% t. a* W
  35.     Positioning::ComponentPositioner *componentPositioner1;9 L5 L$ }" d- Q& I, ~5 {
  36.     componentPositioner1 = workPart->ComponentAssembly()->Positioner();     ' y! v, E, I8 D, w0 v6 |! S* `# J
  37.     componentPositioner1->BeginAssemblyConstraints();      9 V5 b; B) Z, l6 o" J% d; r
  38.     0 F$ a, V* `, E7 i! [
  39.     Positioning::Network *network1;5 [7 I$ |: ]: a2 b
  40.     network1 = componentPositioner1->EstablishNetwork();    ( M: ]% o8 D. I( x8 H9 y0 I
  41.     Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));( S$ _9 ~+ l( [2 o" a+ ~
  42.     componentNetwork1->SetMoveObjectsState(true);              ' ?4 J) h6 t! [! I: r* _9 k% g2 B
  43.     , e" j  N. l4 n% `# q, `6 d
  44.     Positioning::Constraint *constraint1;& b) B  g2 V: ~" w
  45.     constraint1 = componentPositioner1->CreateConstraint(true);
    & E) v+ _3 }+ r/ n5 K3 q
  46.     , G+ A, Q) A' e! Z* L/ D
  47.     Positioning::ComponenTConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));
    - h& @) s5 P; K* `
  48.     componentConstraint1->SetConstraintAlignment(Positioning::Constraint::AlignmentContraAlign);    0 D! C" h3 m) S% ?( {
  49.     componentConstraint1->SetConstraintType(Positioning::Constraint::TypeTouch);& A0 r. X2 @7 Y
  50.     ' p7 s4 u0 ]. Q3 E/ X- f
  51.     Face *face1(dynamic_cast<Face *>(component2->FindObject("PROTO#.Features|BLOCK(1)|FACE 6 {(500,25,25) BLOCK(1)}")));        9 C! q  {) l/ c" g
  52.     Positioning::ConstraintReference *constraintReference1;
复制代码
但是出现了一个问题,在上述代码中,进行装配的面是通过FindObject来找到的,不是我想要的那个面,而且FindObject函数参数是一个JA标识符,我无法给某个面定义JA标示符。如果我在建立模型时,我给某个面命名为FACE1。那么我如何找到我想要的面FACE1,然后用于代码
. T6 k. G6 P4 F/ \- N6 f% D( s
  1. constraintReference1 = componentConstraint1->CreateConstraintReference(component2, face1, false, false, false);
复制代码
其中上述代码中第二参数类型是NXObject *,也无法通过Ufun函数的UF_OBJ_cycle_by_name找到,因为该函数找到是FACE1面的tag,返回的类型不是NXObject *。4 e! t% z1 }) ~) J5 \+ g6 {
问题:
& d5 a5 c, V2 ~$ M* d0 v1)C++中是否有某个方法通过某个对象的tag返回其NXObject *类型
  I* P- \* U8 `, I; v2)C++是否有某个类中的方法可以找到occurrence中的面(CreateConstraintReference需要的是occurrence的对象),而且返回的是NXObject *类型对象,可以直接用于CreateConstraintReference()方法。
7 p9 V6 u' L6 ?) O# S/ T
* e( E( l0 ]  O3 f% ^* H
上海点团信息科技有限公司,承接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" c, S; r( d4 B- D1 S3 f0 ?3 a! H
/ M. t' Q  D  Y% Y9 x
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了