PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

小新 楼主

2014-5-8 15:55:39

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

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

x
本帖最后由 小新 于 2014-5-8 16:10 编辑 8 j+ P9 _7 E0 b5 i& e

+ \) ~0 C) M8 G! ]$ ~( N4 g- I录制装配过程的JA,经过对录制的代码进行简化删减后,如下,经编译后能够实现自动化装配。
  1. Session *theSession = Session::GetSession();
    - w0 q5 A! M' M6 E
  2.     Part *workPart(theSession->Parts()->Work());
    9 G: F% B4 W( \# n
  3.     Part *displayPart(theSession->Parts()->Display());- u# Y# E; M. w
  4.             
    ! X* s  V* Q: W7 |$ E! v, A- d4 s( z
  5.     BasePart *basePart1;
    & \; K  E; ^& v$ ~
  6.     PartLoadStatus *partLoadStatus1;" Q& ~" U$ x! c2 ^
  7.     basePart1 = theSession->Parts()->OpenBase("D:\\sy\\model4.prt", &partLoadStatus1);
      [$ W' ~# f) o; o7 A$ m
  8.     delete partLoadStatus1;
    ( ]3 Q0 D8 A! b9 w! |  s# M
  9.    
    * V. a# G  S, ?0 \) A0 l
  10.     Point3d basePoint1(0.0, 0.0, 0.0);+ c% S- s; E# `# {! W
  11.     Matrix3x3 orientation1;
    ; a' @' [  D% a4 i
  12.     orientation1.Xx = 1.0;    orientation1.Xy = 0.0;    orientation1.Xz = 0.0;4 T# h6 g! ?& \" m2 B- ~
  13.     orientation1.Yx = 0.0;    orientation1.Yy = 1.0;    orientation1.Yz = 0.0;4 }6 y5 G* b. ?- y3 b/ m
  14.     orientation1.Zx = 0.0;    orientation1.Zy = 0.0;    orientation1.Zz = 1.0;
    2 h* n4 B5 A- h) E- w
  15.     PartLoadStatus *partLoadStatus2;7 W/ ^  L; b$ l- c) H7 B( {
  16.     Assemblies::Component *component1;
      z7 ~  [8 I2 c/ b: C7 S0 P7 F4 ~
  17.     component1 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model4.prt", "MODEL", "MODEL4", basePoint1, orientation1, -1, &partLoadStatus2, true);//添加组件8 o1 h; g8 y" c# y6 X
  18.    delete partLoadStatus2;  ; |3 s) Y: b1 j* f8 ]
  19.    
    ( G2 k. k" ]) [9 ?7 ^  m
  20.     BasePart *basePart2;) e$ p: Z) S( Q' ^
  21.     PartLoadStatus *partLoadStatus3;
    + ]' g+ z; o  v' C
  22.     basePart2 = theSession->Parts()->OpenBase("D:\\sy\\model5.prt", &partLoadStatus3);   
    % O; z7 n2 I% x6 b7 f9 G& H
  23.     delete partLoadStatus3;    3 }5 D( {$ q9 F
  24.    
    7 @) b% v: t( n
  25.     Point3d basePoint2(0.0, 0.0, 0.0);
    . Q2 G0 X) c1 w: N8 p8 D  r
  26.     Matrix3x3 orientation2;6 ]2 f2 x, a. U4 W& ?
  27.     orientation2.Xx = 1.0;    orientation2.Xy = 0.0;    orientation2.Xz = 0.0;
    ' X* @% b9 c4 l* g* z
  28.     orientation2.Yx = 0.0;    orientation2.Yy = 1.0;    orientation2.Yz = 0.0;- U$ l* b; b2 w* D& @
  29.     orientation2.Zx = 0.0;    orientation2.Zy = 0.0;    orientation2.Zz = 1.0;7 y7 W4 T) `4 y
  30.     PartLoadStatus *partLoadStatus4;
    ; `. T5 P& o: G$ ^2 h% S. W% _& y0 }
  31.     Assemblies::Component *component2;& M: e! q* i5 ]
  32.     component2 = workPart->ComponentAssembly()->AddComponent("D:\\sy\\model5.prt", "MODEL", "MODEL5", basePoint2, orientation2, -1, &partLoadStatus4, true);//添加组件: E+ l9 i7 i, x" X  g/ v! d
  33.    delete partLoadStatus4;  4 U) j' c9 t8 C+ E& B# p/ W
  34.     6 f) [$ d3 Q5 C
  35.     Positioning::ComponentPositioner *componentPositioner1;7 s9 n8 K6 t0 v8 Q/ K7 S/ V& j8 c5 G
  36.     componentPositioner1 = workPart->ComponentAssembly()->Positioner();     8 x% p; u( b9 k% u% N
  37.     componentPositioner1->BeginAssemblyConstraints();      , H% F6 u5 ~) T' L& X! `1 ^: O+ Y4 T4 F
  38.     ' ?' z1 P0 i( D4 H! h2 T
  39.     Positioning::Network *network1;
    ) p9 s+ D" U1 ]# U+ W
  40.     network1 = componentPositioner1->EstablishNetwork();    ; X, l* ?% @) T- ?. i2 I# k
  41.     Positioning::ComponentNetwork *componentNetwork1(dynamic_cast<Positioning::ComponentNetwork *>(network1));
    # E0 [$ N! h/ |' d" n
  42.     componentNetwork1->SetMoveObjectsState(true);              " _: U8 I2 I3 t9 p8 E, O3 N4 @
  43.     * ~- U& w3 A" j/ V
  44.     Positioning::Constraint *constraint1;, T- s& r8 @* E; n. w
  45.     constraint1 = componentPositioner1->CreateConstraint(true);
    8 E6 N; [, g. ^  A4 X' m
  46.     6 z/ a/ c/ u' ~2 Q8 `" h
  47.     Positioning::ComponenTConstraint *componentConstraint1(dynamic_cast<Positioning::ComponentConstraint *>(constraint1));
    / P5 v! k5 F+ q: u/ o6 W. v
  48.     componentConstraint1->SetConstraintAlignment(Positioning::Constraint::AlignmentContraAlign);    " }' L' F$ P; ?0 x0 Q2 \2 o6 N
  49.     componentConstraint1->SetConstraintType(Positioning::Constraint::TypeTouch);
    ! }+ A* r( ]5 E+ O, L2 T
  50.    
    9 r' u& d5 u$ J+ ~6 V5 z/ ~
  51.     Face *face1(dynamic_cast<Face *>(component2->FindObject("PROTO#.Features|BLOCK(1)|FACE 6 {(500,25,25) BLOCK(1)}")));        0 d4 Y2 h# c2 f( r) }* O3 h$ T
  52.     Positioning::ConstraintReference *constraintReference1;
复制代码
但是出现了一个问题,在上述代码中,进行装配的面是通过FindObject来找到的,不是我想要的那个面,而且FindObject函数参数是一个JA标识符,我无法给某个面定义JA标示符。如果我在建立模型时,我给某个面命名为FACE1。那么我如何找到我想要的面FACE1,然后用于代码
" N. j& ^) @' \5 _) Y) @( `4 P
  1. constraintReference1 = componentConstraint1->CreateConstraintReference(component2, face1, false, false, false);
复制代码
其中上述代码中第二参数类型是NXObject *,也无法通过Ufun函数的UF_OBJ_cycle_by_name找到,因为该函数找到是FACE1面的tag,返回的类型不是NXObject *。
) V& H4 t8 c' t( G& o  B问题:3 m: y( @; O" b6 p
1)C++中是否有某个方法通过某个对象的tag返回其NXObject *类型$ E1 b1 n* N2 t7 \
2)C++是否有某个类中的方法可以找到occurrence中的面(CreateConstraintReference需要的是occurrence的对象),而且返回的是NXObject *类型对象,可以直接用于CreateConstraintReference()方法。  L/ n* y. H+ c; N. U6 j, `$ x) h

; O% f7 |* s/ O2 Y; _
上海点团信息科技有限公司,承接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# \- k) l& M) y7 L& p
! u& k$ p& T7 b# _
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了