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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
$ O: `6 h5 ?2 {8 S) U! T4 z. C% W. O7 C, J
请教:6 \) i5 H5 J5 J% q  H0 Z2 R1 }/ U
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
1 |% A! \9 V9 C" ~$ N 1.jpg ; f/ d- i7 X4 Y. n$ |% j, c  G
点击OK后,能输出正确的信息:9 P% S, T, S. l2 Z+ Z) Z; }3 K$ C
2.jpg 2 _& s+ R# d, x( ~/ d
再之后,报错:
6 |2 e1 f2 `) }- l 3.jpg
* \% c* t$ O0 l4 W! ?8 E' e% q 4.jpg
* K' D0 t; s+ T5 {: G日志信息显示的错误:6 W+ u0 @$ H5 G9 _. d6 E! A
5.jpg
6 z' F1 o; |8 \0 t& n3 p3 P+ R主要代码:1 s9 m  ^0 ~# B8 M/ s! S
int BodySelect::apply_cb()7 E* n- I: S, m6 w6 ?& \2 H
{
8 t- W, a4 _$ y- @2 [    int errorCode = 0;
% _2 r! H  `* x% x3 J, R    try, Y. Y, v# `1 m- `( s+ w1 ?  j
    {+ k. H5 W; M  I. n1 `! x% L
                PropertyList *pList = bodySelect0->GetProperties();
7 n2 `0 X- E1 ~$ Z                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
; u" w) d7 z6 s9 z  A# U                delete pList;
1 K, i9 W6 _+ T4 }/ @( z                pList = NULL;
9 X6 A; v. ]- {7 @                                
6 q. ^* f7 m) y, }! M# r& H: C7 v! r                Body *body;5 o$ x$ m8 u* y1 T5 T
                int allCount = 0 , iSolid = 0, iSheet = 0 ;! E: O2 y4 Y0 O( T3 Z; E' w6 p
1 c8 N2 [( b8 ?" ~( h
                allCount = (int)vTags.size();7 e; _1 \1 i0 A+ t, u- T
                for (int i=0;i<allCount;i++)+ W1 J- b9 s" C/ y: l% v  X2 o
                {
+ v* w4 ]$ c1 _! y4 R& M                        body = dynamic_cast<Body *>(vTags
);: i0 ?( l: j# T( {! R5 [
                        if (body->IsSolidBody()), e$ a4 h. ~$ n/ [  P6 O
                                iSolid++;
- v0 L5 Y2 A1 Z3 s* P2 X* v0 K                        else if(body->IsSheetBody())
  N3 c3 c; g% B; R                                iSheet++;" A! \" P, H% Y  k
                }1 m: a/ g! {' J# E/ C1 f4 u
" y% Y( s) v6 B) W
                uc1601("Read select objects Finish!",1);& x( D% M- E' v
                char chs[256]="";+ `" C; _: _( f$ B- e) p: L

# T- m: d9 h  D
7 c( _7 O8 f' }4 ^) R9 H6 A0 p1 `                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
" h* W; D) B5 h1 ]                uc1601(chs,1);# z' D4 L6 |& M8 Q7 B; X
    }
- \$ ^8 b. t& s    caTCh(exception& ex)1 I8 d# X- G- W- _1 {1 _  a
    {
! e% f; _# X+ `* h1 I4 N        //---- Enter your exception handling code here -----
0 V# `' F0 v/ [( S0 d        errorCode = 1;& y6 Z6 P* C7 G
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());, h, x$ m  ~/ D0 m7 ~3 X  x% K
    }7 C8 U/ \+ c, i3 R
    return errorCode;' ]) j8 [$ a$ q; E
}
! Q' y8 x% o8 z9 ~1 ~

5 F6 Y- \4 C3 D6 n% R- f不知道你有遇到过类似的情况吗??; C  K; G, V" b9 V; N+ b
问题是出在哪里呢??5 I* J; w. K% S4 T
也没有什么内存需要再释放的呀2 b3 Q* R2 V# ]' ~5 Q$ \

5 c- Z: _9 s5 i7 w5 M: S* @
* ]1 [! K, a% o$ y0 d" l
上海点团信息科技有限公司,承接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);
: r+ H. I5 A& t# r
; F- _. \5 C- H7 u% S( B* X' p2 P3 d8 B& R$ z
0 n( i, a. S) |9 [3 W! s
   body = dynamic_cast<Body *>(vTags[i]);
% h4 W. U; s# h
9 ?8 s0 P& A; C; Y8 n. h' H" T: @% j: Y& w9 m& P) c" r
上海点团信息科技有限公司,承接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 编辑
/ r6 z0 C  y! O6 I6 b/ G
% r+ w) f; `- v谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()4 a2 v7 V. t, V6 q! v# \. G0 t
{
2 e4 n2 C6 r! K; D  S    int errorCode = 0;0 E# w' g5 W5 Y/ X# I0 ]" i4 `# U
    try, {1 F: w: ]5 i8 e, B
    {1 l# H- |5 _- _( q2 r+ O+ I
                PropertyList *pList = bodySelect0->GetProperties();  L5 e1 e  D1 B- O$ Y
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
/ x' q4 s/ g4 g9 I; W                delete pList;
% H' P! A" v5 E* b! G$ m3 }0 t7 X* a                pList = NULL;' l5 u+ V. v4 N6 d6 L; }2 k
% q! b2 n3 U/ {! E& O; C
                Body *body;" L/ ]# ~: D- Z
                int allCount = 0 , iSolid = 0, iSheet = 0 ;) J3 C0 j( }) G- i) M- D- e+ N

9 z' F/ E9 R8 f$ r                allCount = (int)vTags.size();
0 H6 G% J3 |! c, u: [                for (int i=0;i<allCount;i++)
& o9 D7 J3 M6 v                {
  K' F, Q% Q9 [: s' H6 Q6 \7 R                        body = dynamic_cast<Body *>(vTags【i】);
! S) ^" W- V7 R9 @% |! |                        if (body->IsSolidBody())
2 ^4 v' o6 N1 X: B1 o* v  t                                iSolid++;
, g9 D# ~" r! ], D                        else if(body->IsSheetBody())( K% ~% W1 \5 M5 Y! N, j
                                iSheet++;6 P4 Y0 Q6 X- ^
                }  z6 Q1 T% R5 o* x! l
                char chs[256]="";
" @5 j- _, m" w                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);7 t2 i7 r' E* F# R0 r* d
                uc1601(chs,1);* \% s  R! S7 Z  ]( \+ C
    }
; |: I1 D& a- P# z0 S, c    catch(exception& ex)3 V1 g' b' |2 D) \
    {8 b  P# L+ r+ W8 e. E! L
        //---- Enter your exception handling code here ------ Z: E  J& [: w4 T7 k
        errorCode = 1;
5 m5 }9 U. r$ X( y$ C$ F        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
3 T; Y7 @  v5 ^* v; t1 O7 u    }; f$ @  h" W- u. k) Q$ s

0 B6 m# Q# V. \  x& y0 W/ q    return errorCode;' Z& z( c8 c: t7 j) l
}, _3 w$ w3 T/ o. G. q
0 o/ v- {* ~% i; l! [3 Z6 C
有点不知所措了,请指点!!!: D& J  U' m1 O$ E! i7 r! Y6 Z

  P5 F: y7 _( V2 z1 w! Z$ z
6 n, r- o5 N$ f9 `& W4 w
上海点团信息科技有限公司,承接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
5 w! S& {' D. J6 F& j$ s8 K/ v谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()+ y, R0 W" \( {4 d
{
$ L: ~% [  e. T: t5 b3 k9 C$ |    int er ...
6 u, S# m. |7 ^, N- o
你是 NX75 的吧 , d/ [! r% ~$ n/ d0 u4 s# E

, j4 x8 m3 S; t1 _' h) I这个的确有问题 ,你用 选择对象 selection 代替吧 / z2 W+ k; I* I$ y6 `) t5 X
5 s- H6 \" a5 ]8 j, |
设置一个 mask
3 V4 K3 y$ R: f; s0 p" C+ d1 ]; S8 i/ F
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了