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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
7 k* i5 r2 f9 V& ?) [: O3 ?! ]0 X9 S2 `6 E# E2 z4 y1 _
请教:3 T5 O/ i6 i1 y" X% p4 s
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:. K, j2 \8 y8 C
1.jpg
( c: ?6 t3 S- f+ U8 a& m! Y点击OK后,能输出正确的信息:
* Q( t  }+ o$ p4 s' m 2.jpg 6 o1 |2 ]6 j. Z' J& C- t+ G4 d
再之后,报错:
+ I, ?  f) K& J$ ~ 3.jpg ! c- y' P. L9 W  B: B6 i
4.jpg # ^$ f0 A: G( r9 Y
日志信息显示的错误:
: E+ y. |& U* v1 r/ m+ P; m 5.jpg % h/ Q- v* [  N7 w
主要代码:1 |1 T4 ~$ z* \) y
int BodySelect::apply_cb()2 c) s, `6 A1 L4 u0 l0 `
{4 `2 M' M8 m8 P( _5 E7 G4 B5 T
    int errorCode = 0;
- ~& o9 Q7 p4 u    try
/ Y+ B6 X/ y0 o    {. o; |0 @( P8 F" H
                PropertyList *pList = bodySelect0->GetProperties();
2 c9 o9 g% X4 W                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
. c# F+ L& b/ c7 `5 |                delete pList;+ w0 J4 ]$ h5 P8 m+ [* k
                pList = NULL;
- ~: X$ P1 }% P! i, R2 C                                ) i6 i- r. e7 W) b5 S+ @/ {. j
                Body *body;
0 B, b8 H  @/ Z6 q                int allCount = 0 , iSolid = 0, iSheet = 0 ;
! l. R2 D" o9 F7 \" w$ ?, G$ g, V( ?  w0 n) g% S2 n
                allCount = (int)vTags.size();
2 `! g0 ~  C- y: D5 k, ]3 B; `                for (int i=0;i<allCount;i++)8 z+ y, C" h1 O% m# C' h* x
                {. V( C$ D* c3 J7 u/ o) t( D
                        body = dynamic_cast<Body *>(vTags
);  |3 r- H. h# ]! \
                        if (body->IsSolidBody())
0 n+ j+ F3 z- n                                iSolid++;1 Q) J4 ]* q' ~) n7 w" p
                        else if(body->IsSheetBody())
5 Y6 @# [& F# E/ g" ?. x                                iSheet++;
4 m$ w! V' {6 u; a  K                }
& |5 J7 R' w7 C, i( E0 r4 c
9 N0 @1 P+ A) Z# l4 z" d                uc1601("Read select objects Finish!",1);% n0 T: o; @1 n& ~) L# o. @; E( B
                char chs[256]="";  P/ y+ |  f: e+ d4 C+ _
2 a" W& M/ e# |! T

6 t0 n5 Q; m$ q4 J                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);- ?  g: W$ R: C. m$ p
                uc1601(chs,1);
$ ?" E5 H6 u( v! m$ D. R3 h    }
! {' I% V' D* M8 V8 n% n    caTCh(exception& ex)
0 {; D: Q' I4 i$ m* s" y# ?  F& u7 J    {2 v1 q+ k' l  {+ Q! p! \
        //---- Enter your exception handling code here -----/ z, s' L, Y9 s8 b1 r
        errorCode = 1;9 J6 Q3 V& K$ r; P1 R$ N+ c
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
8 `" R' \" t- E% u    }
' [- {- B& u  J- j    return errorCode;
$ ?* g9 m8 q7 Z0 C4 t}

8 T) b! y4 G! q! w9 F( I$ R$ v+ w& V4 e9 M6 u
不知道你有遇到过类似的情况吗??2 y% _: f6 z' m( d: w% o- H
问题是出在哪里呢??
* b0 O4 Y  i+ P8 K$ y也没有什么内存需要再释放的呀$ L8 U6 a/ l/ _0 Z' |
1 V$ j* x& B! m& x& n
+ P0 o2 W& r3 H  m3 |5 d- J+ |
上海点团信息科技有限公司,承接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); ; L1 C$ t8 t- b  \
7 W( Z1 N- b# V' U7 ^, a6 c& Z
$ s1 ^2 T7 s+ ]3 g
1 y% h7 }4 g" W* ?3 R; n  Q5 v
   body = dynamic_cast<Body *>(vTags[i]);
! P; T3 E5 p7 ]7 U) w# n# ?  k7 D5 r4 k" R( J
# r& [# J" {( S4 a; r
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

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

smthan 板凳

2014-6-2 13:14:43

本帖最后由 smthan 于 2014-6-2 14:04 编辑 - }, h- \7 i  c

# ]! e( X6 Q4 Q$ L! o谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()  `  ?7 }1 J* |6 k) U
{5 o3 k4 J2 F$ V/ v  Z* L0 J# P$ a$ l
    int errorCode = 0;
) y% w* W: h. {# h$ M/ I4 R% T    try! f% k; \  N2 A# W( r0 W
    {% l8 _% o( x8 a) ~9 p$ ?  K9 T
                PropertyList *pList = bodySelect0->GetProperties();. e3 Y. V0 J& N+ M, O+ C" ]
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
& k4 m  }$ f4 R& P5 z1 I                delete pList;, n) I7 g  D0 d7 o
                pList = NULL;2 o! A& C$ j# e+ Z* z2 M

2 }6 I5 f1 _9 S, _& |                Body *body;
7 n: P9 V9 X* G5 v$ f( d                int allCount = 0 , iSolid = 0, iSheet = 0 ;
( Q' |, G4 {' \1 t1 w) q) f2 ^5 V* n! P* X: m& ~8 |
                allCount = (int)vTags.size();" V1 s. {4 @% A3 l2 ~/ F" Q0 E( X
                for (int i=0;i<allCount;i++)
% ?  r3 a% M( Q+ m9 Y9 R                {, }( v9 I* ?8 d( x/ R" d9 \
                        body = dynamic_cast<Body *>(vTags【i】);
8 ~% H# Y* G) \% [. o' L4 |1 c                        if (body->IsSolidBody())
2 H4 ^' F, L3 y' ]7 I                                iSolid++;! q3 H4 B. r* v; M
                        else if(body->IsSheetBody())
# s" Y6 U7 m9 g2 t                                iSheet++;: D' O! H4 C1 u3 G
                }
4 l- J7 F9 v) P: C. h( H/ Q                char chs[256]="";
0 g; p1 |; [4 D4 i, C; u                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);1 H. M' m3 g# n+ M+ {
                uc1601(chs,1);4 r% b6 p& ]. T, u" [6 t
    }
# O/ v" I5 m- U& @( C: n    catch(exception& ex)" C% k0 D- k3 d! F" S8 o+ t
    {
9 S3 ~0 H! L  Z7 C3 @        //---- Enter your exception handling code here -----
: V0 W. S) Q! n; z' z7 D0 Q+ d        errorCode = 1;6 h9 F0 b9 m8 G: ?
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
) W/ Y; J) z. L7 \' Q% y9 d" Q, a    }
1 h5 z* R5 V" {; A( A( Y9 v3 D
0 k# P; ~9 C8 b8 ~" C. A" M    return errorCode;
0 m" r5 \/ x; U1 J8 v& d4 z}
* A: ?' ^  l7 d
* q4 v6 }( D0 ?0 f有点不知所措了,请指点!!!/ G' t; f1 ]8 R$ f# L4 i" h

1 l" e# \# o+ o) s% n5 v% }5 N- M( v5 h" G! d$ j0 P
上海点团信息科技有限公司,承接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
! `( G2 y: L6 P2 q: x' Q; p谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
3 t) Z5 R" c$ L1 R' ^{
5 G; P; g/ f$ e$ f1 a( t) `    int er ...

" k, E, }( {8 ]: ]0 Y; q你是 NX75 的吧 . U" o5 ^2 r; p, G' f8 W
, L) G! ~- L# z9 x4 M
这个的确有问题 ,你用 选择对象 selection 代替吧
8 v" k$ |0 j/ N, F1 S* X
. t* {/ D: F1 P设置一个 mask
( e- x! \9 u- o# e3 l) h1 G
$ C7 B' b0 t5 h
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了