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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 ; X+ X3 ^8 W+ p) M0 O  I
+ ^) j' O2 K. ^! c7 K! @7 N
请教:
2 @" N0 |2 w7 {/ U       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
, {/ H; K/ x& R% b 1.jpg
( R7 l" T2 `- H. o( \7 f$ X点击OK后,能输出正确的信息:5 z" q# c1 x! l: r9 }
2.jpg 4 S6 r  H) z# d4 z
再之后,报错:6 a+ m4 n2 \5 f6 Y) _
3.jpg
8 X7 O$ v  x. }6 ?1 f, ]  E7 m- q 4.jpg
3 V% Y5 l; g& S$ S日志信息显示的错误:5 t0 P6 e( t; R# b2 Y; Q
5.jpg
5 w, z2 j* w. A: z, j! Y+ M主要代码:
, S% @6 N: e) }- @6 J) c7 Lint BodySelect::apply_cb()
' T* q. Z1 U3 j. ?# _: g; q2 K{
8 q; x/ f. t$ E5 ~- O, p3 {& \    int errorCode = 0;0 L" N8 c! j3 w3 _" I3 x
    try" M1 r8 G% K$ j# K1 B
    {
$ g$ a, I8 T4 f4 ?. X                PropertyList *pList = bodySelect0->GetProperties();
0 a% n* d" W) Q/ u; e& d7 c& h                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");# W, O0 c1 D9 @3 P' n- J  `& F
                delete pList;9 W+ Y: z- p. H2 l' T5 {
                pList = NULL;
/ U- K0 e2 R  U                                
% V/ x+ n' V& f& {; M* I; g; v                Body *body;
# W0 ^2 j, M) K9 ~6 a* D' d                int allCount = 0 , iSolid = 0, iSheet = 0 ;$ s7 f. q. R# A! j& R' U& R
% [( m/ R: I  p
                allCount = (int)vTags.size();2 Z" V$ T% R$ n2 N1 W
                for (int i=0;i<allCount;i++)
! Q( [7 y% }7 z4 |' X                {
9 H& o6 U4 r* U# i- Q" S                        body = dynamic_cast<Body *>(vTags
);+ M" S3 J1 V  L$ [
                        if (body->IsSolidBody())
; O  `4 Z# k3 s, T5 J                                iSolid++;
( S$ Y  e2 t3 Y0 O' ]  _" ?; P                        else if(body->IsSheetBody()): X9 D$ A5 l; {$ J
                                iSheet++;
! F( q* |+ }8 p$ ]; g, A                }- x) Y9 I& w( |" h( Q7 f' o
1 J; r/ w; K4 Q% N7 [7 Z) O+ E* W
                uc1601("Read select objects Finish!",1);% V) X$ J6 i# v/ D1 P
                char chs[256]="";
0 d& \6 R1 Z! B& C/ e0 U) a
8 x% ^% n( P: m) B! C/ @. v- k% L
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);8 [8 O5 Q( h  Q% U" D( X2 H
                uc1601(chs,1);
5 Q. f! O( J' x0 F    }0 T- d$ t- v( `2 A, _9 t
    caTCh(exception& ex)
8 v9 d% }$ R9 ~$ x( [    {
+ P% z, Z3 q* P/ D' V        //---- Enter your exception handling code here -----/ m* t' F/ l3 S
        errorCode = 1;- E& f3 n& I9 o3 S% g
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
" Y+ q" F! R" a% b+ J. l; S    }' e$ K) Q$ j( ~0 r, y
    return errorCode;
- h! }# ~! T& [' ]' |}

7 R+ x- y% H1 f9 V2 J: ^" D
& @" E; @/ J  D+ t- H3 m) v不知道你有遇到过类似的情况吗??
- ]6 N; K/ c$ C+ w: M1 _7 P问题是出在哪里呢??
9 C* e3 Y2 X; G0 S7 o& h* I也没有什么内存需要再释放的呀
( R) t" N1 z* ^7 P. \: j, o, A/ U; s4 m9 Z* ~3 W
; d' l1 e" a" v+ U2 G7 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);
4 v3 A6 J" W; A3 f/ W* U3 X& j9 S% Y
$ Y9 @2 u: z0 Y2 ^. A' f
! B  t9 O8 q/ _8 s
   body = dynamic_cast<Body *>(vTags[i]); " g, s5 c4 h3 D9 V7 B

& w* c! M+ q1 b! r$ k$ t1 p9 I/ o* v1 Q4 r% E
上海点团信息科技有限公司,承接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 编辑
5 L) W; l5 p' |1 @' \) P" ~
# k0 x$ ?2 s7 R谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
& i6 z% O) i  `& G{& G1 o9 W5 H/ S+ n" w
    int errorCode = 0;  @0 g& x5 j0 ]& o/ T! ^# v. W
    try
6 x) p$ D$ D0 W6 x9 ]    {: v' B7 X4 N4 S) m  v" Q2 W
                PropertyList *pList = bodySelect0->GetProperties();0 ?0 q* c, Z. H! E, g0 n8 l2 r
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
4 C; a) N) {. g% I8 p( q                delete pList;- L2 k* }# X0 l7 X( W
                pList = NULL;( T8 Z+ W) A8 L

' ^/ i9 ^8 H) M. L' V1 J* t9 C2 |0 l7 o                Body *body;% \3 A  Y# P4 v6 K
                int allCount = 0 , iSolid = 0, iSheet = 0 ;8 R) N( R' I8 X: c4 `

- l# o2 X* e5 D' J                allCount = (int)vTags.size();
/ A0 q7 Z" Z6 s4 ~                for (int i=0;i<allCount;i++)5 z5 R" |) G/ h$ o- A
                {
; r, |) [* n1 L' b+ `; p                        body = dynamic_cast<Body *>(vTags【i】);) w/ A& r) p0 |- T9 \4 X
                        if (body->IsSolidBody())' W0 @4 G; H" [( _' V9 l1 y. W/ ^
                                iSolid++;
+ }5 s6 m( C& l& B% M                        else if(body->IsSheetBody()); c8 U  ?+ ^* U% c
                                iSheet++;
9 A  J  _2 x0 r! d, y                }6 O5 E+ Q+ f0 u+ l6 e  o
                char chs[256]="";
0 X+ h* s4 r" y4 d5 X$ Z0 S! f                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
; o8 U: {1 ?! E. B' ^, ~6 ~- e, R/ u                uc1601(chs,1);
6 j! ~' }0 }0 S" W# Z) F: _: Y2 A    }
) K+ o; u  |. j3 u% X- M0 O# g    catch(exception& ex)
6 o' ~; A& ]! h/ w! v    {
+ _3 K1 P/ N- O) I6 m        //---- Enter your exception handling code here -----
* _0 W; ~& ?6 N1 {        errorCode = 1;
3 [1 V$ J" d; X- `. p8 {7 |        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
8 N; ]6 h: s8 Z    }& p. }1 Q1 |' E0 N# \) ^! ^

+ A' _6 ^' p( v    return errorCode;
3 C8 z6 B: X6 d$ K1 b}9 L* c" P! v  q% y. g$ U. V
1 C1 J6 j5 _: j2 P: V
有点不知所措了,请指点!!!
- }& ~/ j4 n. @6 U) T& X
! U+ |' J) A. d+ O7 o1 i( N- m% _& I5 P( v7 c
上海点团信息科技有限公司,承接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
0 c7 {3 T# ]/ n, C1 X" ~4 n1 G+ P谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()8 W- C. n7 y0 ?3 ]6 j- @
{
, P$ c1 O6 P+ `3 ^+ h: u4 _4 z    int er ...

: k- F5 p; O2 t1 j; k3 f你是 NX75 的吧 4 h2 I" V, m; |; `/ C7 B

7 |; s. q0 p1 q9 |) M! W* C1 `这个的确有问题 ,你用 选择对象 selection 代替吧 # {' w  |/ N- ?1 y& L

0 _! T$ m7 ]& Z, P设置一个 mask! }- H6 `; O, O. T) m& J8 y" T
9 Q* e2 {& ~9 j4 z" K
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了