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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
1 Z" g. W4 T) L6 m6 A) P: B& u0 O" v" w9 F: u- V& T, i
请教:- \1 b/ t, K! O, U3 K1 G; z" A
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:' N9 u% P' G- {
1.jpg
9 z- m  v4 l6 }% |/ `3 ^点击OK后,能输出正确的信息:
0 r* w2 D8 U& I; Y1 N8 i6 `% v 2.jpg
9 D, j3 A; d* Y' U2 |/ Z0 @$ y) {再之后,报错:: u/ U4 E5 `; P% U, m2 V4 O
3.jpg
4 M; Q; A9 y) g! P6 U0 o4 a+ x 4.jpg 0 {% M' v# [8 _3 N4 h
日志信息显示的错误:
( U3 U! u& \$ }; h" B! T 5.jpg
/ S1 g1 \3 j. S0 h5 \) [主要代码:" H+ _5 M, R  q0 {. K( u/ u
int BodySelect::apply_cb()
( ^# e9 h# |2 f{
. o( l3 X; ~! `$ Q1 X9 L6 r) R    int errorCode = 0;
; M8 H- L/ U9 E# f6 N! N    try. n& e+ ]3 ]% k- t3 f( P
    {
6 d2 C! D! G# i" N! g7 |                PropertyList *pList = bodySelect0->GetProperties();7 b& A0 G7 l# R9 g/ ]
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
) {4 L, T; ^# H4 e7 {                delete pList;
, w$ j, l' ^# O/ F  G                pList = NULL;
$ x& C+ v; W/ z( t                                
$ p1 E. b9 y& c9 D( D                Body *body;
3 I5 w# B9 W: J3 @6 ]: e: J                int allCount = 0 , iSolid = 0, iSheet = 0 ;
/ U- F6 ~" a3 c6 ]' h
( e" `  w2 u' }! n9 H4 {$ {                allCount = (int)vTags.size();
* ^& n) O2 v5 W' a                for (int i=0;i<allCount;i++)2 l" `/ q; i' A5 v* w( h+ y  M* S. p
                {
/ Z8 x4 \3 ^3 u/ O                        body = dynamic_cast<Body *>(vTags
);8 U9 k# i( j; G) B. w* d: B, l
                        if (body->IsSolidBody())3 e( |( f1 I. l, H7 ^6 ]! H' r
                                iSolid++;9 ^& ?, L) b) S& m. @: N& a
                        else if(body->IsSheetBody())- {7 s3 b4 ]' w9 i' A4 V( h) l
                                iSheet++;; g( o/ C' v. H8 s) E1 J; w$ l
                }
* L( Y: R( F' J5 z) x+ H: X2 S  Z& G3 [) y# }% L
                uc1601("Read select objects Finish!",1);1 u5 E+ M( `3 t
                char chs[256]="";
8 x! q4 Z. Q- L  f9 b2 T( x  f
( ^& D. w1 f/ ~* |8 L2 K; P# D
* i2 h' z/ d' X- h+ ^* w* I                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);# Y( E3 t4 a2 Z
                uc1601(chs,1);! o1 F! I0 X( Z) A" R- C, ]0 b
    }
* e- I* t  ?" n: Y    caTCh(exception& ex)
: M" k& ]" `6 \* W; j    {
7 C3 ^9 J- j8 x0 k* s; K' A/ F        //---- Enter your exception handling code here -----
7 R( Y0 `$ a( M. m% f" b) V        errorCode = 1;
9 `: F4 N& v" J- ]        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
* c9 [& V5 v) B: H( h- }) z    }% F7 A* i5 W4 I  y& v( @0 s
    return errorCode;9 v# x7 \* t0 R2 c% O; z9 Z; f
}
9 b! w) r: u: t
$ R5 S  R& H5 C( E2 u8 {
不知道你有遇到过类似的情况吗??
( ?# L0 T) ?; N% d* M问题是出在哪里呢??" l& F, l1 }: c7 w4 ^
也没有什么内存需要再释放的呀9 i, u0 m7 w, s$ p8 x

  ^4 e6 z& E0 _  R% T+ T$ ~# Y/ ~% E* ?( Y' |0 p% k4 w* }5 O" T, N
上海点团信息科技有限公司,承接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);
( f' h$ v, {: y6 w! p) U" y
$ Q7 G0 |. U, y7 w0 |
) U2 Q) A/ [. d: W& ^; E7 |0 I. X) X2 g9 ~" I9 i( `* J% z
   body = dynamic_cast<Body *>(vTags[i]); ; n  |3 `3 ^- O( I
5 @( e4 ~- T: f) ?! j
( {7 Y1 C/ w& M
上海点团信息科技有限公司,承接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 编辑 7 r( O& J2 L1 E  H
+ `: i- B4 `) }' R8 z) f
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()) J: Q/ w9 e; e+ E* {- m+ a
{7 o- Y6 k/ s$ u$ x
    int errorCode = 0;/ n; I2 |4 ~+ p7 F# Q; N% g0 B
    try
+ U& Y) e" R1 q9 W    {1 F5 \( f2 n. K8 Y( t
                PropertyList *pList = bodySelect0->GetProperties();  I7 C/ P) s7 }: q0 \
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");( ^* s# J, d9 @3 P( j4 O% l
                delete pList;
* k* i& K4 M" J/ ^, [; T7 _                pList = NULL;5 V4 q" `3 H' _) H, @$ k

+ a+ i1 C  X. _$ v' E# Y2 _* h                Body *body;
* [2 n1 r4 p+ V/ G$ d. ^% G9 \                int allCount = 0 , iSolid = 0, iSheet = 0 ;
4 V& C  I$ `: Z+ {9 q4 R. b6 B! y* \, r- ~$ [- f) q
                allCount = (int)vTags.size();
3 s' e/ e% t6 M: {; M9 y- L                for (int i=0;i<allCount;i++)
7 n* \- ?" }' ~$ J# p9 _                {
& o8 e) s. s$ E! J                        body = dynamic_cast<Body *>(vTags【i】);
2 }0 v2 ^; v. ^/ b2 }( c                        if (body->IsSolidBody())1 Y* x0 ^4 h7 i9 s& q! j; t
                                iSolid++;
. `/ K! M, \4 k1 D6 }                        else if(body->IsSheetBody())
2 a4 D+ Z4 }: l: U. Q; ~6 f( w                                iSheet++;
4 p9 R7 u% H& e- Q1 K* f                }# ]" q3 Y) ~1 q2 }
                char chs[256]="";8 @# p+ Y$ ]4 @6 U4 T
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
0 R. J6 ?$ f1 m6 _) O                uc1601(chs,1);$ M7 R# v+ B9 J+ V0 M7 ]
    }
, P- B: t. F9 J1 y    catch(exception& ex)
3 l" ^/ G$ F) C    {% y5 `( U4 S4 p, g, Q/ X
        //---- Enter your exception handling code here -----3 G8 E$ l+ z: j" [+ ~/ C% k! v
        errorCode = 1;+ V% C4 U2 W& F' @! O
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
3 B- q- j: P- W    }
% Z  h4 Z1 ~3 C
4 k1 E  I2 y3 B+ O* B6 Z: g    return errorCode;  e# y4 X8 x; r7 U
}; e3 ^9 V$ b7 J9 F$ i

+ m, s& m# D/ w; Y  L3 ]有点不知所措了,请指点!!!0 B8 k+ c2 u" x* O! }

! g1 ~, C! n% G' C. [- Z
  B% n& ]1 O) M$ j
上海点团信息科技有限公司,承接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
/ R$ e- g+ h4 v& u8 T. S) T4 E8 I谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()7 Y/ S4 g% g5 ~' g# S6 U( ~
{
* [+ Y' a$ S# g9 \: Y7 ^* S    int er ...

. f) j# X4 \+ }你是 NX75 的吧 : `* T$ |* R' ?

1 p" y/ t( Y! C# A' v* ^这个的确有问题 ,你用 选择对象 selection 代替吧 2 B7 I! ~7 v5 s' b: ~! u
1 k+ J6 ]  w6 c! C& h5 k4 @, `
设置一个 mask
* i* J; r" i- l8 U; b/ M8 Z1 j. f/ j0 u6 s$ I, F2 T
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了