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

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

小新 楼主

2014-4-7 19:26:05

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

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

x
本帖最后由 小新 于 2014-4-7 19:51 编辑 " @" ^, o: P& t8 f

* v. }  l8 {" b. h我做自动化装配,通过代码定义好其约束关系。但是在具体实现过程中,不知道如何找到定义约束关系的某个实体上的特定的面。如图我想将图上箭头所指的面用于建立约束,但是不知道在代码中如何找到这个面。此外我是想用NX Open C++实现,而不是用UFun函数实现。 123.png ! d3 h9 r- k  M& n; 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 , 看看
/ o! Y3 ]+ J2 @7 y1 w# F, w' R% X( [3 w( V# `% B+ i: m
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数什么的 最终确定是你选择的那个面. M/ S! F# A( a; X# [% S' k! c

5 @! M3 m1 F& k& x' \6 E" M或者直接找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
2 E6 H) ?" y. s/ l& k0 H6 n! v4 X录制JA , 看看% E( U0 y# @6 `3 S) e+ ^
9 L* T, h5 B9 {9 M* Q
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数 ...
! q/ v" B6 x$ M
我录制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) c* h; d! i$ L; L
我录制JA后,出现代码Face *face1(dynamic_cast(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}"))) ...
# O0 n' [+ n3 V
对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数$ A: A% Q2 m* T" C1 B8 g

, s, U; n- c* X$ hNXOpen C++ 没有类似的这个功能
2 B' K% z0 i4 k- g
9 c& P- [+ U% K2 w开发时候基本是 ufun + NXopen C++' M/ j, a6 W% b4 r: Q) e% w
单独的 NXOpen C++ 你可能实现所有的要求 * }) W) R9 F* f/ i5 B0 Q2 y

9 v7 N8 S9 a* l, X. R, x8 u: W两个要结合用
上海点团信息科技有限公司,承接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
8 D1 Y3 m  s8 t4 B. f! p% t对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数+ w/ ^# Z( w- i+ ]

* ^, G2 U/ ~4 j0 UNXOpen C++ 没有类似的这个功能
- s/ g8 D/ L5 ?
123.png 123454.png 你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the object。我就想这个custom name 是否可能是我在UG给那个特定面命名的那个名字。如果用这个方法返回的custom name 和命名的名字相比较,如果是一致,那么我就从把这个面给保存下来,就算找到了。我按照这个思路用下面的代码验证这个思路。& \2 k; {/ Q  [1 K% D

  1. , V" w8 ?7 B1 Z. I0 {/ W
  2. <P>Session *theSession = Session::GetSession();2 s" N. }/ d, f; R7 [
  3. Part *workPart(theSession->Parts()->Work());* x4 [( U/ F. ~* v4 e2 g
  4. Part *displayPart(theSession->Parts()->Display());' m& O+ A! m% f6 x" I# i; H/ C+ P
  5. BodyCollection *bc=workPart->Bodies();  w+ ~$ D% P, S5 v0 B+ _
  6. BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body
    # w) B  @" z$ \
  7. Body *body = (*it);9 S. \( M# o6 r4 [% N( B
  8. std::vector<Face*> faces = body->GetFaces();
    ; ~( G: n) D, Z
  9. for(unsigned int j=0;j<faces.size();j++)/ J0 b8 i4 Y; T9 }/ e* I7 J& q
  10. {
    * Z, q- R8 n, F$ v
  11. 0 [# y: N7 L6 _0 d
  12.       if ((faces[j]->Name().getText())=="FACE1")1 ~3 P# @: e- x4 e- o) J/ d3 E
  13.         {</P>
    ; P- [) ?# r+ m) J
  14. <P>             UI *faceui = UI::GetUI();! B% O, N  q0 u. g8 o/ u
  15.             faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");1 t: Y( V- v1 z' R7 C9 [7 \) F3 m8 W
  16.         }
    ) R0 Q  t7 x3 P, z3 W; a
  17.     else
    4 s8 V* a) m2 I
  18.        {
    , ?! n, U4 ~: U! W
  19.            UI *faceui = UI::GetUI();" Z4 t* d' F6 _& k! z
  20.            faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());! Q1 k, ]' a5 b5 J% I
  21.        }
    ( |; N! ^  I* R& N
  22. }</P>
复制代码
7 {8 a. A2 _$ Z3 t+ ?! q/ i' o
上述代码能够通过编译。在实际运行中出现了上面图所示的两种结果。从图中看到程序判断,(faces[j]->Name().getText())=="FACE1"结果都为假,所以弹出了6个(6个面)“未找到面”的对话框,由于我估计将对话框内容为Name()返回的custom name。但是有一个对话框中内容就是“FACE1”,其余都是空白。既然有一个是“FACE1”为什么不显示“已经找到面”对话框咧?求指教+ C: f1 {) I2 E* t" g

' H9 R; S# G% t3 ^; R' w4 C
2 [# Y$ f+ h* v4 ~
) y9 I" `( x0 ^) t2 }, j% R8 G

3 |( k+ q. x- m5 v0 t1 B6 C7 a% D
上海点团信息科技有限公司,承接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 编辑
" L' `% [8 L; \; U5 w
小新 发表于 2014-4-8 21:558 _$ k/ v# b7 [2 F+ L
你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the objec ...

& Y; s& Y+ K! G2 j5 J) G 1414.png 问题已经解决,按照上述思路是可行的。子所以出现上述问题是因为我在if语句判断时候没有处理好,应该用下面代码;

  1. 3 K  ?0 I8 d- G
  2. 通过上述代码确实找到了特定的面了。
    7 T# I) R/ u; J
  3. [code]Session *theSession = Session::GetSession();2 _, E9 n( B+ [$ e% `
  4.         Part *workPart(theSession->Parts()->Work());# C* q* C# F0 H* E6 r
  5.         Part *displayPart(theSession->Parts()->Display());
    & |) R* l- {, s9 P

  6. 6 O- i3 t5 Q2 ?: M) u' F$ l! t
  7.         BodyCollection *bc=workPart->Bodies();" A. K9 D/ M! _6 {% j0 {
  8.         BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body! G7 P2 y$ Y. d6 B. b- l3 q' @
  9.         Body *body = (*it);
    7 s2 A- R3 G' A0 a" ?
  10.         std::vector<Face*> faces = body->GetFaces();4 f4 d- E* l8 i% \' e3 k1 c6 p
  11.         for(unsigned int j=0;j<faces.size();j++)9 g3 D) Z9 Q! `9 Q5 D, a
  12.         {
    8 `% [0 r! J. N2 |. k7 @+ |
  13.                 const char *c1="FACE1";
    ) U8 \) [% s& K- |
  14.                 const char *c2=faces[j]->Name().GetText();' s" V3 s2 m  w) ^% i6 `
  15.                 if (!strcmp(c2,c1))
    $ L' g4 l& I' l! t6 N2 A3 H7 I* j
  16.                 {
    0 E% h% b% |$ j8 E+ Z' N
  17.                         UI *faceui = UI::GetUI();
    . m6 o4 k# ^5 l/ D; N1 Y
  18.                         faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");
    7 y: l) x# C4 j  Z  D- `, s
  19.                         5 c$ |, m( ]% z: t- I9 d
  20.                 }) ?0 |/ i8 R. m6 W( U1 g
  21.                 else1 r. f4 R' F7 E% x4 e+ {1 t
  22.                 {
    - U# j2 @0 ^. n6 f0 ~
  23.                         UI *faceui = UI::GetUI();
    7 G) N9 t% x9 K
  24.                         faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    " @; w' ]0 U5 F8 t9 V: j' O! `
  25.                         - `# ^: a+ r' f# K1 l6 p  Z- y
  26.                 }
      {  F; h2 F  ]
  27. ) d0 \0 x' O6 g! C
  28. 9 W. |; k- @4 F$ R
  29.         }
复制代码
2 w% W/ H- v( O- X8 `
1 z0 q2 n3 z/ `& o* {1 r0 h, ~
( _' b8 \" D) h2 S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了