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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
& t7 m" S, F* D' z( w/ B. M, }/ ?& f1 V% v4 m
请教:
/ F7 D' n  {: v9 d5 o% N       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
0 b" F, d9 W4 R' [, _) N+ m9 b 1.jpg 3 a4 t0 M# ]3 o+ S& B7 _9 v
点击OK后,能输出正确的信息:9 h, {" T; Y4 t+ {
2.jpg
% e) C/ u6 O8 j3 n. ~再之后,报错:( Q% S4 R: K8 P
3.jpg
+ t  ^' K. F' j+ m 4.jpg 6 G1 V' B9 Q" c2 S# Q$ O# W+ W4 b) d
日志信息显示的错误:
7 g$ N* l8 L) h 5.jpg 6 [" W* v3 u" q  B  k
主要代码:
0 z6 a3 z, G* ?$ P+ u6 e  Hint BodySelect::apply_cb()
: a7 x) W* X: M" r, O. a3 x{
+ L; b9 k3 G5 [, n  |* H/ \! n/ g+ F    int errorCode = 0;
! O' c& ~! H9 l& o: i    try
# ^, J4 }- S- L: ?2 |1 ]; M    {
, [* J. ]; W3 ]& w                PropertyList *pList = bodySelect0->GetProperties();2 x3 L4 n  o* R
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
6 {: e6 h* D& J8 U  H+ A9 j                delete pList;
6 v5 K6 s; I" D7 r8 K, Z                pList = NULL;. w0 ?2 q& O, [$ Y# p3 k# y
                                ) z* ]3 O% T2 |$ s
                Body *body;
1 Q! S. V" W7 _3 K                int allCount = 0 , iSolid = 0, iSheet = 0 ;
' h: E% Y& G) z
7 m5 `- a* x5 R  K                allCount = (int)vTags.size();
/ J' z3 K) u5 q4 h2 l( b                for (int i=0;i<allCount;i++)
5 S, h' x4 `9 Q) z2 K/ ^& c                {( [; r9 F& s( k' V* I
                        body = dynamic_cast<Body *>(vTags
);0 [: A+ I' M9 R) i* `
                        if (body->IsSolidBody())5 ^2 R, X9 t4 v) l. H  d1 J
                                iSolid++;
/ a9 Y0 ^8 c- V) ~+ P! x                        else if(body->IsSheetBody())- S& P# N3 p! c: {7 {
                                iSheet++;1 b' K1 ?( s: ?, K& W' N$ l
                }
; _; N. t! J; Z* w, \- y- S/ s/ `% n- d1 j/ \! h- K9 P
                uc1601("Read select objects Finish!",1);
- U* s, j( K1 O& q' v  O                char chs[256]="";
5 o: ^5 b5 A( S. s% A
; ]- b( a0 d7 g+ b) u  X' A" M- O# a8 G' K
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
" m- c3 O% {4 S) h                uc1601(chs,1);
5 d% R2 O& c- ~5 \' J4 n+ f    }
) o. a6 i" M2 O4 l. }6 }0 E    caTCh(exception& ex)
- u+ T: J1 W+ F% X/ w: K7 b    {
- [% K! S/ t* _/ a' o; B        //---- Enter your exception handling code here -----) \6 P$ k5 b* v$ f
        errorCode = 1;
1 }- D# Y3 F: ~4 o1 C/ @. u        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
/ r- \! ~5 {2 V3 O5 n    }; w8 G6 m, Q4 V, w( @
    return errorCode;
, G/ }$ f  U) c% h) ~}
4 |4 I2 p% B9 ~, W" p0 Z" v
# m( _& c; p  d5 D2 ?
不知道你有遇到过类似的情况吗??
6 l" ^: L2 R" k4 F' \" v: b问题是出在哪里呢??3 ?9 Q/ f8 X1 f4 b7 f" D: J
也没有什么内存需要再释放的呀
; J0 r" p. _! \+ F. B
4 g: k8 A. U) D0 S
+ ^' K/ V; ^3 {" h
上海点团信息科技有限公司,承接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); 4 }6 j/ ]7 F# {) m9 P+ y: S) ]* i

4 p3 }8 z) ?( \8 R: p4 ?: [
3 U( g* m. E- m  c2 d, T
( \+ b- l% s1 w2 u- n* I4 F   body = dynamic_cast<Body *>(vTags[i]);
9 z- p+ s: B' [; c$ ^% g: I# ~
; _/ f. f8 Y, i# m4 s, |4 K7 [% A) w- I/ J
上海点团信息科技有限公司,承接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 编辑
+ x7 v& b9 h# r0 y) @
) o4 R8 }, I2 \谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()) k* s- X( V" }# r/ k
{  `% \! @* ]$ `, W7 a. T
    int errorCode = 0;& K. Q: T. k6 m% ^
    try
- a5 |$ U! r/ E( A' b    {
. x8 U- t+ o( \                PropertyList *pList = bodySelect0->GetProperties();
) N& z9 f& n% R$ v4 T                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
# p: \/ S1 W- c& r$ p                delete pList;
( a( ]6 I# l$ L9 T2 R                pList = NULL;
- _" B9 r, J0 m" o0 z8 s; g8 n7 _2 C- [% e% I& ?. p9 c
                Body *body;
/ B" K5 m4 c8 H, n6 N6 X* n7 q! w                int allCount = 0 , iSolid = 0, iSheet = 0 ;! ~( j( L3 E# F' ?

7 ~) `# `! U: z, v- f4 L                allCount = (int)vTags.size();4 _+ ^) w4 y1 w7 O
                for (int i=0;i<allCount;i++)9 ^1 X: J% u# V. f, u) G% X! [
                {2 e8 A6 D1 X0 V% E
                        body = dynamic_cast<Body *>(vTags【i】);( H+ Z3 K6 ?$ J# u
                        if (body->IsSolidBody())
$ h6 w  G7 r! v3 J* J; N                                iSolid++;
9 X& ]" u2 E! H+ B                        else if(body->IsSheetBody())- F3 b4 @$ A, d
                                iSheet++;  D) [; F, h! K: N
                }
) \9 ^$ j' [1 R3 s                char chs[256]="";5 l' H$ B" A% N. ?1 l
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);' }5 _' m+ Z5 c
                uc1601(chs,1);7 I% E, c* n7 \* i- o
    }5 h' o$ ]9 ]- `2 Z0 O( X* S
    catch(exception& ex)
' c4 C: }9 w7 b7 |" Z    {
1 N9 ^' j$ `4 ^' \        //---- Enter your exception handling code here -----, R! z2 h" \8 o/ K0 R
        errorCode = 1;
4 z: m5 \: Z( O        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* m% g  U. h4 X7 P6 X& o    }
% w5 W6 S6 @8 x" X& S* c5 n  D  J/ Y+ S$ P/ L
    return errorCode;5 r. x7 T+ t# Y: S
}
& c' \$ r0 M$ ?. S! [
0 A* t2 P5 W% }* m有点不知所措了,请指点!!!
$ K% N% z, x/ {/ x3 Z7 |+ r' \
3 H' n' |+ ~% V. m; v" \
2 h& Z& ~, I8 m4 i9 _5 D
上海点团信息科技有限公司,承接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
8 S1 B! {2 y6 d' w$ w7 l谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb(), Z" }) a$ P, U0 H- x
{0 i3 Y- b8 Q  r" I5 l
    int er ...
* U& O$ L& Y7 P. |
你是 NX75 的吧
5 X# c) Y$ U9 w2 I9 r  A% p
8 {# w/ k: B7 f7 g2 j0 I6 [这个的确有问题 ,你用 选择对象 selection 代替吧 1 a' ^, D: w: q/ T8 W

& T, q* z4 T" {6 v* L设置一个 mask$ ~) @% S( K8 h% K
5 s1 q2 J# R; a# R" s) R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了