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

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

airintheair 楼主

2015-3-6 16:29:07

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

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

x
本人新手,对C语言不太熟悉,写了如下一段代码,请问各位大神,哪里错了?+ b) B. h4 T1 S9 ?

5 j7 O( i& b: m. @7 j5 y) {功能点:选择两个实体,判断距离,得到接触面,对接触面涂色
1 [3 v; V' C& D1 G1 L; o6 S* t( v; L. ^1 b6 D/ O( X! n

4 K+ j! i; O: g" [# E  tag_t enterbody1;//touchselect1
  u( W5 {5 U1 u8 v& B) `  tag_t enterbody2;//touchselest2
; ?" P. r) T/ u: e" G  int touchcolor;//touchcolor1* U+ J. W6 N: Y1 M
  double* mindist;
" V. o* _6 B( _5 U. ^8 V7 Q  double body1_point[3];
3 i9 r3 z, l/ H( m+ T  double body2_point[3];
0 f& ^! e& P/ B3 z  int n_parents1;" s# w- d$ a6 Q$ g
  int n_parents2;
$ o" U8 Z9 }* l) z6 j4 c1 ^- R' G0 b  tag_p_t body1_face;; l' G' b* z  u% U' J
  tag_p_t body2_face;; e! @: G% \8 f% V% I. F
  tag_t point1_face1;
( c; {$ f! W" O: v" ^% g9 s  tag_t point2_face2;  N" O" ^4 a- s: m
  int i;
) ^0 d5 L# ~, _3 t( g1 h9 y  tag_t* point1;0 }8 w9 R$ x& _3 O2 q3 W! q
  tag_t* point2;
0 w6 G, Y9 T! l" w! }  int results;
& H  q# _' k: @+ _; T# o* S& p# ]0 I5 r9 V3 ~
  //1、获得对话框中的值+ ?$ q& L; ?! y( ]" i" _

: W# ~* i, D9 x7 w+ I  //选择的第一个体,找出来taggedObjects1
" q. ]+ g' F2 i' }- ]  std::vector<NXOpen::TaggedObject*>taggedObjects1;8 ?6 E1 e$ P6 t; d" Q3 S
  PropertyList *bodycollectorlist1=touchselect1->GetProperties();
+ J# P8 i$ K% i+ E" t- J  taggedObjects1=bodycollectorlist1->GetTaggedObjectVector("SelectedObjects");. R: U/ C1 d* c, @- @
  delete bodycollectorlist1;
  w3 `6 u$ v( N  bodycollectorlist1=NULL;+ e: Z/ S8 A; x  I
  enterbody1=taggedObjects1[0]->Tag();) v! B7 i2 E( y$ Q
+ ^7 U# Z% n2 m. {: f
  //选择的第一个体,找出来taggedObjects1( U  b* S4 f+ i* l" p4 K+ H' d8 u( L
  std::vector<NXOpen::TaggedObject*>taggedObjects2;
( [: E0 Q5 B! D* p7 a% P# v5 E  PropertyList *bodycollectorlist2=touchselect2->GetProperties();
% x# h. ]- f* k% N0 ]  taggedObjects2=bodycollectorlist2->GetTaggedObjectVector("SelectedObjects");
9 F, |( {9 Z0 u$ {/ r6 R4 P8 a  delete bodycollectorlist2;0 }$ g4 o- y% v: @, w. F$ J
  bodycollectorlist2=NULL;) N8 f8 U: E8 P7 d! E7 {
  enterbody2=taggedObjects2[0]->Tag();& h* I. S: p+ a

' }3 u. [6 c. B, l6 {* z  //接触面颜色提取
( m0 t* V0 {, Y& \% F1 J: n, o: O  int colora;
& x6 F( C0 Q# p. d+ [- }, h  PropertyList *thecolor=touchucolor1->GetProperties();
6 A9 v' `1 n. V2 X" N3 Q& [  colora=thecolor->GetInteger("value");6 S. G+ J2 ]6 D  o: P
  touchcolor=(int)colora;) q! T; b2 x/ K6 B) I$ u3 i2 v
: ]& h1 z* s  e0 o
  //2、判断干涉* X0 K7 i" h5 F" Z3 k8 ~& ^& k
  UF_initialize();
' C2 b& i1 X/ o9 u6 c5 u+ M; A  UF_MODL_check_interference(enterbody1,1,&enterbody2,&results);% i' ?- y. ^. t7 e
   /*tag_t target, ) F: O! @. n- B+ L( P8 W
   int num_tools,
3 m! G7 [, k: j1 v% B   tag_t * tools,
, M7 y5 x! U( u+ Z- P  b1 d   int * results*/
6 |' t9 H. p) x) m  if(results==1)
; U) _% I& ]/ E# K  {
9 W" R+ w" N: {1 h! D! r   uc1601("选择实体存在干涉,请检查后重新选择",1);4 \  L% ?) a% u! Z/ K7 N) W
   enterbody1=NULL;
! N9 g: U# o; w7 y) k   enterbody2=NULL;. x! @* l; N% R( M8 i) P
  }
, N  C% ~' H) w5 |* c4 ^* L       else if(results==2)/ k5 d+ E2 z7 A
  {
6 i. G5 h8 T( s9 g; s0 `  x   uc1601("选择实体存在间隙,请检查后重新选择",1);
8 `2 z: N1 s: d4 o# ~" ^      enterbody1=NULL;' Z$ _* b0 [8 w6 u5 |4 {8 m
      enterbody2=NULL;
1 u5 J: ^% x4 q2 b2 w' ]& f( w- }  }
4 M, b5 `2 g" X1 Y      else: |8 a. P$ h4 b
  {
% E8 k3 o4 a. ~) F2 A* I1 j
: @$ ]2 \# k: J  R4 c0 z+ U  //2、找到最小距离所在位置
' Y) G6 }- X- @  UF_SF_find_minimum_distance(enterbody1,enterbody2,mindist,body1_point,body2_point);
  ]( k( t5 H7 ^0 i5 n
/ [) T* [0 \8 I+ C1 ]    //3、创建两个点
* s6 r5 h+ K  t6 m& T( `, w  UF_CURVE_create_point(body1_point,point1);0 a! H. ?3 k6 Y# j
  UF_CURVE_create_point(body2_point,point2);& t1 r, s6 Q& f5 w

3 ~0 e  p. \! U5 h! Z. |* x  //4、找到两个点所在的面7 ]1 |; @0 T# I  }" m1 R
  UF_SO_ask_parents(point1[3],UF_SO_ASK_ALL_PARENTS,&n_parents1,&body1_face);
! b* |5 v! _6 g/ C' ?# X8 v3 B  for (i=0; i<n_parents1; i++)( ^* x: e- w( X& \# {3 T3 P
  {; |' [. u/ p' S; H3 l
   int type=0, subtype=0;
( M. |$ h% l7 j, @# l4 G# ^   UF_OBJ_ask_type_and_subtype(body1_face[i], &type, &subtype);0 k: I1 i# S/ M6 `" [
   if (type==70 && subtype==2);
( H9 \8 }+ z0 U6 t1 n) o; ~  }% J% ?+ `( U( ^
  point1_face1=body1_face[i];
0 h9 C  z* u2 Q# V: i  UF_SO_ask_parents(point2[3],UF_SO_ASK_ALL_PARENTS,&n_parents2,&body2_face);: R. E$ [3 b( a2 {+ W: x
  for (i=0; i<n_parents2; i++)
& w* v& r3 _4 V+ ^2 q/ s' s& I  {
! u9 c  F* ^# k) o% A' |   int type=0, subtype=0;- S- ^, g! m( z5 a
   UF_OBJ_ask_type_and_subtype(body2_face[i], &type, &subtype);( @- n* J" K* Z
   if (type==70 && subtype==2);4 b9 E" O& ?  k$ k4 W6 Y
  }! E1 A8 `" Q. \9 Y0 ^
  point2_face2=body2_face[i];( u1 i, m, |4 A! X5 S
+ F8 w  |* l: x, b! l3 {
  //5、给两个面涂色2 S, l+ S! g' L9 G% L! h3 Z- `
  UF_OBJ_set_color(point1_face1,touchcolor);7 g; o+ C: H# a0 `- T
  UF_OBJ_set_color(point2_face2,touchcolor);" a  B8 D- f% l9 b
  }1 b# |/ n; I2 z1 w# n8 u
  UF_terminate ();  7 @+ c3 r, i2 s* E2 P1 u. k

对控件的命名

对控件的命名

界面

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

你这个 代码 运行没报错吗??
4 l# B- R" L9 z3 j& ~; p: @6 g6 r8 u  u1 P1 ]  X9 g$ A$ v; z
选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置matriple 2 ?9 `, [, H. ?2 V  @7 b- l
! ]% X3 J! V0 W3 n/ H
你的意思应该是 选择两个体  如果有接触面 就加个颜色 6 j, k# S1 o' i% }
/ Y& }( U  y7 g. w9 a: h; ^
对吗?
上海点团信息科技有限公司,承接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,3 _+ E3 R+ `& r- q. p, c
效果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( )
. D6 K# C. T9 x+ W% w实体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
. a! Z" J3 w9 g2 q* q7 l你这个 代码 运行没报错吗??
# Y! Q* @- P' F. |6 I' \
8 t, l( O# H: ]& B1 ], s选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置ma ...

' d# W+ x% e4 x( R; M8 l" F没报错,也没效果,╮(╯▽╰)╭
8 @$ y; T% {# {  @% j# z. Z$ w就是这个意思,如果有接触面,接触面就加个颜色
上海点团信息科技有限公司,承接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
, o3 n( p+ _7 G9 Y# a4 K效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
9 N; v, g9 ?3 S# w1 I* J3 Y# U' V* D实体1和实体2所有的懂得面进行判断,这样 ...
9 y  H. M! R- C6 L8 c
效果一1,谢谢!
( v8 T/ t9 S* V( L我属于完全瞎写,新手,呵呵
上海点团信息科技有限公司,承接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) P/ x+ _% i" {! _
效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )7 F+ f0 m7 s1 @) h$ C* L% k
实体1和实体2所有的懂得面进行判断,这样 ...

7 ~% ]4 z; t' c, z% F" 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
) t5 h4 [. t4 D& u6 {) Xresponsible for allocating it with an array size of . {8 D# k# S1 p/ Q3 \! x
num_tools.
: o- k  d& h1 E) N6 v= 1 -> there is interference : S/ {" B/ q# k, C/ W0 u6 N  J% A- [
= 2 -> no interference
- {$ L. T3 ]! \: f; \= 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

干扰对每个工具的身体状态。打电话的人是
" G3 _7 K) z) D0 z6 P5 [负责分配数组的大小" r  T9 l7 p8 M5 S
num_tools。
/ Q; T- U$ l0 b* c9 w8 y* B= 1 - >有干扰) ~" B& n6 k7 q& N. g( L0 F8 w/ y
= 2 - >没有干扰
+ V+ I* U4 m8 V7 y2 X6 d= 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二次开发专题模块培训报名开始啦

    我知道了