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

[已解决] 接触面涂色代码

  [复制链接]

2015-3-9 11:47:40 9558 17

airintheair 发表于 2015-3-6 16:29:07 |阅读模式

airintheair 楼主

2015-3-6 16:29:07

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

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

x
本人新手,对C语言不太熟悉,写了如下一段代码,请问各位大神,哪里错了?" |7 b! w" d- z" s$ |2 v8 r
9 M; _1 S- A- H* I
功能点:选择两个实体,判断距离,得到接触面,对接触面涂色
4 N6 X$ @& O* a& V2 _9 [' n. u- `
3 l$ q& e- I6 E+ `
  tag_t enterbody1;//touchselect13 h0 u+ q1 w" a/ m
  tag_t enterbody2;//touchselest2- @( e2 E' _% u( E& K" M0 f
  int touchcolor;//touchcolor1* f1 U% M- P6 y0 L7 K: ^9 I
  double* mindist;
0 p# J' _+ F9 w3 n  double body1_point[3];% }; t& r4 _& a, m8 ^2 F+ T7 n7 S- K( c
  double body2_point[3];
5 ^. t$ v0 s  o2 W/ }  int n_parents1;+ ~, U0 P* \7 B' `, [8 p
  int n_parents2;& Y9 e1 }8 R" N4 r9 p. R3 F
  tag_p_t body1_face;$ H4 e9 X. o* I/ @
  tag_p_t body2_face;
0 \2 Y, V8 j3 O. y! p; U4 B  tag_t point1_face1;2 d, @5 N6 _! ?; h" |
  tag_t point2_face2;
# F  d  o0 m1 [3 R' t  int i;6 W7 N7 M8 ]6 ?" Q! I8 r2 N
  tag_t* point1;
7 @  P1 p4 B6 w2 {: c4 ]5 w  tag_t* point2;
8 {! z" `( H- K* `  int results;
% _( z& d* \' S7 H- @6 e0 c! ?4 I& ~5 L' a! y- F7 b
  //1、获得对话框中的值
1 a$ X, E, T0 U5 w) p' j8 L) ^5 o! w# t0 e! X
  //选择的第一个体,找出来taggedObjects1) o1 {: Y2 [- o6 W2 B4 [- I
  std::vector<NXOpen::TaggedObject*>taggedObjects1;
( ~6 [& ^( q! r5 H+ k, r' ^  PropertyList *bodycollectorlist1=touchselect1->GetProperties();! N7 |) Z& l, I% Q& u3 K
  taggedObjects1=bodycollectorlist1->GetTaggedObjectVector("SelectedObjects");
9 u7 G: A: i0 Y  D6 `  delete bodycollectorlist1;# u  a! t. N2 [% E8 O$ I4 [, ]
  bodycollectorlist1=NULL;3 J1 m1 j2 Z+ c  h+ Q. y+ |
  enterbody1=taggedObjects1[0]->Tag();
" N7 I4 t4 s$ g! O- v7 b5 g" J) J/ n7 f6 B5 K: E! ^
  //选择的第一个体,找出来taggedObjects1# [. [2 G! b! A4 }& w
  std::vector<NXOpen::TaggedObject*>taggedObjects2;
) m) r" C6 R+ A0 e# I  PropertyList *bodycollectorlist2=touchselect2->GetProperties();
' q9 v0 V5 a9 w3 i0 x2 q  taggedObjects2=bodycollectorlist2->GetTaggedObjectVector("SelectedObjects");% J& M9 F- N) h, j0 |; O/ e
  delete bodycollectorlist2;6 B( x* ]' l7 m1 Q* Y- C* z
  bodycollectorlist2=NULL;
  V+ i5 _7 x- S* O  G3 M( ~  enterbody2=taggedObjects2[0]->Tag();, x1 y% r2 a* N" v) n4 L  s9 X! Q
* r4 K' M% s9 u& }
  //接触面颜色提取/ @& e2 C8 c' p% Y8 R- v
  int colora;
2 f" ^1 T1 q: \! o, h+ `: E$ J  PropertyList *thecolor=touchucolor1->GetProperties();* I: N, t, @* N, S! s$ t- Y
  colora=thecolor->GetInteger("value");( [* a+ H: ^; }- B
  touchcolor=(int)colora;* z( [" A" Z& Y$ P

4 o) A% w" K" e. D- H' b  //2、判断干涉
8 o* {0 i' y2 R" Z6 G0 k/ [  UF_initialize();
/ S) z5 F  T5 R+ c- Z! L: b% e  UF_MODL_check_interference(enterbody1,1,&enterbody2,&results);
  g+ q4 j8 {$ w5 T# v   /*tag_t target, $ l: j5 N; I: e7 ~
   int num_tools,
, Q  m, o0 g0 L7 D5 R2 f- O& R8 j   tag_t * tools,
: Q0 E- B) H# R, n+ y* E3 N   int * results*/. g" r6 [% ~& Z9 `- T" G# P
  if(results==1)1 I) K, Y/ m' w( N1 z% ~
  {
) J) r% n  L# H- X7 J   uc1601("选择实体存在干涉,请检查后重新选择",1);
+ H2 S- l7 n% H7 w* B" X   enterbody1=NULL;# U5 @/ {: Q3 K4 V3 [
   enterbody2=NULL;+ P4 U' h7 v- b/ A
  }$ i8 K% \! Y3 c
       else if(results==2)* i, t. ^  b$ C; f4 a. o2 V& O# _
  {( z5 H. [/ T  p) y8 t. @3 A
   uc1601("选择实体存在间隙,请检查后重新选择",1);! e6 B8 R9 `" ?
      enterbody1=NULL;
6 X: s$ C. w, k6 a      enterbody2=NULL;
6 r& A+ q# G. Y- N' h2 T  }
" ?' f  a% D! @" @) p2 B2 A# b      else; }% p* ]( P( K& `
  {
: b% B* `# I  X; I& m% j7 m: ~' k- q, s7 G9 t
  //2、找到最小距离所在位置7 l% y" ?" ?! l' v) l* n0 e- U
  UF_SF_find_minimum_distance(enterbody1,enterbody2,mindist,body1_point,body2_point);
9 z$ m. `5 T7 ~$ Z$ u& J
; R* ^6 M& q1 O' ]. O$ V- V* \5 l    //3、创建两个点
$ E4 R: X" T0 V; {  UF_CURVE_create_point(body1_point,point1);
# I, p3 y* o2 }9 j  UF_CURVE_create_point(body2_point,point2);  Q2 |7 f! \- s2 S. k  w9 j( Y& ^+ a

  ^. L" M# X1 y, L! d  //4、找到两个点所在的面
9 G) z8 F2 B" x2 R  _0 N2 V  UF_SO_ask_parents(point1[3],UF_SO_ASK_ALL_PARENTS,&n_parents1,&body1_face);, W" K7 O5 V7 P& ^9 E" S5 r
  for (i=0; i<n_parents1; i++)
/ S  S! A! @' T* K+ A  {+ M, k- R+ P4 t- @
   int type=0, subtype=0;
; @1 c$ y* a- n2 n5 k   UF_OBJ_ask_type_and_subtype(body1_face[i], &type, &subtype);
' q8 n( q' k7 V; j1 |   if (type==70 && subtype==2);
$ e7 N: n6 I' l; E# X; g9 W2 J  }
$ ^( W. C4 ]9 p3 B  point1_face1=body1_face[i];; M+ k- e! |- w& s
  UF_SO_ask_parents(point2[3],UF_SO_ASK_ALL_PARENTS,&n_parents2,&body2_face);5 Z5 W' G& K5 J* u2 h$ @
  for (i=0; i<n_parents2; i++)
5 ~# v0 B  S) f" b+ v  {8 p' Q+ m$ G6 z
   int type=0, subtype=0;, q# T. D  ]; K8 `% c
   UF_OBJ_ask_type_and_subtype(body2_face[i], &type, &subtype);5 f: P! w1 f. ~- D) ?% t' X
   if (type==70 && subtype==2);
3 l6 O' i. I5 A* H  }
( |+ ]$ ^. h+ z6 `. q% {  point2_face2=body2_face[i];6 f5 P6 a7 O' D2 Z8 i  C
% r" v6 D4 ?' w( @) ^
  //5、给两个面涂色
: H0 @$ h4 {6 I4 {# E* k! W( t0 p0 e# s  UF_OBJ_set_color(point1_face1,touchcolor);! u+ L, r# S8 C4 g, ]6 F! w
  UF_OBJ_set_color(point2_face2,touchcolor);" D: m  t# g4 |8 E/ [
  }
' A5 n- Y' P$ `' q9 m  UF_terminate ();  
; c: z. {8 {( H% B& n1 u

对控件的命名

对控件的命名

界面

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

使用道具 举报

全部回复17

admin 发表于 2015-3-8 11:04:32

admin 沙发

2015-3-8 11:04:32

你这个 代码 运行没报错吗??" b0 Q$ x, }+ q

; _) z9 g6 C6 z# ]选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置matriple
! `2 J* B5 C# x% b9 S" t: e7 q0 j6 [: ?# Z8 Y/ Z0 t' z
你的意思应该是 选择两个体  如果有接触面 就加个颜色 - d2 d# g7 ]/ S) w

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

使用道具 举报

简简单单 发表于 2015-3-8 14:18:47

简简单单 板凳

2015-3-8 14:18:47

回帖奖励 +10 PLM币

是效果1,还是效果2,
' s- k* X8 S) F
效果1.jpg
效果2.jpg
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

简简单单 发表于 2015-3-9 08:54:56

简简单单 地板

2015-3-9 08:54:56

效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
5 O4 e, ^+ z8 b实体1和实体2所有的懂得面进行判断,这样就可以得到实体2的哪些面挨着,反之........
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

airintheair 发表于 2015-3-9 11:07:47

airintheair 5#

2015-3-9 11:07:47

admin 发表于 2015-3-8 11:04
0 O0 |: _4 V. {. Z9 x你这个 代码 运行没报错吗??: o2 ]' n. ?$ `' y+ }/ |; J

5 {$ Q. N( i: q& R$ U' s选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置ma ...
; Q6 q, a; @, ]2 B+ z
没报错,也没效果,╮(╯▽╰)╭
( |: O, ~) d: K3 G4 _5 a6 W/ B+ }就是这个意思,如果有接触面,接触面就加个颜色
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

airintheair 发表于 2015-3-9 11:08:38

airintheair 6#

2015-3-9 11:08:38

简简单单 发表于 2015-3-9 08:54
/ b0 i/ X) o5 b4 u效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
3 B$ ?; G- c( H2 n( l# s实体1和实体2所有的懂得面进行判断,这样 ...

# C/ R, V2 e* y/ R; C效果一1,谢谢!" x3 `! r$ K5 ]& q; w$ ?. k4 m
我属于完全瞎写,新手,呵呵
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

airintheair 发表于 2015-3-9 11:11:20

airintheair 7#

2015-3-9 11:11:20

简简单单 发表于 2015-3-9 08:54
- z/ L' v. f* H; C3 C  `效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
  B3 D- v; O) J* W. }: v# M实体1和实体2所有的懂得面进行判断,这样 ...

' R) y% ~7 V) ^. j0 R8 BUF_MODL_check_interference 这个我用了,但是它输入的不是只有结果1、2、3么?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

简简单单 发表于 2015-3-9 11:45:27

简简单单 8#

2015-3-9 11:45:27

Interference status for each tool body. The caller is
) [& C& U* @" n7 J" wresponsible for allocating it with an array size of * u: h" o2 S% }
num_tools. 3 a7 p; a; d( ]
= 1 -> there is interference . Y/ S4 g- q' c- v
= 2 -> no interference + `0 l) Z2 V8 {; a, z1 m+ s
= 3 -> touching, that is coincident faces
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

简简单单 发表于 2015-3-9 11:46:07

简简单单 9#

2015-3-9 11:46:07

干扰对每个工具的身体状态。打电话的人是
  ~( i. E- n1 _$ @; P; H负责分配数组的大小
- J- Z$ Y# x) S$ z! H1 Nnum_tools。
. D' |! }; v: D9 ]7 K= 1 - >有干扰: f2 D1 ]3 z( N1 _/ }' ?% O, w
= 2 - >没有干扰: H) _" ^$ A, |- ?) N; F
= 3 - >触摸,这是重合的脸
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

简简单单 发表于 2015-3-9 11:47:40

简简单单 10#

2015-3-9 11:47:40

3就是你想要的
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了