PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

[已解决] 如何找到实体的某个特定的面用于自动装配?

  [复制链接]

2014-4-8 22:22:41 4394 6

小新 发表于 2014-4-7 19:26:05 |阅读模式

小新 楼主

2014-4-7 19:26:05

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

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

x
本帖最后由 小新 于 2014-4-7 19:51 编辑
4 O) C& x2 u% \( o: P9 e
/ |( Q& d1 t' Y9 ]; r! c我做自动化装配,通过代码定义好其约束关系。但是在具体实现过程中,不知道如何找到定义约束关系的某个实体上的特定的面。如图我想将图上箭头所指的面用于建立约束,但是不知道在代码中如何找到这个面。此外我是想用NX Open C++实现,而不是用UFun函数实现。 123.png # g/ g- i4 v2 A$ C/ L& S' M; F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复6

admin 发表于 2014-4-8 11:20:06

admin 沙发

2014-4-8 11:20:06

录制JA , 看看" ~4 r; A; B: d& s* C
1 t# ?1 W) M9 p$ X. G/ Y: A
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数什么的 最终确定是你选择的那个面$ p$ f8 T7 m4 H2 z, ]
8 r4 D/ `- v. y  O3 q% P2 ~- t
或者直接找tag
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

小新 发表于 2014-4-8 15:21:21

小新 板凳

2014-4-8 15:21:21

admin 发表于 2014-4-8 11:20  }$ _. Q( V% A6 S6 T# I/ O* \
录制JA , 看看, [2 e( f$ l) o2 |! N
; I% N" H  H5 G6 L& q; |
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数 ...

' J4 y2 o+ U/ d2 Y我录制JA后,出现代码Face *face1(dynamic_cast<Face *>(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}")));,如何直接用这个代码,确实可行。但是关键是,我总不可能,每要查找一个面就录制一个JA吧。我见到用UFun做的话,直接在Ug里,给这个面命名下,然后通过函数UF_OBJ_cylce_by_name,第一参数就是刚刚命名的名字。但是我想问问在NX Open C++是否有类似的做法
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2014-4-8 19:59:47

admin 地板

2014-4-8 19:59:47

小新 发表于 2014-4-8 07:21
' Q; h7 u! U5 g' V! a: l* `, C& ~我录制JA后,出现代码Face *face1(dynamic_cast(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}"))) ...
0 L. Z. c5 W  d! f
对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数6 \4 j( p/ i5 \1 T( i

5 d  ^/ Z& B7 B$ o( m' J* M1 jNXOpen C++ 没有类似的这个功能 % k% V/ Y( `7 Q
9 c2 ?+ g6 u/ x) _: e/ P
开发时候基本是 ufun + NXopen C++
, |: F' F( F$ h单独的 NXOpen C++ 你可能实现所有的要求 3 n& ]1 t4 J! X% k2 U' Z
3 w( J- H4 _% w/ F  U  [2 p  s
两个要结合用
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

璀璨の樱之雨 发表于 2014-4-8 21:01:01

璀璨の樱之雨 5#

2014-4-8 21:01:01

楼主说的有道理,顶一个
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

小新 发表于 2014-4-8 21:55:15

小新 6#

2014-4-8 21:55:15

admin 发表于 2014-4-8 19:59
3 C8 N5 Z, M7 L4 [- }5 G( e对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数# `6 B3 h- F+ y# ]1 S3 `0 ]2 V7 K% k

; n: A! c2 W* ~8 f3 c6 C+ aNXOpen C++ 没有类似的这个功能
3 C0 z4 @, h9 R2 b" d9 n" z! U
123.png 123454.png 你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the object。我就想这个custom name 是否可能是我在UG给那个特定面命名的那个名字。如果用这个方法返回的custom name 和命名的名字相比较,如果是一致,那么我就从把这个面给保存下来,就算找到了。我按照这个思路用下面的代码验证这个思路。; d1 m: s5 Q) H1 x5 ]7 I
  1.   r3 z# u" a4 \' f1 W: u5 G" t
  2. <P>Session *theSession = Session::GetSession();
    % n& p+ U5 p" P3 p6 D% q
  3. Part *workPart(theSession->Parts()->Work());$ {9 ~) M4 D; P5 r' [! }
  4. Part *displayPart(theSession->Parts()->Display());, ?" t# O/ P& ~4 U# s0 e
  5. BodyCollection *bc=workPart->Bodies();; h# X8 {! O3 m6 l7 M2 R& _
  6. BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body# X  {6 B2 A7 h8 @$ N5 f
  7. Body *body = (*it);
    ; b0 ]2 M; P- h; U. w$ F
  8. std::vector<Face*> faces = body->GetFaces();! Y8 W! T0 e: D# Z2 A
  9. for(unsigned int j=0;j<faces.size();j++)" q6 T! ~4 H6 D0 @9 h
  10. {* Y- e1 r% j7 G. ~: _) E) z. E

  11. / h! C( W5 d  j" ?
  12.       if ((faces[j]->Name().getText())=="FACE1"); @$ ?& w# X5 P3 _9 R% t: v  ^
  13.         {</P>
    . [# s4 r$ |" W: @
  14. <P>             UI *faceui = UI::GetUI();6 G3 q9 G$ b5 _+ J  D
  15.             faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");( _$ C7 A: q: k
  16.         }! m- r6 z2 p6 o4 ?2 M3 t( o
  17.     else
    ' s( F  G' y' W1 X. h4 a
  18.        {! M9 B# c+ P) c( y
  19.            UI *faceui = UI::GetUI();
    ! ~9 o$ n. l$ x' I/ ^; A! [, i) O
  20.            faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    : j+ ?# O1 B! |3 ?8 @; }3 J' T% i
  21.        }
    * R4 H" A4 ~, F6 I8 N/ }
  22. }</P>
复制代码
9 ?! S) D2 x$ n( H! U" B; l8 n( T. r
上述代码能够通过编译。在实际运行中出现了上面图所示的两种结果。从图中看到程序判断,(faces[j]->Name().getText())=="FACE1"结果都为假,所以弹出了6个(6个面)“未找到面”的对话框,由于我估计将对话框内容为Name()返回的custom name。但是有一个对话框中内容就是“FACE1”,其余都是空白。既然有一个是“FACE1”为什么不显示“已经找到面”对话框咧?求指教
0 F$ q1 E5 K1 t, `+ c+ V$ s4 }: B8 {; ?% D" ^9 o+ w2 b

( L/ M3 U8 o' R$ M/ D2 m

/ C+ s6 D$ q6 E, R

: T4 D( x& ~, _2 S4 H! |
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

小新 发表于 2014-4-8 22:22:41

小新 7#

2014-4-8 22:22:41

本帖最后由 小新 于 2014-4-9 10:35 编辑 9 q. T+ Z, @" c$ L2 o
小新 发表于 2014-4-8 21:55! P% ~& ~. r, y/ G3 M- r
你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the objec ...
& N! Q% ?+ C4 ]8 G8 C3 m. w
1414.png 问题已经解决,按照上述思路是可行的。子所以出现上述问题是因为我在if语句判断时候没有处理好,应该用下面代码;

  1. ( b" p- G, e$ [; O+ F7 D
  2. 通过上述代码确实找到了特定的面了。+ S  A* d  H$ [0 M* H  x  {6 R
  3. [code]Session *theSession = Session::GetSession();- W+ ^4 @0 U6 x, y8 R3 c5 f
  4.         Part *workPart(theSession->Parts()->Work());
    ' v3 I: |( N7 R
  5.         Part *displayPart(theSession->Parts()->Display());3 W& ?: c" i$ r. u1 \

  6. ( z2 K1 V7 Y$ _" }6 V0 M: b9 H8 s
  7.         BodyCollection *bc=workPart->Bodies();6 u) t) p0 @8 G9 x. f* x! o
  8.         BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body
    0 o0 H4 c% e1 Y/ {' v/ p  N
  9.         Body *body = (*it);7 P7 d, X- B6 V7 l3 S* U" y4 `& W
  10.         std::vector<Face*> faces = body->GetFaces();
      R7 M& e: i1 R
  11.         for(unsigned int j=0;j<faces.size();j++)6 [. t4 K/ _, m" u
  12.         {" h4 D6 \: c8 N
  13.                 const char *c1="FACE1";1 p4 @7 j/ ^4 P- C$ M
  14.                 const char *c2=faces[j]->Name().GetText();
    " {9 Q3 c" F# G* [
  15.                 if (!strcmp(c2,c1))
    $ m8 u7 \% d4 \5 }
  16.                 {
    / y& v2 @* w$ K' U0 ~+ B
  17.                         UI *faceui = UI::GetUI();9 z6 C8 |: H- @
  18.                         faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");
    - j" L* N  d* E0 s1 X7 b2 \' O3 G3 a
  19.                         1 l# ?1 S7 k# i7 ]
  20.                 }
    ' @: h# ~5 L2 U/ Z
  21.                 else
    + M: s2 }" U* i- x* F! ]- p) e& D, u
  22.                 {+ o  s" j1 T% T" e" X7 x6 {
  23.                         UI *faceui = UI::GetUI();
    9 L! Y* |, H. Q, ^" Z: T
  24.                         faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    % r/ e$ q& R8 z$ ^
  25.                        
    9 m6 v9 m$ i5 d; {  r  h
  26.                 }
    ( _5 ?& D( c, B, i
  27.   [. I/ o* m& m  R, n. @1 x
  28. & T- `6 I" N$ W/ w  q
  29.         }
复制代码
$ ]& E7 w6 M/ v" G' \5 Y
/ k8 |  w# [; u+ W
3 k+ i; E  N2 t: g+ z& h- b  j$ E/ L
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了