PLM之家PLMHome-工业软件与AI结合践行者

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 3 z, E- R+ `( Z" i: i* r9 f6 M( H
) n* d- m6 N5 }, n1 l1 I6 V
请教:
7 S; \" Z5 ]- h- V  i       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:- q9 R6 e/ T2 a/ w
1.jpg , N2 s# P( Q4 B
点击OK后,能输出正确的信息:
4 _/ w1 g; J5 m5 W/ C" d3 Y, I2 h( w 2.jpg
7 W6 O) T8 C# g- R$ w再之后,报错:. d  O+ K: ]1 p5 F' G
3.jpg
7 a  {- P' d+ a& L' g 4.jpg
: q+ e  ?0 v$ W1 R9 V+ o0 s日志信息显示的错误:' w) K" L9 M* D
5.jpg ! B8 O6 m2 ~' s/ ^3 t
主要代码:
. d7 C/ d1 J8 E4 |4 pint BodySelect::apply_cb()4 B/ Y! S9 F2 P3 ?' A4 t
{
) i) O6 j/ X! |& z    int errorCode = 0;, O" j, ?: Q+ l' r6 I& V
    try
. P0 I0 y# a# t* ]4 [    {
7 \- `" h2 z* Z7 a% C) q                PropertyList *pList = bodySelect0->GetProperties();; v  w. c4 _+ t4 i
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");% B* D6 P6 H: g6 j' _
                delete pList;
, U. e8 d9 W/ g6 y& h                pList = NULL;( ^% W+ I$ `9 q! d' F# p4 m1 A
                                
' |$ G9 L3 k% f                Body *body;- S& K4 `. g" ]# ?- G. P$ `/ A; C
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
% |4 D9 H' u; w0 F# u, b6 p/ k0 `
7 c$ v! k1 }+ F! E* F                allCount = (int)vTags.size();
4 u& A( \5 x2 s- s                for (int i=0;i<allCount;i++)
+ [3 O) J, d& C                {
0 W" h7 b3 l, o! s# D" n6 L                        body = dynamic_cast<Body *>(vTags
);
. y% n0 O: _  |; [" Q                        if (body->IsSolidBody()): M1 T+ w8 R' m( R! G% ~: v
                                iSolid++;: \  |- M! q% I- E, ?2 M: `
                        else if(body->IsSheetBody())* }" B1 o# p7 ^4 Y
                                iSheet++;2 F; Y6 }2 H6 @1 s" _& B3 S( L
                }/ B# G7 ^( h- @

. C8 z1 ~2 e; Z                uc1601("Read select objects Finish!",1);' R/ ^6 S& ]* f( C9 p6 H+ W+ ?
                char chs[256]="";
( L; D/ t! ?4 }# x/ ]. r/ P
) Q# P0 [' M8 q0 ]+ P; K7 X! K
) G" b* w: C% {: g( m3 Y" z                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
) u( R8 H" ?6 R" H" J% K                uc1601(chs,1);! ]5 _' d* n7 m* g* s! g" {
    }$ M( F; B, u: L, }" u5 }5 m
    caTCh(exception& ex)
  ?; s! G3 W9 u) \! E2 n# X" n( M    {
  ?8 U! W4 f; i1 h9 P2 m+ H$ c        //---- Enter your exception handling code here -----  ]" U8 _5 X7 ~
        errorCode = 1;. V3 |, d: r0 I" p  o
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
- a4 T3 X0 [5 K" l    }2 U9 P1 r" ?: N) S: ~7 x
    return errorCode;! \+ g1 L. d0 @* a$ K& G
}

" P) y: J) S# X% u% @; B% b
' Z7 d4 q+ R& Z( d; L不知道你有遇到过类似的情况吗??
) F' d! ]9 J" V问题是出在哪里呢??
" C. ^+ ]4 T) W7 d" V8 G: h6 B4 }0 c也没有什么内存需要再释放的呀1 r7 [2 ]7 p, i( k. [- e9 q
  i8 w6 x0 i0 e% |* R2 [3 d: b

0 `; K  F- X) `  V
上海点团信息科技有限公司,承接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);
1 W# f* I( ?9 M) w) Q
: [* L; e$ E! }. U) k/ t! ?3 B# \( G( u  _  k" z
+ |9 G8 U% m  W) C2 J& V2 P& B
   body = dynamic_cast<Body *>(vTags[i]);
& l" M0 b# t1 O7 [3 P# R; N/ _2 `( e4 \6 I: {# g+ E# [7 \. |
4 A' f3 S1 s" v) a
上海点团信息科技有限公司,承接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 编辑 # c* ]5 }" Q+ X+ U( m& ]
, G3 P  _7 w5 L4 Y
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
8 A7 Z) _& D* }! [{
8 T! R  g9 W9 X' i- J    int errorCode = 0;: {* U0 y" z' ^4 D) z0 q6 B4 X
    try
( _. b4 C  D" g3 w  Y" ]# p1 A- e    {
( H2 k/ @. n$ W0 m, _# t5 [. C                PropertyList *pList = bodySelect0->GetProperties();! ^  w! L# r  \- r
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");7 D% e0 c& l7 t% r* d* }7 O& ~
                delete pList;
7 ], S$ z% U% E; t* p6 ?' u                pList = NULL;' g) V. u) E8 Y: Y& y

7 c: Z8 w0 _1 J) F& F                Body *body;
( G; y+ l8 G1 Q0 {                int allCount = 0 , iSolid = 0, iSheet = 0 ;
( g3 o0 X9 z$ r. ^3 P2 }' s' @( z4 E0 n, Z) q/ R
                allCount = (int)vTags.size();
- D1 [  U% }% P- e                for (int i=0;i<allCount;i++)
3 A7 j! Q8 j$ c                {
- ?* w1 A% y: p! S                        body = dynamic_cast<Body *>(vTags【i】);6 P( P' H3 ]9 c2 j& z6 k. X8 B- A  m
                        if (body->IsSolidBody()); R1 G6 m. N. Y. t
                                iSolid++;" a. ^) E9 z0 d
                        else if(body->IsSheetBody())  E; t7 k! K# ]- q* i
                                iSheet++;. b$ x  D( H/ s& R, Z% r
                }4 \( G0 a/ n8 z3 |, O5 `
                char chs[256]="";+ V' Y, ?$ R( p' F
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
: T! D3 V) q: m7 \                uc1601(chs,1);
' x1 T+ t' S9 x# l0 E/ o& }    }
) p/ h' l' n5 D4 {: }5 r    catch(exception& ex)
8 l  M. e, i3 C6 j: d& d    {
0 A( |; H/ k: l6 e8 [! q        //---- Enter your exception handling code here -----% Z4 L6 r0 N+ B- B& N5 v) D
        errorCode = 1;
, t' T; J* Y" d9 H7 a2 |4 _; d        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());: \% n0 w) }0 w
    }
6 ?. r  U0 c7 M) W* l
4 {2 G9 P& w9 e3 z    return errorCode;
8 o# A) A, C+ P}
- _6 I" p7 F5 `$ i. G& W. q1 z1 x/ k- ?# P( x& M6 z* s3 N" y: w
有点不知所措了,请指点!!!8 i+ m; n* w9 N: N, H6 G
4 T/ U5 w9 a2 m0 P* }

  E3 ]; K+ m) t
上海点团信息科技有限公司,承接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:14* T, ?! K+ l8 r3 j' F1 G7 t
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
* q$ }, A' @, ], m' I{
. [& g% L  j" L$ _. h    int er ...

3 O1 G1 E, e' }9 O# j6 T你是 NX75 的吧
& x: T5 U; I, [5 ^6 Z
8 D2 R+ d% Y1 K2 z' d$ i这个的确有问题 ,你用 选择对象 selection 代替吧
' S- ^1 D% P. k# Q8 R& y9 q: ]/ q# t
设置一个 mask
! \+ b& [- q' d; Z8 t) ~2 k: G% W  V5 O( P" o
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了