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

[已解决] 23 BodyCollector选择容器

  [复制链接]

2014-6-7 17:34:23 3944 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 ^7 C% v8 o3 U' L- k! E' F' ], m! t2 J- r2 Y
请教:
7 Y; A! G/ C* L6 R4 v& a       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
1 O0 O; A1 _1 K; D# a6 C1 Z 1.jpg 4 j- y) N3 p$ K' N5 G' M
点击OK后,能输出正确的信息:
1 l# ^6 n/ l. F( ]( N: j7 M 2.jpg
( T4 A0 {8 S" _5 E  e% }( {4 v1 |再之后,报错:' G' }( S7 _7 y
3.jpg , i; z7 P% S' j. `9 H
4.jpg ' R  m/ t# I# G/ F6 f$ w
日志信息显示的错误:
* s# b! Q9 e1 G  Z" m8 g, J2 k. ~* v/ H 5.jpg 5 e- |3 H, x, n4 v6 Q
主要代码:
) _4 ]' o2 q5 zint BodySelect::apply_cb()
7 d5 F2 H# a4 D) J0 T- l{
" }# f* h! }8 b' ?3 }# ~    int errorCode = 0;
$ R/ f. B' Q- X8 d- h    try
& I% f/ g6 l% C+ C: T$ p. C    {) ?, b+ w6 F! h7 w1 Y0 P( L, a
                PropertyList *pList = bodySelect0->GetProperties();& ?6 O- m. m4 `! m' W% {- S
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");1 v7 W/ u/ v5 J: k( R! f
                delete pList;
" L9 O7 Q0 w, j/ t0 q1 N% D                pList = NULL;4 n/ f. J& O; L/ K% E  B! B
                                5 \6 |& w0 g5 i# H8 B
                Body *body;
& t) L4 \- R9 ?( o% {                int allCount = 0 , iSolid = 0, iSheet = 0 ;& }# i( T$ D  L# r

& M9 p5 Y. b" G( U6 \  ], x3 W2 }                allCount = (int)vTags.size();* a0 m0 w4 r* ?3 v
                for (int i=0;i<allCount;i++)1 t8 }. p& ]* V; {8 G( p) g
                {
% n* T7 ~) H# L5 N/ }) J0 I; b. H                        body = dynamic_cast<Body *>(vTags
);
( `; _- U, ]  j" J# @4 O  I6 G. w+ w6 |                        if (body->IsSolidBody())
7 X$ f; S- X5 Y4 v; j4 j                                iSolid++;- d% m7 m; d( G* k$ a9 {/ t, F* |
                        else if(body->IsSheetBody())
4 n4 `% c' v+ b' b( L8 o& g# w2 T                                iSheet++;5 f  t( i3 a7 G& d* |& i8 e
                }* ?2 L, q$ D# _# \4 ^3 {
# n4 o8 o. W/ }! O8 E7 r
                uc1601("Read select objects Finish!",1);2 i5 q9 k% ?2 j3 o$ F, I, W6 q
                char chs[256]="";& \8 I9 `& S# V- H% o; c. U# u! D
+ h5 T' s5 A& X3 t: O
/ [. j( v5 f- D# w' K. [
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
" d) p7 ^$ R/ g                uc1601(chs,1);
# _( h/ e# j7 x8 a+ m, v7 {7 R' e/ K    }/ V& U6 P6 b) F8 w* k/ J$ ]
    caTCh(exception& ex)& d* m: c0 p* V4 G5 D. N( U
    {5 b9 ]8 [5 C8 g  L# i- @" v
        //---- Enter your exception handling code here -----7 e: r1 Y" r3 W: l2 ^- P9 t+ ~
        errorCode = 1;! v# M8 V  c; n) J( D- t1 P
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());" W4 z( _) L  m& m: v
    }9 [/ H! P3 h, i. N/ v  k
    return errorCode;
$ }( j8 H& C0 L9 \3 b$ y0 x}

" G- b" l8 }" F' _! u0 [& W. l7 t
  |- v4 [/ P/ m# `: x% y不知道你有遇到过类似的情况吗??
9 n& F; A+ S; ~问题是出在哪里呢??: i: M+ P" V1 x0 D* X1 C
也没有什么内存需要再释放的呀% L( ]8 n1 k5 D8 X* k0 M

, ?9 w8 M! V0 D- O8 m1 r/ S. O
% T1 M/ {3 w9 K4 Z" K: ?
上海点团信息科技有限公司,承接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);
* k$ f5 G6 X: F5 D: z) r
5 D5 ?/ p6 y+ N3 ^: |; w# {
$ q' S6 L& F5 i, n
7 A: E4 T8 Q# ^" ]! P+ I   body = dynamic_cast<Body *>(vTags[i]);
% @  v1 D+ M( K
' h4 M5 C/ `/ E  x. R9 e: `, s
上海点团信息科技有限公司,承接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 p7 q. r1 `- i/ [2 ?( F- L7 o. F+ S/ o$ ?5 w) ^" ]0 `6 U0 d% x/ J( f$ ^
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()+ E4 ]- s4 R7 t" \2 _1 {
{3 k! \1 T/ ~4 u8 x
    int errorCode = 0;
9 V7 T7 o6 b0 l: R    try
6 F1 Z' l$ ~: i- N, n, @: E    {* Y# y3 K* _- W$ G6 d, [0 U
                PropertyList *pList = bodySelect0->GetProperties();
7 o  U  |  V. r5 J                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");6 l" r/ ]4 L3 ?9 L" v
                delete pList;9 V" u8 Z0 P& n: d
                pList = NULL;
9 d4 ~5 W7 f( |5 k' m1 _/ e( L
                Body *body;
5 `+ I3 v! h7 u                int allCount = 0 , iSolid = 0, iSheet = 0 ;/ u4 W& c/ O, H  ]

* ]/ c9 J  p; `                allCount = (int)vTags.size();
, {3 @5 y" e7 I  U1 Y  |6 d                for (int i=0;i<allCount;i++)7 p8 t# d" e5 w. V
                {6 P& x, X4 V7 n( e
                        body = dynamic_cast<Body *>(vTags【i】);! @7 T0 j4 a* y$ k! ?' X  P
                        if (body->IsSolidBody())
( ^6 S3 p! b; D; U                                iSolid++;  r8 O2 y( z* Z% [5 G' F
                        else if(body->IsSheetBody())8 J1 p- p+ b8 l9 y4 a
                                iSheet++;
) b' ?, M+ |0 w7 K1 _                }, j' V: Q  v$ B1 E
                char chs[256]="";6 P* m$ K7 {& ], |- `! _7 I3 P- @
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);. f* }; s# p1 w% S  T
                uc1601(chs,1);: f! K/ j0 ~- g* W, X( q7 W
    }
# U0 D2 n& N" I! }$ [* o# m/ \    catch(exception& ex)
+ Z9 {% W: y! [! v0 s% q1 g1 Z: Q    {6 Q7 w* c" B, k. j8 v4 k, C3 d
        //---- Enter your exception handling code here -----0 D& n; @2 W# U( B' I  R
        errorCode = 1;# T( g* z7 u) o5 L
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());5 R) E# t# v2 V/ Z. z- L/ @( h
    }. S+ F) }% R1 @' {& s4 M+ z# A

% U- f9 Y4 o# I5 ]4 Z    return errorCode;& P$ J# Z  w+ V4 q- ^6 T
}" t  u, e' v7 I

/ |! d2 F5 z* C+ ~6 h有点不知所措了,请指点!!!0 Y8 k( X3 l: f1 h0 G9 k
7 g/ X1 T& Y3 W8 i. Y

& c# u7 U  f$ A: s; k! b7 ^) h
上海点团信息科技有限公司,承接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
7 K+ @! D! j2 `6 ?9 Z谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb(), i& N& k: ?' [. {9 \  u
{) v( U: s5 X0 g
    int er ...
& B4 E- K! F; L/ d' o0 {. t
你是 NX75 的吧
% v& Q  k6 A6 [& h0 q7 y+ J7 T# H5 z
( m7 h! i, l  g! Y这个的确有问题 ,你用 选择对象 selection 代替吧   n, |, E$ ^9 L# g9 l  G6 ~
1 R- T9 L- N9 Z' Z
设置一个 mask+ N( Z/ n2 }7 s& f9 @1 u
. n9 k9 `- B* Q" u; }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了