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 4400 6

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

小新 楼主

2014-4-7 19:26:05

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

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

x
本帖最后由 小新 于 2014-4-7 19:51 编辑
( h8 J5 ^1 v+ g/ e9 ?; `" p7 ~9 Y5 q) G. ~, o: X
我做自动化装配,通过代码定义好其约束关系。但是在具体实现过程中,不知道如何找到定义约束关系的某个实体上的特定的面。如图我想将图上箭头所指的面用于建立约束,但是不知道在代码中如何找到这个面。此外我是想用NX Open C++实现,而不是用UFun函数实现。 123.png * z7 D; S) R, _, r4 ?# ?, V) l1 J6 Y
上海点团信息科技有限公司,承接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 , 看看/ o9 s& W! f7 y; b' B
: Y) K2 p: u, ^7 @
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数什么的 最终确定是你选择的那个面
9 ?" s: P; A$ B% ]" w! i$ \5 }0 K0 s( [
或者直接找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+ u: e3 i1 u/ I8 d: t
录制JA , 看看; c) |. n: G8 z7 A" n8 R, V
# h4 ]  y! F7 ~5 ?; k
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数 ...
0 z2 S3 z+ E% z( j/ F% j' b* ~
我录制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:213 A8 x$ ?% i& Y  X; O) D
我录制JA后,出现代码Face *face1(dynamic_cast(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}"))) ...
; Z1 ?1 O4 y, W- o: Y. W9 ]; w, y
对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数
9 r6 w2 b0 {  K) \6 v2 \" F
5 R( ]) \1 L$ p. U7 Q& a* o# a& `NXOpen C++ 没有类似的这个功能 % j3 Z+ @9 O6 k/ O; E5 m. Y4 j; D
1 i( r* Y8 R/ Q2 [
开发时候基本是 ufun + NXopen C++
9 x1 Q7 N7 {8 Z; O& K, h# H单独的 NXOpen C++ 你可能实现所有的要求 * v7 }2 c8 x  Y. V) h0 d

" r' j, M# s, Z8 r* q1 x' g两个要结合用
上海点团信息科技有限公司,承接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
9 F: {; Y! T9 \( K* V8 M. |* k% @对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数
  S1 m0 j4 A6 i( G0 p8 Z) j9 o# Q/ g* g) s; ~4 b$ R
NXOpen C++ 没有类似的这个功能
- ?; H  O# _1 Q
123.png 123454.png 你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the object。我就想这个custom name 是否可能是我在UG给那个特定面命名的那个名字。如果用这个方法返回的custom name 和命名的名字相比较,如果是一致,那么我就从把这个面给保存下来,就算找到了。我按照这个思路用下面的代码验证这个思路。
# V/ {; k( r0 `: v" X

  1. 4 F) k2 l0 m4 c' o' X
  2. <P>Session *theSession = Session::GetSession();! a0 p& P( p( m/ p
  3. Part *workPart(theSession->Parts()->Work());
    $ g8 Y) I  B# W( A
  4. Part *displayPart(theSession->Parts()->Display());7 [) }: e: M% f
  5. BodyCollection *bc=workPart->Bodies();
    , J+ H. p9 C7 Y% z
  6. BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body- p: u, S: Z2 L( ]& p* ~" ^7 o
  7. Body *body = (*it);4 V( {$ k. s1 `
  8. std::vector<Face*> faces = body->GetFaces();. Y; D8 q0 C5 Y+ C
  9. for(unsigned int j=0;j<faces.size();j++)
    & s: C- X1 ?' K, c+ Y
  10. {
    1 U: f2 F" p: {+ A( W9 Q
  11. ! P; K% y5 N  {, i- Z. z  Y
  12.       if ((faces[j]->Name().getText())=="FACE1")8 z# q1 K  f; v9 R2 F# {
  13.         {</P>- e& }- l# S: Y9 \+ G9 c# \, G# \
  14. <P>             UI *faceui = UI::GetUI();
    1 y6 J& K/ u1 J% n# N( x7 ^, C
  15.             faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");
    : I$ }/ g! f+ e+ E" J
  16.         }: u: W% l( `- X# T1 d* M
  17.     else
    2 G( w4 Y9 Y% s
  18.        {
    - R# [6 W6 m# p5 v5 v- o. P9 X, Z
  19.            UI *faceui = UI::GetUI();
    3 q7 W1 E6 g8 x
  20.            faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());2 D+ J! \  R& K' Q. E1 |2 E
  21.        }
    7 N! q* v7 k# K
  22. }</P>
复制代码
3 o- h1 r) k5 }
上述代码能够通过编译。在实际运行中出现了上面图所示的两种结果。从图中看到程序判断,(faces[j]->Name().getText())=="FACE1"结果都为假,所以弹出了6个(6个面)“未找到面”的对话框,由于我估计将对话框内容为Name()返回的custom name。但是有一个对话框中内容就是“FACE1”,其余都是空白。既然有一个是“FACE1”为什么不显示“已经找到面”对话框咧?求指教2 X9 n) Y, k2 {" a7 v
7 H2 `$ {2 U+ v; b

- V  U* v5 O3 I# l
; g' q7 V) L9 }$ G5 K* }/ ]' k

/ X$ S- }, q( I7 C
上海点团信息科技有限公司,承接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 编辑
, P4 e6 ?. E- f5 @# c3 i# u
小新 发表于 2014-4-8 21:55- Z: _( l" B0 l" w- ]! k2 e1 A
你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the objec ...
! Y% b) _0 d: W9 u) g' A" r; i4 I# Y1 M
1414.png 问题已经解决,按照上述思路是可行的。子所以出现上述问题是因为我在if语句判断时候没有处理好,应该用下面代码;

  1. ; c, s7 I9 {% a# Z
  2. 通过上述代码确实找到了特定的面了。$ o2 d2 }$ s4 [" c
  3. [code]Session *theSession = Session::GetSession();
    9 _+ A% V- L$ ^1 N& G
  4.         Part *workPart(theSession->Parts()->Work());
    5 Y# ~# e  M) v. h7 H
  5.         Part *displayPart(theSession->Parts()->Display());* N4 L  j; w# |  s* t0 Z
  6. / _  O6 P4 i. l6 l9 K+ I
  7.         BodyCollection *bc=workPart->Bodies();" g5 \9 T( t0 f8 B6 z+ T
  8.         BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body
    " Y8 L( W! s; h' d) `% }
  9.         Body *body = (*it);8 A5 a2 A4 ]3 \/ x4 Q& B$ n
  10.         std::vector<Face*> faces = body->GetFaces();5 T6 _8 H+ ^8 Q- X6 s: n% e" U" |
  11.         for(unsigned int j=0;j<faces.size();j++)0 O& I* |8 I* ?# H8 M: C- B
  12.         {' i3 J, W/ H/ `& [& c* Y
  13.                 const char *c1="FACE1";
    ' ]7 h% D* K- `
  14.                 const char *c2=faces[j]->Name().GetText();
    . s, P8 ?( _6 v% s# {
  15.                 if (!strcmp(c2,c1))
    ' t$ O, {1 V% Y
  16.                 {( L+ M7 M: P. |1 o( k
  17.                         UI *faceui = UI::GetUI();
    - J5 g9 N- ~  j+ d6 w( q
  18.                         faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");
    % v  T7 K' P3 w# a8 x3 }
  19.                         . E4 F0 B# l2 {9 _, j  n
  20.                 }
    , l5 I5 _! i/ @# o. Z" H! J' V
  21.                 else. v. J3 O! |9 D
  22.                 {
    1 J) f( C7 i! W8 m
  23.                         UI *faceui = UI::GetUI();$ @; i- S, s  n) [7 X6 s
  24.                         faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());( y8 e- B, b" M
  25.                        
    # N; W1 W: P) t/ }5 Y
  26.                 }
    . W* N! @+ |( {- r

  27. % Q6 L( U# ~: t
  28. 7 T. o# w- r5 S+ |# F) d5 `% {
  29.         }
复制代码

, o' t# t; Z' K8 ?* M
7 V, `" Z5 y( P3 m4 h+ X. E3 _  X6 g5 _! x. b6 g% G( ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了