PLM之家PLMHome-国产软件践行者

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

smthan 发表于 2014-6-1 10:06:15 |阅读模式

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
8 M, k) x3 g- q6 i# b
/ w. g# K* a# M* G5 V' o 请教:# u& H1 r' ]% ]. d( V8 [# f" m
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
! N4 o; Z. O# J! p4 q1 }+ P7 w 1.jpg 0 v7 r$ g0 w* Q4 @( x  g0 k+ |# H
点击OK后,能输出正确的信息:
* K( y+ B8 X' R9 r. E 2.jpg 4 L' y8 v3 g/ K5 t) b7 R9 f
再之后,报错:: U. V' `+ T8 f- Y% b
3.jpg
8 t: C) d' v3 C  B4 u9 f8 O 4.jpg 6 _0 w6 N$ a! M8 @/ G
日志信息显示的错误:
4 h* U6 X+ _/ x 5.jpg
8 o4 E4 I2 `# j/ v主要代码:
( i7 W/ ^: O6 a4 ?7 G( I/ F9 D# P/ Z+ Uint BodySelect::apply_cb()
, P! E1 y/ h; g, C: ?' E$ U0 Y7 ]8 A{* m1 J8 [& t7 C) W$ I
    int errorCode = 0;# a, J, U1 _  c1 T: o) s3 s1 N
    try
5 G2 U$ t, I( f" P    {+ x7 v) n  C+ G( D- o% g- Q+ u
                PropertyList *pList = bodySelect0->GetProperties();
1 Y# O  l6 O' L( V+ {                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");- P4 N: k) \% M2 v' L8 V9 `" N
                delete pList;
. l! U6 [9 n- U+ c                pList = NULL;
& c5 Z/ F1 U) r+ `( J& g                                
" W& A' \( N8 q" ~9 f, W                Body *body;0 A6 a( u' A+ `" ^( s+ e
                int allCount = 0 , iSolid = 0, iSheet = 0 ;, F. I( M; |% n% g0 a

6 w: \5 J1 A7 r7 W+ I                allCount = (int)vTags.size();
) g$ _6 A# z0 \3 B1 w                for (int i=0;i<allCount;i++)" I: s- ~. d! w# k8 b
                {8 |) d8 y+ \5 J: `* i8 f
                        body = dynamic_cast<Body *>(vTags
);
; n7 [+ h4 T- [' `6 {0 c) u                        if (body->IsSolidBody())8 ?& ~9 t% o. ^, |9 G
                                iSolid++;+ u/ B0 ^9 J) `5 e! K+ w0 p
                        else if(body->IsSheetBody())' P2 [% h4 R- o" z: Q$ B% j  o- T
                                iSheet++;
' A: o0 w" U+ N) H                }
1 B2 x( y4 J+ }6 P) N3 J! i/ |+ G* Q9 z
                uc1601("Read select objects Finish!",1);
: ~* Q$ Q$ o" t2 _; p8 ]3 `. U* I                char chs[256]="";
- N. A8 k! u0 L- c8 f& |) n, y% K% q" B! o3 m  M
8 N4 M7 _7 N* [2 K, b# C% |
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);& m, s1 O; V4 [# `: M3 P( f8 Q, n
                uc1601(chs,1);2 k2 W0 _7 D4 `; b
    }5 H9 U9 U+ ~" f& P& Q% l! E9 O
    caTCh(exception& ex)
. o" G" s, M+ g/ g3 M    {
8 P: D! X$ \* @( r# ^5 f        //---- Enter your exception handling code here -----
0 C% C$ T4 p% a        errorCode = 1;" S+ Q* L, `+ @) ~9 B: J+ D
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
  B3 t% U5 e/ ]9 ~+ z* {    }
2 n" o4 X' W. g, y3 G    return errorCode;$ Z) x% G! y; ?5 c
}

. \, }+ Y* H3 `1 j' E. Y' \% q5 R$ W7 C9 m9 ^1 b
不知道你有遇到过类似的情况吗??
0 t9 p" ^, y0 m/ C( a* |问题是出在哪里呢??: s. t0 f- i9 M, b( v/ `
也没有什么内存需要再释放的呀
3 G! C6 A/ x- _4 Q2 Y! B9 e& N2 N$ Q  a
3 A! O8 S* M0 f' u* v" t
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复3

admin 发表于 2014-6-1 18:00:18

admin 沙发

2014-6-1 18:00:18

   body = dynamic_cast<Body *>(vTags); : z( G4 k% \) M. h& r; \) e

6 m7 R& n$ g$ f: q! ?( P$ j: ]5 v: `1 f0 \( C6 h! Y) G: l8 D

- s6 N  x8 `* `+ Z* n% q% z   body = dynamic_cast<Body *>(vTags[i]);
8 k- M- d3 z% J( h3 f3 M8 d. _8 _6 ?9 o& s( L6 h

1 d2 c% g& J0 H* p+ R' A6 v0 C
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

smthan 发表于 2014-6-2 13:14:43

smthan 板凳

2014-6-2 13:14:43

本帖最后由 smthan 于 2014-6-2 14:04 编辑
! X% W8 R( I3 e4 F7 L4 V' U2 H; a2 x+ w
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb(), Z- D9 T5 v- ^' q% _% V
{2 ^/ H) Q" a4 \' T$ g0 V/ K
    int errorCode = 0;
& |7 e! O4 V  v8 t9 l* f    try
. z8 W5 ~. ^" W/ d    {/ C2 D8 l+ M9 o* _2 z; _. Y0 C+ N
                PropertyList *pList = bodySelect0->GetProperties();
) h" D1 a3 P" N                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");- e+ |% x& r3 e
                delete pList;2 }$ A$ F$ Y! ?% w" f: B1 i) U
                pList = NULL;) `0 F* q4 R- i

2 [7 A$ {; m$ h3 g* N                Body *body;" l5 d/ k' J3 G
                int allCount = 0 , iSolid = 0, iSheet = 0 ;( k, E  H' X9 r3 R( P

. X- Z* r* p# H                allCount = (int)vTags.size();
4 U- U* B- l6 y9 g2 x8 M' x" S                for (int i=0;i<allCount;i++)  q* D- i8 G' S3 f8 b1 Z/ Y
                {
8 y. S6 f- E3 O. i                        body = dynamic_cast<Body *>(vTags【i】);5 S3 f! e6 ?/ V1 I' Y! k3 @& h
                        if (body->IsSolidBody()); G7 o# M) y& O- M
                                iSolid++;4 @4 K4 V2 R0 h+ e; O0 y  G
                        else if(body->IsSheetBody())
! i. }  R1 }- w& M                                iSheet++;
! S  u3 f6 q( F! l1 @4 b4 D1 F                }. I4 [4 G+ O* Y. `
                char chs[256]="";1 M: Q& W$ w- T9 j
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
( S3 \0 p4 d( C! p* O& w9 w9 `                uc1601(chs,1);7 c" _) i' O7 Z1 M! p$ o; A" O
    }
0 G4 h$ a6 h, c% A    catch(exception& ex)
* x* }6 C# @; _2 I$ u: u    {
4 y0 h( b. u2 t# Y1 E0 s# }        //---- Enter your exception handling code here -----
' u) M% M% _; t  I/ i, \  z        errorCode = 1;
' r. O$ X; [& F5 |        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
( `5 ^+ ~5 S: E2 b; q, y$ {    }
0 s; L/ g" H5 x' ]7 t5 i0 G) Z7 I8 [  q6 u- y$ u
    return errorCode;5 V4 J$ r) q+ J! x
}/ v, y& K) l2 R) d0 }! U
3 c$ X8 H* p9 |8 Q/ R
有点不知所措了,请指点!!!) Y) v' U. `1 f. [7 O' F) B; {
/ Q" s, \, ]) X/ G9 y# [
) l% E3 }& J7 T, _4 K) ]
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

admin 发表于 2014-6-7 17:34:23

admin 地板

2014-6-7 17:34:23

smthan 发表于 2014-6-2 05:149 S+ n# Q* c4 ?* a8 z7 M2 B
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
+ Z1 |" _" t; U3 ~( F2 k0 ~' Z" m" w{
6 j3 k! h. Q& z) A2 G1 m* }" E0 }7 D    int er ...
/ {2 E3 S' b. G0 f) _" y
你是 NX75 的吧
( f8 o! [4 Z9 }" \, ?8 B6 _$ o' h
; Y4 h1 k0 ~  a9 H1 V$ u1 X这个的确有问题 ,你用 选择对象 selection 代替吧 # u- C/ r( f! [0 o6 p9 y4 R

. Z& H+ I) W+ p1 ^1 t- F! j9 R设置一个 mask
  v8 r2 C- b6 d4 }7 U# e  B$ o
* M: a- ^; o! M1 z* s
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了