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-国产软件践行者

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

  [复制链接]

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

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

小新 楼主

2014-4-7 19:26:05

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

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

x
本帖最后由 小新 于 2014-4-7 19:51 编辑 - X5 k( \; [) M/ e

4 l, F# c8 R$ b) I我做自动化装配,通过代码定义好其约束关系。但是在具体实现过程中,不知道如何找到定义约束关系的某个实体上的特定的面。如图我想将图上箭头所指的面用于建立约束,但是不知道在代码中如何找到这个面。此外我是想用NX Open C++实现,而不是用UFun函数实现。 123.png
- P; n/ t0 I5 b
上海点团信息科技有限公司,承接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 , 看看  Z$ l3 @5 E9 }- C* d

/ \' u; e1 }2 C要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数什么的 最终确定是你选择的那个面7 W& g8 U# w' Z5 U: E- l
- ~$ A' s7 A' b1 Z
或者直接找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:204 O' Y; s) N3 V3 y4 r- d
录制JA , 看看
4 g6 v: B6 b: d: q# f" \8 {$ u9 A! V, v
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数 ...
4 T' _7 t4 T& A7 d0 M8 c- M2 V
我录制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
# D( A9 u# A; E# |/ |我录制JA后,出现代码Face *face1(dynamic_cast(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}"))) ...
$ ?/ h. `+ l5 `# M( c
对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数/ j, M' @& H9 L4 E* A
. d2 `% R% K) z% t: A9 ^" t
NXOpen C++ 没有类似的这个功能 6 ^" |# ]1 V( _: I2 `. z7 [! D
6 R  [2 X5 X& B
开发时候基本是 ufun + NXopen C++
5 `) t$ j/ Q: a& n# d3 A单独的 NXOpen C++ 你可能实现所有的要求
! g# }; U0 H9 T" m3 W' u
2 t$ l. P, E; S8 d' t* C8 ^: @两个要结合用
上海点团信息科技有限公司,承接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
  D; l& F, O: r1 M- d对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数
3 i" u; J/ R8 j
, I' b( e- o5 P; V( G. f+ {NXOpen C++ 没有类似的这个功能
8 ~* J) i0 D6 ?1 b
123.png 123454.png 你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the object。我就想这个custom name 是否可能是我在UG给那个特定面命名的那个名字。如果用这个方法返回的custom name 和命名的名字相比较,如果是一致,那么我就从把这个面给保存下来,就算找到了。我按照这个思路用下面的代码验证这个思路。/ D# T  y! E( l* _! r- K6 W2 ~
  1. ' N* }" F3 {& Y1 r, K0 M6 q, q
  2. <P>Session *theSession = Session::GetSession();5 j/ q1 a4 K; W& g& s
  3. Part *workPart(theSession->Parts()->Work());
    9 j$ e3 B' Y# S
  4. Part *displayPart(theSession->Parts()->Display());" A* o% u5 K* A! w" F
  5. BodyCollection *bc=workPart->Bodies();
    ' |7 c7 ]2 _* S
  6. BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body
    3 a! ]  Z) D! a8 n* x; {
  7. Body *body = (*it);4 R  S7 Z0 O* C! l/ \, L/ Z
  8. std::vector<Face*> faces = body->GetFaces();
    9 f) F, w9 U; Q
  9. for(unsigned int j=0;j<faces.size();j++)
    ; O9 X. r! W& ^% t" m
  10. {9 t$ j+ P! _8 I+ O

  11. . A" @  G0 {. s3 L/ W$ o# h
  12.       if ((faces[j]->Name().getText())=="FACE1")
    ! D% B8 m2 e7 c- V
  13.         {</P>; s4 m8 {$ F# X
  14. <P>             UI *faceui = UI::GetUI();
    9 T7 E" K1 q. A6 x* U$ [
  15.             faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");/ q: r; _+ L& M3 ^' l# g
  16.         }0 E7 J2 o; E7 F2 x) T, Y8 O
  17.     else
    9 l2 w5 X* E  G$ Y0 ?- u. h
  18.        {9 \" U: ?1 |$ d) d
  19.            UI *faceui = UI::GetUI();' X9 j' Y3 P$ g5 i
  20.            faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    ' A: W' X: d* m9 h1 _1 B3 J9 X, F
  21.        }
    . [( a9 ]5 e; r; b9 h* c
  22. }</P>
复制代码
2 J3 l! ^/ P6 F/ r( T: m
上述代码能够通过编译。在实际运行中出现了上面图所示的两种结果。从图中看到程序判断,(faces[j]->Name().getText())=="FACE1"结果都为假,所以弹出了6个(6个面)“未找到面”的对话框,由于我估计将对话框内容为Name()返回的custom name。但是有一个对话框中内容就是“FACE1”,其余都是空白。既然有一个是“FACE1”为什么不显示“已经找到面”对话框咧?求指教6 A, g( M9 P0 H9 k5 h! ~

5 @$ W/ [1 y/ n3 D! o) q
) A: O# `: V( i3 |
) `  A( v! p% K: `
" e% t4 R$ G9 K, 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 22:22:41

小新 7#

2014-4-8 22:22:41

本帖最后由 小新 于 2014-4-9 10:35 编辑 ( Q) [1 D0 h# v4 K4 o& Y
小新 发表于 2014-4-8 21:55
, i# `4 I. _% |$ t你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the objec ...

/ Z# {; P4 d4 D# w+ W 1414.png 问题已经解决,按照上述思路是可行的。子所以出现上述问题是因为我在if语句判断时候没有处理好,应该用下面代码;
  1. + z" V8 Q( a- T9 v6 u' \7 G0 ?
  2. 通过上述代码确实找到了特定的面了。7 z1 A0 M+ X# {, r( [# m" o# z9 d
  3. [code]Session *theSession = Session::GetSession();
    ; T4 _" u+ s3 _+ K/ ^
  4.         Part *workPart(theSession->Parts()->Work());/ P# g* W9 F; F( S+ K
  5.         Part *displayPart(theSession->Parts()->Display());
    , ^" B2 _) a9 G5 W# m( w. ?

  6. & r4 Q! ?# c& d9 B1 w' s- {
  7.         BodyCollection *bc=workPart->Bodies();* \9 J3 O2 v! `) G
  8.         BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body  Y+ p8 @. S& G* `
  9.         Body *body = (*it);
    , d& Z; X* j: G" A6 j" i7 e( e
  10.         std::vector<Face*> faces = body->GetFaces();
    2 L. U# |. n0 ~! u3 l; B( D5 i( }
  11.         for(unsigned int j=0;j<faces.size();j++)
    0 @( Z8 v# m5 A! L
  12.         {4 l' t( N- M2 K. m8 v
  13.                 const char *c1="FACE1";6 O  U( I1 y1 @; R' d
  14.                 const char *c2=faces[j]->Name().GetText();5 u7 X+ v5 f5 ?
  15.                 if (!strcmp(c2,c1))7 m1 z9 W5 g  ~3 Y5 b1 {
  16.                 {
    6 d; \" K, k9 y: B% K3 [! L+ |! U1 q3 @6 p5 @
  17.                         UI *faceui = UI::GetUI();
    8 w4 W" t8 t8 u2 J+ F$ z+ T
  18.                         faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");/ I  j+ J, U- f7 _9 U- N: J
  19.                         + Q( a+ W! `* u3 p- J& p
  20.                 }& Z7 B* D, g0 {) h
  21.                 else. J6 a4 x+ Z% `: p0 z# s
  22.                 {
    5 U, g  X7 B! R5 f; |# A# x9 j
  23.                         UI *faceui = UI::GetUI();
    + z1 u. s! P0 J# t" v! T
  24.                         faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    * ^+ u& n" i5 P& G- a
  25.                        
    & ~- C  p2 z( I/ q7 b* [
  26.                 }9 ]2 c2 |4 c. o9 l- w: L' u8 ^

  27. % c3 H! U" F4 I
  28. 2 d  @8 F3 Q% l+ Q2 v9 v2 f
  29.         }
复制代码

8 _( g' m+ J+ l# d/ x, y9 b! x" z* T# T7 B
9 D6 K( H! V! t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了