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

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

[复制链接]

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

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

小新 楼主

2014-5-8 15:55:39

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

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

x
本帖最后由 小新 于 2014-5-8 16:10 编辑 , B) v/ X. d* O6 r9 @2 P& H' R

' r, g; g7 U# r1 w, x- {9 ~) W6 @+ y录制装配过程的JA,经过对录制的代码进行简化删减后,如下,经编译后能够实现自动化装配。
  1. Session *theSession = Session::GetSession();! z6 |5 p" I1 k# w. e
  2.     Part *workPart(theSession->Parts()->Work());
    5 ~/ T+ O  t# }8 P/ L- R
  3.     Part *displayPart(theSession->Parts()->Display());, B8 O% g4 m! ^" O4 H$ U3 t% u3 K
  4.             9 O1 g" W' z* g* N- G
  5.     BasePart *basePart1;
    5 o  ~2 d8 f+ G# s+ [
  6.     PartLoadStatus *partLoadStatus1;0 U  k1 k1 W/ K
  7.     basePart1 = theSession->Parts()->OpenBase("D:\\sy\\model4.prt", &partLoadStatus1);
    ( Z: J0 r! \$ Q. G+ ~% r5 {
  8.     delete partLoadStatus1;
    6 f1 }) t, O8 s6 t/ ^9 z0 C
  9.    
    7 G; V+ ?3 q2 f  Q% L
  10.     Point3d basePoint1(0.0, 0.0, 0.0);* Q6 f2 V  i. {$ g- e8 }
  11.     Matrix3x3 orientation1;
    " \" g, ?& b/ W
  12.     orientation1.Xx = 1.0;    orientation1.Xy = 0.0;    orientation1.Xz = 0.0;
    * I6 g6 E/ P8 v0 F
  13.     orientation1.Yx = 0.0;    orientation1.Yy = 1.0;    orientation1.Yz = 0.0;* d- B7 v# y# [2 g2 F+ L6 a1 ^! c
  14.     orientation1.Zx = 0.0;    orientation1.Zy = 0.0;    orientation1.Zz = 1.0;9 O' I8 @9 Y; b% r
  15.     PartLoadStatus *partLoadStatus2;
    3 W1 y) {. b% P8 q* A+ _3 k
  16.     Assemblies::Component *component1;
    3 T" @4 R7 H: i: z: C8 f
  17.     component1 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model4.prt", "MODEL", "MODEL4", basePoint1, orientation1, -1, &partLoadStatus2, true);//添加组件
    " K, D9 h- s! q4 N
  18.    delete partLoadStatus2;  
    1 k3 ~2 y+ }$ }- I: o% R/ [6 m
  19.    
    9 ~* V4 Y0 C: ]5 m) d- U
  20.     BasePart *basePart2;
    6 W% d3 c6 [% z5 {# x
  21.     PartLoadStatus *partLoadStatus3;
    & B1 ~: Y0 y1 g5 _& P5 ?
  22.     basePart2 = theSession->Parts()->OpenBase("D:\\sy\\model5.prt", &partLoadStatus3);   
    # a" u! b! C% i" a
  23.     delete partLoadStatus3;    7 o1 d; V: J' M( Z$ i8 p
  24.    
    8 {1 I8 X/ b# C7 j" M/ p( f
  25.     Point3d basePoint2(0.0, 0.0, 0.0);4 }" g# a4 ~3 Y  k, y8 W: z) I
  26.     Matrix3x3 orientation2;7 ~9 t; ~! o1 R4 k
  27.     orientation2.Xx = 1.0;    orientation2.Xy = 0.0;    orientation2.Xz = 0.0;
    $ x4 C1 Q$ x0 q; _# E1 d
  28.     orientation2.Yx = 0.0;    orientation2.Yy = 1.0;    orientation2.Yz = 0.0;
    . L' u7 ?, ]) S0 J1 ?& e7 x. G0 B
  29.     orientation2.Zx = 0.0;    orientation2.Zy = 0.0;    orientation2.Zz = 1.0;
    . _+ g6 Z5 `1 U; q: [
  30.     PartLoadStatus *partLoadStatus4;
    $ b1 c" N4 s9 E* t5 m; O
  31.     Assemblies::Component *component2;
    " Z" `& F7 i' e% M0 G4 T# T
  32.     component2 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model5.prt", "MODEL", "MODEL5", basePoint2, orientation2, -1, &partLoadStatus4, true);//添加组件4 g% _, E. E2 D# ^5 G& d
  33.    delete partLoadStatus4;  . k) z# E* E( W0 W8 K
  34.     5 Q& i# v' H8 M% N
  35.     Positioning::ComponentPositioner *componentPositioner1;  U2 P7 k. t1 O
  36.     componentPositioner1 = workPart->ComponentAssembly()->Positioner();     : \0 j7 b/ ^6 \- l
  37.     componentPositioner1->BeginAssemblyConstraints();      
    2 |+ G' e7 X# t% l" z
  38.     . e( o6 l, n3 D. Q9 c
  39.     Positioning::Network *network1;
    4 k- C, ]. D5 m: s
  40.     network1 = componentPositioner1->EstablishNetwork();    # @4 K3 L0 z8 J- C! H) o
  41.     Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));3 ~* {  M. m  _/ k+ b) u0 s( T
  42.     componentNetwork1->SetMoveObjectsState(true);              * r5 N2 V4 q0 [' A6 j4 Y% n
  43.    
    ! z4 `! W/ R$ V$ |1 |: @5 }+ y
  44.     Positioning::Constraint *constraint1;+ R3 J: ^# X* l' L
  45.     constraint1 = componentPositioner1->CreateConstraint(true);* Q! T' D1 [7 j4 ~) E
  46.    
    9 ^$ K8 S# E& i! P" B. V# T, Q
  47.     Positioning::ComponenTConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));7 P5 I/ o4 S$ L; W8 k
  48.     componentConstraint1->SetConstraintAlignment(Positioning::Constraint::AlignmentContraAlign);   
    9 F/ r& F# S( m2 s
  49.     componentConstraint1->SetConstraintType(Positioning::Constraint::TypeTouch);3 D( F: v6 C2 P% X* R
  50.    
    7 S6 s6 z1 d) o( g4 \
  51.     Face *face1(dynamic_cast<Face *>(component2->FindObject("PROTO#.Features|BLOCK(1)|FACE 6 {(500,25,25) BLOCK(1)}")));        0 M  `1 M' j! i
  52.     Positioning::ConstraintReference *constraintReference1;
复制代码
但是出现了一个问题,在上述代码中,进行装配的面是通过FindObject来找到的,不是我想要的那个面,而且FindObject函数参数是一个JA标识符,我无法给某个面定义JA标示符。如果我在建立模型时,我给某个面命名为FACE1。那么我如何找到我想要的面FACE1,然后用于代码0 S0 ]7 o; U7 B. i) L/ s' Z$ n
  1. constraintReference1 = componentConstraint1->CreateConstraintReference(component2, face1, false, false, false);
复制代码
其中上述代码中第二参数类型是NXObject *,也无法通过Ufun函数的UF_OBJ_cycle_by_name找到,因为该函数找到是FACE1面的tag,返回的类型不是NXObject *。9 K3 B/ ?4 R6 `) W9 Z- s5 B2 O
问题:
& ^, {. h* L1 }1)C++中是否有某个方法通过某个对象的tag返回其NXObject *类型$ ]0 n$ e0 C! Q4 V. U( ?; x3 l4 K
2)C++是否有某个类中的方法可以找到occurrence中的面(CreateConstraintReference需要的是occurrence的对象),而且返回的是NXObject *类型对象,可以直接用于CreateConstraintReference()方法。
2 q/ ^+ g5 C2 w% F2 g& m# r+ H
! z, R2 Q# V) J/ T7 `' w9 `
上海点团信息科技有限公司,承接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
9 f) I2 ^8 C8 E) A' P5 T9 i% C% h( A2 U
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了