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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 5 C" u2 Z, A! _- `
8 C9 {" [2 _6 x1 @4 X$ M1 H
请教:
& l- x1 F7 z0 X! f% ?1 D       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:; |* p* B+ e& ]  ]
1.jpg
% f* ~! ~# {6 d# D点击OK后,能输出正确的信息:$ I8 k( s; U0 _
2.jpg ' N" h( a' r3 n  D% C" C
再之后,报错:, Y  Q$ X  f( b/ K" h
3.jpg * N4 F% c& j; f2 Y3 N
4.jpg / I4 D  E' {" k) \  C" L9 a
日志信息显示的错误:/ e$ I5 Q& _3 n+ X
5.jpg 3 t! u# r3 F) }# G: K
主要代码:3 B6 k8 W+ ?4 C, h! U/ C
int BodySelect::apply_cb()! c; F2 a, z& W
{7 O5 _7 c- {- r3 L  T
    int errorCode = 0;, M3 G- q7 R+ V. y4 g+ m2 v* G8 w
    try  s$ D- ~4 C) t( h7 d
    {
8 P* n; N  Z/ y, n5 k                PropertyList *pList = bodySelect0->GetProperties();
) E6 C) A( m. K/ S& D* u) D* s! x                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");8 u# f2 N+ }+ X) Q
                delete pList;# Y; W6 o$ B1 t
                pList = NULL;
, K2 w/ t  A1 C, z+ ^' p" n1 c. w                                ; W* U  q6 e9 Y7 ?
                Body *body;
; @+ O( m+ q% Z+ F                int allCount = 0 , iSolid = 0, iSheet = 0 ;
. b6 N  y0 q" H! a" ^; ~; ^
) C7 ]) `8 P0 Y9 [5 e* W                allCount = (int)vTags.size();
7 m/ i; u3 e1 m# q# O# b9 |' G: k                for (int i=0;i<allCount;i++)
8 d6 }0 p5 U4 g: f  O                {/ Z- q* Y' Q2 L' N' v; {
                        body = dynamic_cast<Body *>(vTags
);. t" W1 n- i, r1 f1 s  V" [
                        if (body->IsSolidBody()): I4 V+ m/ D- e" |* e
                                iSolid++;
2 p9 A. }1 v) {' `                        else if(body->IsSheetBody())
! K* r+ Y9 {$ z' c( d6 w% i                                iSheet++;
# a+ [" T# _8 J- |( ^                }
9 }+ ]8 i3 k7 {" R3 p/ [
0 C8 I* E# a9 e  Q2 Z                uc1601("Read select objects Finish!",1);4 V. q; {7 c  E
                char chs[256]="";. w3 ]( c* G3 d' j! S7 i. T7 y1 h. j" m

4 u+ ^% J3 y1 C0 `1 q. b8 m/ L% i) S' h! H* ?
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);/ m% s  A. W  z+ ]; g$ F4 F
                uc1601(chs,1);2 B4 j) a, X3 ?% Y
    }, u4 P+ ]5 L6 N+ w
    caTCh(exception& ex)
/ k$ J- t4 q$ W# k3 o* K    {
+ C" U# W" c8 V: i9 ~$ c6 C5 m8 _3 Y        //---- Enter your exception handling code here -----8 Y% S( F5 q" d+ K' S3 `* l
        errorCode = 1;- y$ y& h) l/ B+ ~# W- E
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
/ |, c' D, w! F- ]    }
: a8 ?2 Q6 J% U% ]* M( ]    return errorCode;* d4 o' t4 Q6 a9 O0 Y. y
}

1 k8 ?; l/ q& c' [/ `; z, H# R& [# C) j
不知道你有遇到过类似的情况吗??
" z. }7 A; x  q0 P/ V8 K1 m问题是出在哪里呢??
' Y" A& c! n0 K2 m; @9 ?也没有什么内存需要再释放的呀
0 R  N" D/ I) F+ c  A
: h, e  P0 {! E; ^. |/ P3 o: `* c" @5 o5 `9 [
上海点团信息科技有限公司,承接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);
2 u% R2 f% P! P4 W6 x4 Q! A
5 E% B: y4 r+ Q  _7 M1 A$ s7 }, |0 Z: b/ l
5 b9 ?% g- M: u" Q  }8 m+ W& V& F
   body = dynamic_cast<Body *>(vTags[i]); 2 u' o$ _: p/ t; `( c: K- ~

2 e% f( ~. ]  c  x$ Z" r; r% F) ?8 Z! J/ H- n3 e7 k- p2 [3 i
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

smthan 发表于 2014-6-2 13:14:43

smthan 板凳

2014-6-2 13:14:43

本帖最后由 smthan 于 2014-6-2 14:04 编辑
  V# }) V6 C( ^/ j
. ^0 r, n, e9 o谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()- Z( C. G2 |0 a& u/ E% L7 E
{
$ u1 ]% n+ m; f1 j; w6 \    int errorCode = 0;
3 `5 Y' F" M0 Y& f. t7 m/ ]$ N    try
  r8 v5 r+ N- Q* L& L( H    {, }+ r: G) I( e" D% D! g9 h. c8 j
                PropertyList *pList = bodySelect0->GetProperties();
( B) |: _4 [- Q                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
- T( |: p1 N, _/ E7 v                delete pList;$ S4 s: A# `; _
                pList = NULL;
* n" m0 t/ F/ v. }: o
3 L: J# x8 M& ^8 F6 z# X1 ~( K                Body *body;% u8 x1 ^/ T5 Z( \) P- c6 [( ]8 [
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
  j$ @7 T  Z! B/ [$ e- c. ]
" ]. C7 A* E. b6 K                allCount = (int)vTags.size();
% Y1 p8 ^1 q0 c( x2 X                for (int i=0;i<allCount;i++)5 N7 L0 b" F+ f( m
                {
9 \! \  p8 w) s6 N' X; b                        body = dynamic_cast<Body *>(vTags【i】);# ^8 n2 o% d, q, b8 }& W
                        if (body->IsSolidBody())8 |' _* Z" n# ^  g
                                iSolid++;
: u5 p0 u0 M" p6 n0 |                        else if(body->IsSheetBody())( p4 c6 A2 K! Q0 b) W* A5 ^0 {2 a. T
                                iSheet++;
8 `: S- H- n; v" L8 j                }
# A$ y( }" i& I2 ?3 E, S# X# d( E                char chs[256]="";0 a# C& ]  }. \5 i" x2 \1 ]
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);3 d' W+ ]) q2 R; Q4 v
                uc1601(chs,1);
7 H% w' M# t; ~" j) P9 y3 O2 O    }
: J/ C# J6 M1 V, w8 Y    catch(exception& ex)
2 w9 ~# N' w8 }    {+ Q7 d$ T% j7 s' m( n
        //---- Enter your exception handling code here -----
6 _' b6 d" ~, j7 u7 w! U        errorCode = 1;- m" v: X" c% @5 v& W
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());! a" M& q6 C! ~! R( d5 z
    }9 g6 r! M" _4 |

5 L2 A7 ^, l2 W' F* N    return errorCode;# J8 N  k$ \0 F5 ~7 R3 s7 L
}  e) u' B0 a! n. Y" i) ~0 Y
/ T2 _0 C' Q2 b+ o2 ]2 T
有点不知所措了,请指点!!!
5 r; J9 J' Z9 ~2 m5 A7 f, q" V8 a5 O9 g; b6 u; n

' g, e* b- H* s5 @  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  F/ D7 w; \- M8 c3 u1 P2 B
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
, g6 o+ K; B2 o2 U6 n# ]0 }{
# d( @. r8 v( w$ I    int er ...

9 ]. ]5 z( Q5 Y$ _0 w  j: h你是 NX75 的吧 . ]) G6 Z* P) V8 G! p1 W  i

4 P4 b0 ]8 s, @+ @- `  o4 F这个的确有问题 ,你用 选择对象 selection 代替吧
  q; x; e& V6 r
6 J- L- L# G. n) T+ z设置一个 mask; H3 ?& w8 i6 D) t0 ~
6 l0 I* X, w; \. H
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了