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

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

小新 楼主

2014-4-7 19:26:05

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

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

x
本帖最后由 小新 于 2014-4-7 19:51 编辑 3 G+ i4 r& q$ J

4 j1 Q/ S/ m2 j( t0 k; c. `' Y我做自动化装配,通过代码定义好其约束关系。但是在具体实现过程中,不知道如何找到定义约束关系的某个实体上的特定的面。如图我想将图上箭头所指的面用于建立约束,但是不知道在代码中如何找到这个面。此外我是想用NX Open C++实现,而不是用UFun函数实现。 123.png + M* L0 T5 X5 e
上海点团信息科技有限公司,承接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 , 看看
, u# a: |* N9 q: i7 ?' [
/ w  F8 D* T( V! K# C2 C0 W要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数什么的 最终确定是你选择的那个面- N4 R1 L" r/ ?+ E8 e
) E5 u2 z* g3 E! {8 c
或者直接找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:200 w" _7 l+ d$ Y$ [
录制JA , 看看
6 e' s, ]6 p( T) p: m) U4 ]: ]1 o' I3 Y7 `
要么就是通过几何判断了,遍历所有的面,找出比如面的法相是什么,面的类型,面的一些参数 ...
6 o2 T* U$ r2 ]4 D. }( s
我录制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
3 z+ l; I. z( q3 P. N9 U我录制JA后,出现代码Face *face1(dynamic_cast(block1->FindObject("FACE 4 {(250,100,50) BLOCK(1)}"))) ...

+ N9 q4 G; E& x: m; ^- y* c对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数
! |" G# }7 z/ x; r
% g0 @% m! m" A2 \  `/ }: j0 ?NXOpen C++ 没有类似的这个功能 & X; E) U7 o/ J' }2 v6 @/ x/ S

, e7 @7 z# a2 M" [& p, E* T& R开发时候基本是 ufun + NXopen C++
: g/ ]. u8 l1 t/ j单独的 NXOpen C++ 你可能实现所有的要求
9 _2 F+ J: J" J9 I6 Z$ x% w4 J' F8 u5 x& ?+ S7 f/ _% }  a+ @
两个要结合用
上海点团信息科技有限公司,承接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* j$ h. p, F9 c1 ]0 a: m3 \) J
对的 最简单的方法就是用UFUN的 UF_OBJ_cylce_by_name 函数
. V. `# n- s7 r% j5 `0 a& z! F% m6 s$ Q2 v+ x
NXOpen C++ 没有类似的这个功能

$ E/ `0 g7 y% R 123.png 123454.png 你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the object。我就想这个custom name 是否可能是我在UG给那个特定面命名的那个名字。如果用这个方法返回的custom name 和命名的名字相比较,如果是一致,那么我就从把这个面给保存下来,就算找到了。我按照这个思路用下面的代码验证这个思路。
  ~# i1 S/ D0 K  f5 e8 k
  1. 0 l$ X! D- m- `3 p; Y
  2. <P>Session *theSession = Session::GetSession();# q$ v$ T! s' M7 Z1 K# H  d: }% Y
  3. Part *workPart(theSession->Parts()->Work());8 q% P5 v5 _, c' K
  4. Part *displayPart(theSession->Parts()->Display());0 A# o9 Z: z3 p# G  s
  5. BodyCollection *bc=workPart->Bodies();& b) N8 `, Q9 Q" x# q, R9 d
  6. BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body" U* j- D& _1 E8 K
  7. Body *body = (*it);
    0 F- Z3 @& R2 S+ H" U
  8. std::vector<Face*> faces = body->GetFaces();$ m; E& z3 V; M) E/ V
  9. for(unsigned int j=0;j<faces.size();j++)
    - l8 O1 i( }5 H0 K, c7 D7 e
  10. {
    5 G8 L% s" I: z, R; `" y

  11. / b7 `9 m7 J; J- N  K
  12.       if ((faces[j]->Name().getText())=="FACE1")
    6 |. [2 r# x; V' n8 m
  13.         {</P>
    - m0 ^/ l  w7 K" K' j% o6 {' w9 U
  14. <P>             UI *faceui = UI::GetUI();) j' G+ D. _8 l  _+ N3 U! T2 S
  15.             faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");
    2 F+ K/ W8 a4 b
  16.         }
    9 S% }4 T  ]0 ]9 P$ F
  17.     else
    $ {" q' V( [) W
  18.        {
      K0 f5 X# Y+ h  m7 n
  19.            UI *faceui = UI::GetUI();  p* ]+ ]; |$ Z7 w: y& Y
  20.            faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());: ~% H; `9 c% h) b" J/ y  v# B
  21.        }
    * A: y0 p! R5 z3 K9 w: U9 D: U
  22. }</P>
复制代码
2 N+ w3 D, D# P& o! H# M6 Z! E
上述代码能够通过编译。在实际运行中出现了上面图所示的两种结果。从图中看到程序判断,(faces[j]->Name().getText())=="FACE1"结果都为假,所以弹出了6个(6个面)“未找到面”的对话框,由于我估计将对话框内容为Name()返回的custom name。但是有一个对话框中内容就是“FACE1”,其余都是空白。既然有一个是“FACE1”为什么不显示“已经找到面”对话框咧?求指教
5 G# w  l- o- r8 `: @5 w+ M; H( R* N3 d$ F

& T$ k4 x1 j4 B: J+ T1 C

- x* @) b5 m/ S  B

: s1 b5 j. ]6 n9 L- _6 z3 d5 F
上海点团信息科技有限公司,承接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 编辑 4 F  T8 f2 V' h4 G) ^
小新 发表于 2014-4-8 21:55
5 a5 h4 A- ?  e+ z/ J你好,我发现在Face类型继承了一个Name()方法,其函数说明的是:Returns the custom name of the objec ...
$ t1 m& m% ^2 c" I
1414.png 问题已经解决,按照上述思路是可行的。子所以出现上述问题是因为我在if语句判断时候没有处理好,应该用下面代码;
  1. ) b6 N4 J) ?. b: F& j6 s4 f
  2. 通过上述代码确实找到了特定的面了。- A+ ~" X* d& G* o3 }. J* I
  3. [code]Session *theSession = Session::GetSession();
    1 M& I% y# w0 h7 I" ]* |2 u
  4.         Part *workPart(theSession->Parts()->Work());
    3 Z( v  L6 J3 f3 {7 d( ~
  5.         Part *displayPart(theSession->Parts()->Display());
    * B3 q* y9 d0 T2 @3 S
  6. - a! ?0 Q2 p3 Z- G( f' y
  7.         BodyCollection *bc=workPart->Bodies();( D2 x7 m' u- i, T9 a
  8.         BodyCollection::iterator it = bc->begin();//因为只有一个体,所以第一位置元素赋值给下面的body9 C9 m4 ^9 j9 x7 B! S* w2 r1 b
  9.         Body *body = (*it);% ]) ^8 I/ A3 `: M( n8 V0 d! y1 x
  10.         std::vector<Face*> faces = body->GetFaces();
    " m( v3 {! n9 `! U
  11.         for(unsigned int j=0;j<faces.size();j++)
    # \9 C& [5 w! s, e
  12.         {
    " N3 V7 V, M" j
  13.                 const char *c1="FACE1";3 A  k5 c! r( R; o) {5 E+ D
  14.                 const char *c2=faces[j]->Name().GetText();
    $ E1 ?6 f2 h9 k4 ]0 ^, F5 M
  15.                 if (!strcmp(c2,c1))
    0 ?% B9 A. a- D6 f
  16.                 {6 D) k2 ]$ k; W2 I7 f7 b7 e; I
  17.                         UI *faceui = UI::GetUI();7 s: J; p: G; s4 Y! Z0 A
  18.                         faceui->NXMessageBox()->Show("已经找到面",NXMessageBox::DialogTypeInformation,"已经找到特定的面");  o- r) [4 B. f8 o
  19.                        
    2 S7 X3 ~  b, _" H9 ^  j/ A/ _
  20.                 }1 j1 Z! u9 c  B& Z, y8 M
  21.                 else; b/ V  U7 K- r! E: X+ E
  22.                 {0 p. Y& z  s4 X. Z  }$ D
  23.                         UI *faceui = UI::GetUI();
    % ^% L1 V; G" c
  24.                         faceui->NXMessageBox()->Show("未找到面",NXMessageBox::DialogTypeInformation,faces[j]->Name().getText());
    . n5 e. Q" X1 m% _2 n
  25.                         % [6 Q) |, [1 g# O( ~+ h7 l
  26.                 }# u6 }- r8 f/ u3 V" V, \. j$ n- H9 I" Q

  27. * S% q1 V0 i/ _4 R( B

  28. ' G  U2 X/ |" |  r
  29.         }
复制代码
9 V# z3 f. ~' U* T7 o) }0 Z3 i

; L' f% D* H7 n0 {) @# {' }6 @* g9 U0 y' K; j2 |8 Z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了