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 9593 17

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

airintheair 楼主

2015-3-6 16:29:07

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

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

x
本人新手,对C语言不太熟悉,写了如下一段代码,请问各位大神,哪里错了?
0 C( i; ]. \& Q$ k, p
' x  n* ?, T0 G, ]: p功能点:选择两个实体,判断距离,得到接触面,对接触面涂色- [1 @5 ], P# Y  i6 P$ \
$ T* K, D9 j6 ]

1 D* H# i8 u: C" j% ]  tag_t enterbody1;//touchselect1  \  H" U  M3 L1 g* o
  tag_t enterbody2;//touchselest22 {& x% e' t/ g$ `! G2 S7 P: }
  int touchcolor;//touchcolor1
; r5 u6 `1 U6 B  double* mindist;' h9 v4 a0 \7 o
  double body1_point[3];
; S, t0 a" h7 n' p) i- n- E% V  double body2_point[3];' n0 ]* v7 e, Z/ O* `
  int n_parents1;* r- q; Y0 R8 v5 M( y
  int n_parents2;
, k5 w# c( A9 H  tag_p_t body1_face;5 H! R: h$ j( Z$ H# y
  tag_p_t body2_face;! G0 |' {$ h: ^9 d: D
  tag_t point1_face1;
& X9 W% g5 e6 a2 {( @* x  tag_t point2_face2;, k4 `$ A  r9 j3 W, U' y9 v* N
  int i;
/ @' i5 a) s, C( z  tag_t* point1;
+ a+ w2 l) K- G" w7 Q" M  tag_t* point2;) T: x* O0 S! {$ ^
  int results;3 h1 s2 ~. {  z3 Z3 c. h
) x$ n" q8 ?8 _6 M* d
  //1、获得对话框中的值
* q+ p% g' d% i1 G( k' D) q$ h" j& M3 I2 m; E
  //选择的第一个体,找出来taggedObjects1
: F  Z& V' o( [  std::vector<NXOpen::TaggedObject*>taggedObjects1;
6 f/ ^# X, ^+ a7 \  PropertyList *bodycollectorlist1=touchselect1->GetProperties();3 x0 `" A6 B; a& V
  taggedObjects1=bodycollectorlist1->GetTaggedObjectVector("SelectedObjects");
! {, G4 D$ ~6 b# T7 r0 c  delete bodycollectorlist1;5 g! Y3 C. ^0 m1 i# Z
  bodycollectorlist1=NULL;9 X; h' t: H6 v, u2 _
  enterbody1=taggedObjects1[0]->Tag();
- L2 z- c+ W$ L  `$ E1 k1 u# ~! V
  //选择的第一个体,找出来taggedObjects12 ?1 \7 C  S; J3 z, J! T& _7 r
  std::vector<NXOpen::TaggedObject*>taggedObjects2;
9 a+ \- d6 @  V0 W' u5 u  PropertyList *bodycollectorlist2=touchselect2->GetProperties();
, f- Y: Q( `/ ?4 F* y  taggedObjects2=bodycollectorlist2->GetTaggedObjectVector("SelectedObjects");+ K/ m8 P; `2 q: Y0 d! K: l0 z
  delete bodycollectorlist2;
* h0 p4 j$ W+ @. D9 }4 b; f/ [$ z  bodycollectorlist2=NULL;
8 o" \( Q0 E( I  enterbody2=taggedObjects2[0]->Tag();! R" b, p3 E$ x5 q5 C
$ f" B8 r' Z: v) o7 t# N% m
  //接触面颜色提取) @1 y  m( `% J1 @4 P8 A' v7 b; f: J) l
  int colora;
2 l6 M& O+ a' }2 }  ?  Y7 E' d  PropertyList *thecolor=touchucolor1->GetProperties();
# w4 l& X8 [9 p  colora=thecolor->GetInteger("value");
( `4 ^2 R/ I- v0 o  H9 |  touchcolor=(int)colora;
/ z- n, P' `" e0 a, @) F2 Y4 R9 |0 ~( Z
  y5 W1 O( K  K8 n0 p2 ~) `  //2、判断干涉
$ q5 \  D% }6 b) m4 r  UF_initialize();
, j+ [! Z6 ~. g  UF_MODL_check_interference(enterbody1,1,&enterbody2,&results);, Z3 q. _; C) p9 {6 q
   /*tag_t target, 6 v) C1 Z, p3 {
   int num_tools,# c( _" {8 l8 ^5 l: j" E
   tag_t * tools,8 f. H8 m7 P4 Z( Q2 V. z* A% }
   int * results*/" t* l+ f3 n/ r
  if(results==1)( F/ B2 y5 H. E) d* H' D; I
  {9 \, ]+ \) g; c9 b9 E
   uc1601("选择实体存在干涉,请检查后重新选择",1);( x% @  {' @% {. r8 L. O% K" X. [$ M
   enterbody1=NULL;
- `& V3 q7 \4 E5 G) G+ C   enterbody2=NULL;
3 ]2 F  _6 \/ L9 r; C# B  }
5 x7 {2 z  N- s* Y5 ?       else if(results==2)8 ?- w) o5 f# C- }2 y' u
  {
7 H0 j7 f9 N8 b. K   uc1601("选择实体存在间隙,请检查后重新选择",1);
3 S8 A7 l7 ~( A; n; e      enterbody1=NULL;
( a& g+ {' k# x7 A$ R      enterbody2=NULL;5 L! |; q( a! C9 n0 |. N4 Q
  }
$ g+ A% s- @- v* K      else
0 D6 |1 n% r" K0 `0 e  {/ K( M7 a& A+ U/ }& G1 n
" Q; B; v( H3 z5 a8 S7 n( O$ J- q
  //2、找到最小距离所在位置
- |, x& L8 U( A. }; W/ j  UF_SF_find_minimum_distance(enterbody1,enterbody2,mindist,body1_point,body2_point);6 Z! q$ O2 {# O( O/ o' s( d( Z' @4 m

' ?9 Y, I) N) J5 o$ {& f2 y    //3、创建两个点
9 x2 e, }3 d& P3 R7 f5 \5 f8 k  UF_CURVE_create_point(body1_point,point1);
9 s* s6 p2 K6 K, Y- l  UF_CURVE_create_point(body2_point,point2);! F2 R2 r4 s' X7 t9 n$ j) {
- ^" _! L7 h; f7 a! e" X+ Q
  //4、找到两个点所在的面- @, i. T, I' ]% i9 s- M
  UF_SO_ask_parents(point1[3],UF_SO_ASK_ALL_PARENTS,&n_parents1,&body1_face);
+ }2 p" Y9 E0 }$ t: c( G) c  for (i=0; i<n_parents1; i++)
6 d' \  s3 o. [7 e6 |% F  {( W( Q* s4 s4 V: s0 ^5 a
   int type=0, subtype=0;
* t3 X" P9 j1 y& h, Y1 c7 e   UF_OBJ_ask_type_and_subtype(body1_face[i], &type, &subtype);
5 N+ C! l( T/ i. u   if (type==70 && subtype==2);
3 s+ I3 u* s9 X' X4 A4 j4 J  }% D, w* @4 Y& d7 r$ w- ^+ C+ {4 z
  point1_face1=body1_face[i];3 d7 O6 k" d6 I; j4 B. @
  UF_SO_ask_parents(point2[3],UF_SO_ASK_ALL_PARENTS,&n_parents2,&body2_face);
, ?6 X7 O8 D" r$ z% I4 {1 b8 r5 s  for (i=0; i<n_parents2; i++)
$ U. W9 B6 {$ @7 t( D5 w5 m; _* B  {
% X* G! C( Y: Z6 p; ~7 c   int type=0, subtype=0;
2 o! R: X0 B/ g1 X   UF_OBJ_ask_type_and_subtype(body2_face[i], &type, &subtype);
7 ~3 f3 u4 a7 Y4 c' P2 Z8 }& y   if (type==70 && subtype==2);
9 l8 E  e) E4 ]$ m! D5 Q6 n% `  }/ x! \( |4 g, w& p, v* d& V% X
  point2_face2=body2_face[i];
# f% w2 y* a0 P' Y) {: y$ f: ^6 R
  //5、给两个面涂色
6 ?& _3 ^& Y+ n6 {  UF_OBJ_set_color(point1_face1,touchcolor);. y3 P, J! f! ]( e: F2 E
  UF_OBJ_set_color(point2_face2,touchcolor);
; \* o; \% h6 C2 S. E$ H  }5 K: J, n4 k5 T, v4 t& C  s
  UF_terminate ();  1 T) M4 T+ n) T

对控件的命名

对控件的命名

界面

界面
上海点团信息科技有限公司,承接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

你这个 代码 运行没报错吗??7 S% p3 M; A+ F" h1 @* g. }+ S

) o( y3 J: r/ \选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置matriple $ ^/ W- w# [. ]! C, d3 ]( Z- w
, L9 W7 u- Y3 v3 M6 O7 K+ x4 ~
你的意思应该是 选择两个体  如果有接触面 就加个颜色
$ i' g; x+ s) c0 w. O' N6 Z' q; {; U' @1 M) F0 z2 F) u' `7 C
对吗?
上海点团信息科技有限公司,承接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,# m. B, Y4 V9 \  F0 D
效果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( )
4 [- R; c; I4 k. B1 K实体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) k6 e, @' i  U* U
你这个 代码 运行没报错吗??: l. a- A4 n- F. Y4 N6 v' E

* ^* S3 S! D4 G. d/ h选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置ma ...
/ Q' _' N$ O1 h, }+ z, A
没报错,也没效果,╮(╯▽╰)╭
% i- \. K2 i- h: d2 K; y就是这个意思,如果有接触面,接触面就加个颜色
上海点团信息科技有限公司,承接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
$ {6 I# m/ M- ?( {效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( ); L: p  h6 q4 R9 G" M
实体1和实体2所有的懂得面进行判断,这样 ...

6 D0 z& M7 F! N4 b- O0 T; H9 g效果一1,谢谢!
/ n9 K% D* f4 ?2 E; ]' Q+ h我属于完全瞎写,新手,呵呵
上海点团信息科技有限公司,承接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
9 S% V, C/ V) E2 Q, B# Q; \/ w效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( ); g% p# t, O( V2 o: A
实体1和实体2所有的懂得面进行判断,这样 ...

  u8 r: Y! k1 R6 I  c. w: zUF_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 # e1 Y" Q7 {1 X+ L/ {5 r
responsible for allocating it with an array size of
( j, L9 q+ b# [( }) `num_tools. " W2 r& m9 j, l
= 1 -> there is interference ) V4 ~" v- R% S7 w' i& A
= 2 -> no interference 3 I/ X7 x) C0 e4 Q6 ^; |" ^
= 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

干扰对每个工具的身体状态。打电话的人是
( j$ ^0 Z. }( D2 @& H& m负责分配数组的大小7 G! ~3 }1 C/ {" R3 n" n( D
num_tools。
6 ?, A" L& K# W) O) K' x  q= 1 - >有干扰/ J' H" E+ H, A/ K; R2 A! f
= 2 - >没有干扰
  P% W! k5 E5 {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: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二次开发专题模块培训报名开始啦

    我知道了