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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 ; B5 K) X  G8 B. {6 Y
. [# Z$ m/ |$ y2 b/ D9 r
请教:
# O! h9 O/ j  D# m3 N/ I; B  p4 A4 Z6 |       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
/ C2 {9 J9 H1 d( k( t* c- P 1.jpg
3 y7 ~3 f4 W& t0 _, q点击OK后,能输出正确的信息:3 ~: ]$ H' U! D- Y
2.jpg
+ e% ^9 z! a3 }% m0 w. M2 m6 O6 _再之后,报错:
* V. E/ F: p; v7 w9 @  n! k" C- @ 3.jpg
9 k8 `0 S; m% ~+ o4 x# W! [: l" j 4.jpg
6 k  p& U; C$ e4 I% u( y3 x4 q2 h日志信息显示的错误:
& P; G8 ^+ ?: \4 N4 H# X5 M 5.jpg
/ W! h! F/ t# K0 `" h主要代码:% w' v+ j% C6 O
int BodySelect::apply_cb()
, m; d! K! K2 z  `4 }, p1 R* K( L{
+ f& L, M: F, R9 B/ w    int errorCode = 0;
, S6 p+ E0 _2 Q- c, v. |    try, f2 Z1 x8 C' J; Y
    {
5 r& @6 o) t" s" R* X, G                PropertyList *pList = bodySelect0->GetProperties();
6 X! A! X4 Z' d8 X                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
% o, h0 V/ [$ F* K! ~4 @6 @                delete pList;
# n$ f6 V5 I7 a4 }5 ?                pList = NULL;
. S, V0 ~. Y4 Y& ^2 ^+ Z& S7 K( m                                
, n$ u' v3 j2 B+ r3 \                Body *body;
+ W+ D; y: _  U8 f2 X+ e& m                int allCount = 0 , iSolid = 0, iSheet = 0 ;9 @9 M: g6 ^0 w
% i6 b; |! w: P, Y$ {
                allCount = (int)vTags.size();8 l  ^* {0 O- w( u7 P4 s0 f
                for (int i=0;i<allCount;i++)* m- ^' R0 S8 x* Z% `6 W
                {
7 {8 r9 Y- x- ~* i- Z, K7 a7 o                        body = dynamic_cast<Body *>(vTags
);
, `0 `+ K) Q4 U) w                        if (body->IsSolidBody()), T. n  X8 S3 g
                                iSolid++;
- b# I' r/ V, q( E; v                        else if(body->IsSheetBody())
( h& }% _- G& ]  d3 h5 n4 ?                                iSheet++;
* h% a- x( Q  |& l/ S% N) N                }3 L' n1 q4 t% I& T0 T

9 n- K6 x0 L1 A9 ~, a                uc1601("Read select objects Finish!",1);+ V: j( y. V" q( S3 ~
                char chs[256]="";) `* O6 u6 B, V

9 z: Q  h) Y$ V( r* T0 Y2 s. p$ r5 i4 e. a) F
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);) p* i( P" ?# A5 q- F
                uc1601(chs,1);
  n6 _: n! O2 `" ^0 ?, k5 J% s    }
; f+ e6 q1 |; s/ ?# B% Y    caTCh(exception& ex)
) w: o$ z! K9 D: K* h    {& s% @+ `; }% w2 z6 q
        //---- Enter your exception handling code here -----
6 L7 S# J/ s- \        errorCode = 1;
1 P- j8 |  h. x        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
2 [: J) s" b9 X6 x) z    }
# W+ T  m, ~4 F+ d6 n' j5 ~9 H    return errorCode;0 O* K! |2 K5 u7 G/ J# @
}
, ]7 v3 W& K: z0 g
( l) D0 B; z1 h' v$ a% V) V
不知道你有遇到过类似的情况吗??6 R3 }/ P, |, p, h- G3 C: a+ r
问题是出在哪里呢??6 `9 _0 o" Q: G; x' Z5 J* w% o
也没有什么内存需要再释放的呀
* k3 I' F7 G- z/ q: a
1 ?0 ]2 K' t2 }" j2 k4 N: M- g4 |( B2 U
上海点团信息科技有限公司,承接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);
( Z. d) ?8 Y/ `0 |0 t5 @* p# b
0 U  O/ N0 R3 Q& l$ l7 R: W4 K* i5 L

% x' D& W% m& O, a( T   body = dynamic_cast<Body *>(vTags[i]);
" ]6 k: m" K$ A' t6 W2 e* m1 U6 k& J: `  B! a/ x1 \2 O
/ _0 p6 H  X; U) N% 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 编辑
4 N; L( _9 K! r. ^/ F' P5 F/ ~/ r& D" C
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
5 y2 i8 O5 G1 \{
* V8 X7 P/ U# n  P- K! u8 c* T    int errorCode = 0;
) d  X9 ]1 j- v2 y/ N* N( `    try0 b2 |* z& D4 a
    {" v4 I# V) s+ H1 S* E
                PropertyList *pList = bodySelect0->GetProperties();5 f$ q1 G' h! f( `' t
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
$ C0 m6 r" G! g4 I3 B9 @                delete pList;  H' ?; E2 r* S* q: t% k. `* B' Q% H: y
                pList = NULL;
% p# Y, }2 \: w, F* z' A! W' e( k. h
                Body *body;+ l, U( @  r! f* D# j, m
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
+ @$ r+ A! R+ v% |5 X+ M5 o
0 K1 V! O( B- ]                allCount = (int)vTags.size();" o! W1 V' D/ C, {" n$ w+ E
                for (int i=0;i<allCount;i++)8 `% d" c' ~7 k; G2 v" _
                {) m& I4 J" D, k: j
                        body = dynamic_cast<Body *>(vTags【i】);$ v' F  r2 A# n" q9 h3 D; ]
                        if (body->IsSolidBody())
$ v! @0 U; j+ L% f                                iSolid++;
5 u) v4 {8 _5 z4 U                        else if(body->IsSheetBody())
  N' l4 j$ o: t4 h, }6 J                                iSheet++;
: J0 ~* ~* H( b6 x                }7 w/ Q, n* x) ]$ h& u! S
                char chs[256]="";
6 ?* @+ F. V/ U- e6 _                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
' B4 H* z3 y2 w. y* j$ ~9 x* Y                uc1601(chs,1);5 d' W; H- z6 C3 P( F, v6 N7 h, b! @
    }
7 Y8 d) A4 M$ J# o! C3 `    catch(exception& ex)! _( `/ L6 }9 [. x: ~
    {: @1 P- W, m' Y0 U3 l% w
        //---- Enter your exception handling code here -----
$ I0 M) U8 K% F) M; @        errorCode = 1;; I1 y" a0 w* c! M7 ?" u
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
; ~* c& k1 W7 X; G, Y& r( w  P    }* _4 B. T1 R6 U" x6 [6 \( `3 b* v
2 X( w0 _& B/ U' Q3 `
    return errorCode;! x- }  F/ n2 F1 i+ Q+ `: U  K
}
: f" `+ ?8 A% _$ ]6 Q* k, M' f# _) ]. M- e4 Y4 D0 E
有点不知所措了,请指点!!!& G! e8 b0 ?, }! Y+ P, E

& m* s1 {+ E- O3 Q
( T  R% _8 i1 x4 e
上海点团信息科技有限公司,承接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:144 ?$ b  V) E  b/ `
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()5 z7 a, b' O2 S4 g9 T
{
4 p' S- C) d* X' S0 {2 X    int er ...
( ^' e. C- Y( ^1 z) L: D
你是 NX75 的吧 " T6 b! ^/ z" @6 `4 n6 F: R
3 `! ~; Q- q. U- m. x
这个的确有问题 ,你用 选择对象 selection 代替吧 : \; m1 ^" V! j0 w& ~- y) W1 w3 O- ^

0 N: M4 y* A( b, K. \& l' Z' _设置一个 mask8 _3 w( G$ r$ |9 P4 a1 `* c  W

. B9 m$ k+ c' m$ [9 a6 K8 F2 S' @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了