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

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

airintheair 楼主

2015-3-6 16:29:07

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

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

x
本人新手,对C语言不太熟悉,写了如下一段代码,请问各位大神,哪里错了?
+ C1 b& ?6 G7 G. D* D& M+ O! @1 a; i$ C4 y
功能点:选择两个实体,判断距离,得到接触面,对接触面涂色( e3 Y. H4 I6 W+ ~+ @0 |

2 W, A# q4 O; F7 h" ?: m, v
# e1 e* c0 @# A  tag_t enterbody1;//touchselect1* z. x8 f- ~. D9 f. e" y
  tag_t enterbody2;//touchselest2
2 S$ N7 g: _3 ?/ C) q  int touchcolor;//touchcolor1
/ p3 z! ~: T7 f# g  double* mindist;% s( j& r, H, i! A- \1 {5 q) p- g
  double body1_point[3];
6 D9 |6 p$ k" W' W' o  H5 p  double body2_point[3];
' k/ f2 I1 n, B/ e$ U) b  int n_parents1;
8 @) {1 g0 c9 L1 Z  int n_parents2;" n3 _3 V) O5 B6 U. y+ ~5 T* F
  tag_p_t body1_face;7 v  h6 z/ `, p/ |" l1 V9 T- L
  tag_p_t body2_face;
0 x. U! `( t1 L2 U9 y, l  tag_t point1_face1;
+ W/ p3 p4 |% Q& ^/ v. `  tag_t point2_face2;
4 G8 u; W- G: T9 j  int i;
9 r" V' t' y' \& z4 K  F7 t: i* X1 c  tag_t* point1;
1 H0 ~2 U! j# ?: ^) S; A% F  tag_t* point2;
0 r/ k! K/ F1 J2 c2 {  int results;
9 i. n' Y0 E( C( v, s% c0 o9 C! }1 X* {; ?- G5 q5 b) g& c/ y1 |# ~
  //1、获得对话框中的值
1 K: ~) `: m5 j# O, c
8 l6 f( B+ J) o5 ?  //选择的第一个体,找出来taggedObjects1
$ q7 @+ s' i( j7 D! [& s. J  std::vector<NXOpen::TaggedObject*>taggedObjects1;
. u$ ~, W3 R, C- T8 Q/ _, V+ _/ T  PropertyList *bodycollectorlist1=touchselect1->GetProperties();
8 m, B/ J# `) d0 V6 ?  taggedObjects1=bodycollectorlist1->GetTaggedObjectVector("SelectedObjects");
* Z* U5 k, z' i( b; L+ A  delete bodycollectorlist1;
  }3 g, v5 b! z  bodycollectorlist1=NULL;, }# C3 N' b2 N3 N% ^
  enterbody1=taggedObjects1[0]->Tag();. w- k! O5 U/ `7 \$ p

' v+ G7 G# X; a  //选择的第一个体,找出来taggedObjects1
+ {" f* f4 J* H1 A  std::vector<NXOpen::TaggedObject*>taggedObjects2;
+ G- X; @3 y& z3 h  PropertyList *bodycollectorlist2=touchselect2->GetProperties();
% W; {/ |+ \1 S. J6 k  taggedObjects2=bodycollectorlist2->GetTaggedObjectVector("SelectedObjects");
+ K- }6 ?; A. L9 t9 z8 Z! p" f  delete bodycollectorlist2;. z  i5 Z( ]; W8 a/ x3 X; ^: U; p$ a
  bodycollectorlist2=NULL;
* ^* g3 n) x# n' s, O  enterbody2=taggedObjects2[0]->Tag();) b) }0 l: A- [- n% k( w# Z

1 z5 A% V0 a% U3 h" ^2 I- }, D; J  //接触面颜色提取: C/ _5 j. }) O7 S9 T1 p
  int colora;4 A1 y- G0 G  l% b
  PropertyList *thecolor=touchucolor1->GetProperties();8 t; g4 L+ `$ V" w. u* ~7 r
  colora=thecolor->GetInteger("value");  f$ n" z' p  E
  touchcolor=(int)colora;! g/ W. C9 M& L; ?2 X

6 J/ X* Y# v  k. Y' m  //2、判断干涉
, j, [9 I, X4 ]( A. s  UF_initialize();
. V' o/ S6 Q% B) ^' Z$ b  UF_MODL_check_interference(enterbody1,1,&enterbody2,&results);
+ t* m( ?; C! ]- N6 L7 X) Q   /*tag_t target, ) f$ u$ _4 b; O" q/ J7 x
   int num_tools,
4 m' X1 V8 t( ~' B5 m, g   tag_t * tools,0 u4 a8 A6 A! I# T
   int * results*/
& @# N; a5 ]8 N: f  if(results==1)
7 E1 R% d  S# G/ J' X8 ?  {% y9 v2 C7 ?- i- x4 Q% y0 h
   uc1601("选择实体存在干涉,请检查后重新选择",1);: m3 v6 _1 n8 E; k8 g( x9 L
   enterbody1=NULL;2 L, s; y. |, }9 e, M3 C/ ^3 N% H
   enterbody2=NULL;* ?( ~% R% z/ y( K
  }
0 E" P/ x! W  f       else if(results==2)9 q1 p# `) Z6 u, @4 ]  i( ~
  {  @$ B* O% S: |" d7 P* w# E
   uc1601("选择实体存在间隙,请检查后重新选择",1);
/ Z1 |2 n  D' l# _& w+ P9 P8 T" U) A      enterbody1=NULL;
- ?; k/ e& e( l3 X: X1 _2 F) C      enterbody2=NULL;/ D$ m0 T  ^/ V2 e6 E
  }
# l) E( A) k/ [5 i& q# W      else* q; q/ Y0 K7 q8 P" j; N6 }3 Z9 I
  {6 \+ o1 ^/ }* ], g4 N
3 l+ e+ F- V* }8 B0 z
  //2、找到最小距离所在位置
% o% t0 D& A# \* z  [% n+ ~  UF_SF_find_minimum_distance(enterbody1,enterbody2,mindist,body1_point,body2_point);0 Y% _5 c. `, b. y

  J' P& M  o  B# B; ~* p! a0 S2 ~    //3、创建两个点
: T. Z/ V8 e" T/ J  UF_CURVE_create_point(body1_point,point1);" I% [/ @4 i' _2 j0 l  E
  UF_CURVE_create_point(body2_point,point2);1 R$ L$ a$ a# y3 k# ~
( [( v1 h9 t+ Z2 m: V5 y7 i
  //4、找到两个点所在的面
  K- }4 ]& `. Z9 u  UF_SO_ask_parents(point1[3],UF_SO_ASK_ALL_PARENTS,&n_parents1,&body1_face);; g1 q# E$ C% {7 I9 M1 x3 {; U
  for (i=0; i<n_parents1; i++)
9 @1 \9 |3 Q. x; k  {# H+ W; y! M1 G% d$ T7 `3 s* ?
   int type=0, subtype=0;6 H/ k  ?2 s# i' K6 X
   UF_OBJ_ask_type_and_subtype(body1_face[i], &type, &subtype);
3 m3 X  o9 C( A   if (type==70 && subtype==2);3 O2 D9 y- D; q& Y7 R
  }7 T0 a2 {: i/ a
  point1_face1=body1_face[i];
: i# E( H# U: N$ ^% L) e1 r+ `  UF_SO_ask_parents(point2[3],UF_SO_ASK_ALL_PARENTS,&n_parents2,&body2_face);  p3 Z2 s" I# U
  for (i=0; i<n_parents2; i++)
2 }; e! e- L2 [9 t7 S4 n; Z' o  {8 a0 B$ T# w, K3 T5 p, k4 L2 {4 t. R
   int type=0, subtype=0;1 U$ M& a, t$ x4 h$ b7 l
   UF_OBJ_ask_type_and_subtype(body2_face[i], &type, &subtype);0 ^/ d  T0 d( {
   if (type==70 && subtype==2);
& q8 s6 ^2 g) \  g& [, B0 Y  }
+ ^' i6 `. w; @% u# m; x  M  point2_face2=body2_face[i];  J& k; D2 a- D1 X1 n
2 Q6 H! V% v# @& X+ I) W5 w
  //5、给两个面涂色& W" Q3 o% T% j, X8 z: ^
  UF_OBJ_set_color(point1_face1,touchcolor);( `0 f! q; A- D( h* w& e" y- ^. A5 {
  UF_OBJ_set_color(point2_face2,touchcolor);
- R6 w, K/ e# F# p" ^. ?; U  }  k: O6 T- ?. C+ c6 O
  UF_terminate ();  
) P- R2 ^+ k1 X5 S$ b& y; q

对控件的命名

对控件的命名

界面

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

你这个 代码 运行没报错吗??
, r- B4 r* O- C1 g' l
& r6 A: t' d' U; @( f+ }/ o选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置matriple 6 g! z% J1 D- p8 X
2 l2 Q, _9 r3 F8 \3 m" `
你的意思应该是 选择两个体  如果有接触面 就加个颜色
# a- J2 q7 h- h& O4 T7 |& K# P- a8 l: {( l
对吗?
上海点团信息科技有限公司,承接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,
* ~4 ~- {* g2 u8 f7 T
效果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( )
# a. q& c3 B% L# K# S实体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
' n: ~. l$ K5 ]你这个 代码 运行没报错吗??% X: `) {. I7 t+ u
. W2 ]0 V* ^; w0 Q$ J5 |
选择对象  你可以直接用 体的选择器   可以不用这个对象的  要不然要设置ma ...

. k( T( g' G8 S没报错,也没效果,╮(╯▽╰)╭1 R) z9 l1 N7 R0 I* R2 Q! C- ]: S
就是这个意思,如果有接触面,接触面就加个颜色
上海点团信息科技有限公司,承接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) [  ~: N. H( A& R2 U: m# j
效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
" j* u+ _7 ]* U& p1 g$ B0 E8 l6 O实体1和实体2所有的懂得面进行判断,这样 ...
5 m$ a1 S, v8 X* R
效果一1,谢谢!
" F6 w3 s- {4 G: c, X% u' x8 q我属于完全瞎写,新手,呵呵
上海点团信息科技有限公司,承接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
. d' W+ \- ]9 T9 j, O效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )# L# e( L  s: V, _- {
实体1和实体2所有的懂得面进行判断,这样 ...

5 i3 p, S! F; K$ ], LUF_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
6 x4 {' |4 v1 [  Wresponsible for allocating it with an array size of 7 A( f" q* f! F$ X8 D3 R
num_tools. 5 {. b" }- n3 _) q+ J
= 1 -> there is interference
6 P6 }; T4 w* {# I& n0 n/ N= 2 -> no interference 2 |- ~# U/ c0 ?$ g+ `+ o8 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

干扰对每个工具的身体状态。打电话的人是
7 O' k+ h& c/ m: @' O8 o- ]8 X5 Z负责分配数组的大小
$ T- U- o" y+ k! \num_tools。
6 j: F4 U% W' O; H8 }* k= 1 - >有干扰; N2 z3 P; j2 I0 r
= 2 - >没有干扰- i6 ]8 V0 H2 {) F! ]/ t" U
= 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二次开发专题模块培训报名开始啦

    我知道了