PLM之家PLMHome-工业软件践行者

[已解决] 23 BodyCollector选择容器

  [复制链接]

2014-6-7 17:34:23 3965 3

3

主题

53

回帖

551

积分

高级会员

积分
551
发表于 2014-6-1 10:06:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 ' A8 r6 Z, Z. `4 W3 h% C( e
1 V# C& I7 h* B5 N8 {
请教:
5 [7 }, J; Y$ ^& m2 A  w- R- t7 a       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
* B1 J. l$ y& F$ s- G3 p% X 1.jpg 1 @4 M" _+ G" X
点击OK后,能输出正确的信息:
. X" N, S5 Y9 B' J! |: i$ h* z 2.jpg
" A6 W+ \7 Q3 m% C再之后,报错:, H, _6 l) D' D. t; {% @4 g0 Z
3.jpg   U3 F, w. Y; |1 Z
4.jpg
6 K  f( H  \+ ^日志信息显示的错误:
6 T2 O! ?8 Y/ |3 n* p: f8 b5 L1 N$ d 5.jpg + j8 J& S7 |7 T/ m! H) W8 G4 P$ Z) V* M
主要代码:
# V' _& n, Z0 B2 P, ?* g  sint BodySelect::apply_cb()
3 |3 J& K+ Z4 N3 X; m{0 q5 n# ]3 S; R/ K) o  Q" @" `5 z
    int errorCode = 0;
4 l5 u7 c  C8 g/ r5 n' M8 E    try
& w3 [7 @7 f- X, ]  |    {6 L6 ]' }3 W8 f  B5 }/ W' J  i
                PropertyList *pList = bodySelect0->GetProperties();* w/ Q+ R/ r0 h( q  m
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");/ v* l' t( M: }  _# d+ \% X2 ?6 B
                delete pList;0 X8 B( O( I7 f3 d/ t/ i+ J
                pList = NULL;
( ]% M# H3 d1 \7 ~# Q" S8 j                                + o& b( |; d4 g" g! O. i+ m
                Body *body;% |6 `/ `6 D% z0 C9 ^
                int allCount = 0 , iSolid = 0, iSheet = 0 ;* G0 d' E  I2 j/ H
+ M% ?) o0 Q( n8 r$ P0 R
                allCount = (int)vTags.size();
0 f+ ]. E) j, a' m3 Z                for (int i=0;i<allCount;i++), F3 P& Y" E& Q4 k6 X
                {
! O. r$ C  U; t- \                        body = dynamic_cast<Body *>(vTags
);& Q9 \4 q& k5 O
                        if (body->IsSolidBody())" Z  n" T+ |) Z% i5 d
                                iSolid++;
0 j' E6 s' o7 @4 j$ |& |3 J, C- X                        else if(body->IsSheetBody())/ O7 i, S; g/ y* N) T  `  b
                                iSheet++;
: n) c( R" l$ U9 V; m. p                }( J7 r* |2 N% \
& t% ~" L5 [: S3 ^' g# Y2 [7 [
                uc1601("Read select objects Finish!",1);
( T8 c+ P4 S8 \* [* Z0 o- n                char chs[256]="";
. U* I  c+ _' Z- p; G- Y
# m/ R- g! n: k3 C3 [( n2 A: e4 g/ y
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
& v0 H/ v3 X" n: t                uc1601(chs,1);
! }+ [$ e# s1 n8 s! C, J    }
  R( H0 F/ }) @, u4 j    caTCh(exception& ex)
6 d, ?' l4 s: D' {% B0 W    {
" T- S& I! V  ]7 b) T3 o$ q: j        //---- Enter your exception handling code here -----
4 c) T/ x8 `2 ]- y! o        errorCode = 1;/ J0 p9 c( U( r' ?0 |) q
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
( E  I+ X9 h, k" P7 r7 ?' b    }. N: ]0 u- g% |; c; a0 Y+ j& Y
    return errorCode;( N" Z: Z7 g' P0 w
}
. j/ n) q( _3 K

$ |& j2 K! {" F! b# q不知道你有遇到过类似的情况吗??
) B' F2 ?4 c  L$ @% Z9 i( a问题是出在哪里呢??7 ^0 A. x+ u$ k9 g
也没有什么内存需要再释放的呀* k2 I7 h8 B. f/ J' A& ~$ z
( B6 J- _+ \% V( N- ?4 E3 |  c! G* U9 t5 B

, x- F% H3 y( b5 v4 }
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2014-6-1 18:00:18 | 显示全部楼层
   body = dynamic_cast<Body *>(vTags);
4 [3 ?( e' u7 C* Y" u) W) m7 S. r% ]( @4 U4 m& y5 ]
) o. \  o' m+ |, N0 x
+ w9 T2 B  W% g: y' ?
   body = dynamic_cast<Body *>(vTags[i]);
5 ?' I' b7 ?, Y' c9 H# ~
/ z4 V9 i6 r, R( K# U9 G: P
# a# W# y5 D# H- K7 [0 I! U
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

3

主题

53

回帖

551

积分

高级会员

积分
551
 楼主| 发表于 2014-6-2 13:14:43 | 显示全部楼层
本帖最后由 smthan 于 2014-6-2 14:04 编辑 4 N. \# B* H- R0 \# O5 u
( u8 c2 M# N3 M. n
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
* r$ \6 w0 J! C) W* C9 S1 X) B{. P0 k7 l* x. x& }% \1 r# L+ V9 w
    int errorCode = 0;
( M$ j0 z: ?( d( d; ?: [    try) x" c4 m  L( T9 x( v3 V
    {1 g2 Z: \, ]9 I9 s8 v
                PropertyList *pList = bodySelect0->GetProperties();
4 F' M2 v) s- e/ z                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");+ U0 W3 u7 U" {8 z
                delete pList;- x& ~) [2 T& _0 X+ B
                pList = NULL;( x/ F/ \+ B" Q! j% |

2 H  a/ N6 A* _- x1 O  v  [/ y* p                Body *body;
  [! l+ J* B  F  e4 t                int allCount = 0 , iSolid = 0, iSheet = 0 ;* ~0 ]: K( \6 h  L9 u+ a! H( B

3 C! J$ r3 l" A                allCount = (int)vTags.size();
6 g2 z* F5 s4 t- Z0 ^6 Y7 i4 S% B' a7 i                for (int i=0;i<allCount;i++)  [' V( v& X) i' u/ I
                {
: K( L; w5 A* v- \/ x; U                        body = dynamic_cast<Body *>(vTags【i】);
# i+ u! Q9 d9 W* p# S                        if (body->IsSolidBody())
- N& H5 {8 e- |3 T+ i/ c                                iSolid++;$ ?9 i0 O0 N5 E0 `- r* V" o
                        else if(body->IsSheetBody())
, O, r. U. s# S# o0 ]/ n3 V                                iSheet++;
9 Q( P6 y2 }4 U2 k6 Y& G( u7 Q+ o                }' K) e' t9 o8 e. w* U
                char chs[256]="";! j# Z% W4 E$ V4 [, }' g
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
5 u/ D% P8 x" B                uc1601(chs,1);* z5 Y) o# R: W
    }& T! n6 H3 p& l' D- {, E( V
    catch(exception& ex)4 X! W/ u/ j+ m" }, H% `/ X; y
    {
6 X  G/ K; g  B5 X0 p* s* g" k  q' I        //---- Enter your exception handling code here -----) P: O# Y% U) W% ~; y
        errorCode = 1;% m5 p5 ~3 X7 Q4 i
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());' p1 ?* R; q2 k9 F' X
    }
8 e* ~2 B3 {  z. g  P" g" c# ~9 Z6 L* @
    return errorCode;
5 n% A9 N# [, @; D- k; n+ P) v}
, r; E" s' U& }. R7 m
8 c! `) }/ b* o9 X: N: B" {有点不知所措了,请指点!!!( v( ]' n6 R6 s6 L2 T. ?6 W

# V- N0 ^3 F6 ~! `1 [( q# u. o& o! h/ \, H5 I
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2014-6-7 17:34:23 | 显示全部楼层
smthan 发表于 2014-6-2 05:14
) y! r6 X$ \7 x9 f5 g* J谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
- x+ j$ t0 W. x! G9 }. |  c{- R0 f4 B# r5 ~/ |( Z( u; i; r1 e6 w
    int er ...

) W" H3 n2 a4 [9 U" s1 x3 z" Z你是 NX75 的吧   e8 u) v! s: T# w. l

6 A+ r9 C2 I3 l6 m  G这个的确有问题 ,你用 选择对象 selection 代替吧 ; E4 s, ~1 s: H8 C$ p+ ]3 A

* v$ j0 y+ S% R9 _, T设置一个 mask
4 _0 m  U  s  A) g
4 I8 c/ b$ P1 p- y$ A. Z& f5 O7 E
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了