PLM之家PLMHome-工业软件践行者

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

3

主题

53

回帖

551

积分

高级会员

积分
551
发表于 2014-6-1 10:06:15 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
# m6 ?4 b, V6 |: e+ o  r& \
* s) N* ~! ]8 T7 C: ?" U# C; R% W 请教:
; Q3 P; n4 K& D! V6 f       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
; H5 a5 v4 [1 x6 G) M0 w  p" @' k 1.jpg 1 ?4 z. a- o8 }0 [. l; V4 E- v3 t
点击OK后,能输出正确的信息:& k* X8 K' w; t# u* i3 X
2.jpg 3 v" ^# B, K1 K: J3 n( [
再之后,报错:
4 c& u  o; M( L. k) G3 g/ [8 Z 3.jpg / {) L% s& X8 F1 k8 w5 j" H# |) ]
4.jpg # Z% u! R$ W5 |' a& _4 |: O
日志信息显示的错误:
* C1 x. x. E6 m) N) y 5.jpg - y( i2 [) Y! S% U, c0 z) \, f( }
主要代码:' _* x+ m$ v' B  |" ~0 t& r$ j
int BodySelect::apply_cb()0 i* ~6 S$ a. T0 A4 w
{
  ~5 Q* f6 a8 Y1 H9 m    int errorCode = 0;
. R% h. [& k, \8 N: \% |( e    try# h' ~) B' u/ o( o; @5 z! f
    {
, L" c2 d% H3 A                PropertyList *pList = bodySelect0->GetProperties();7 s) y! }3 C9 G- o# {
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
* i; u) G9 S! }3 ^& U7 x                delete pList;2 C4 F  J0 N$ `: b8 j. d$ S
                pList = NULL;
5 s) q9 N% T+ R# C1 v; E; s+ E                                ; e7 \, E# M; H, R% v8 A
                Body *body;) ?5 y# e  J0 c: `" \/ \
                int allCount = 0 , iSolid = 0, iSheet = 0 ;: V4 P/ f" c. [$ s$ M% D  o% q
! N9 J  G3 Q+ H% e7 r( @
                allCount = (int)vTags.size();; m  E! z1 g8 T2 }
                for (int i=0;i<allCount;i++)
/ A+ q: c; j$ P5 y) h; `                {3 p' m; Q+ \) I% @9 B3 Y
                        body = dynamic_cast<Body *>(vTags
);
" k. n* g0 T7 r3 }# i                        if (body->IsSolidBody())
  b7 _- u# ~7 t                                iSolid++;9 H: m0 F* g% J9 r* {, n
                        else if(body->IsSheetBody())6 B- O. c, b1 g' b
                                iSheet++;
. Q  m+ `- r9 c. x2 r" E9 @                }
9 [" g" q8 V: l# d8 N" v4 T) U3 K
                uc1601("Read select objects Finish!",1);
6 R5 p) _! F" F# R6 d                char chs[256]="";8 \6 U! G1 t! _5 B7 S1 W
! I1 l' ?6 r; U9 d5 ]: _

5 i9 f6 o2 Q" {4 l" D1 w                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
/ [' Q, o& F  u+ a                uc1601(chs,1);
6 E5 d: E* i6 a& s6 N    }  g+ m2 T" _8 o3 s$ Q
    caTCh(exception& ex)' g& _1 J9 x( Y6 h6 T7 T3 E
    {  F! x6 n6 A% [0 m- K
        //---- Enter your exception handling code here -----" s4 S/ n& \( J" W6 n: x: a
        errorCode = 1;. \; I' _& Y" x. P2 \7 m
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());  C5 I1 }" ^3 S) B4 S; a! g* d
    }, ^9 n' P4 w0 S8 ?7 z9 c3 ~9 {" @. v
    return errorCode;& j6 S- A$ Z" e5 J5 O
}

" Y2 Z& \1 [! O( k+ |
: f# V! L$ _- [' E0 f0 p5 h' z不知道你有遇到过类似的情况吗??% m6 O: p/ |  q; d4 O. a9 J" \% `) _
问题是出在哪里呢??
* k. l; x# R0 q, ^* a. q也没有什么内存需要再释放的呀
: B% \+ b8 Z& c- ^3 ?
9 ~. a* }7 I3 G, M) p# S) r- b! o% Z, f  H# R- B
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

全部回复3

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2014-6-1 18:00:18 | 显示全部楼层
   body = dynamic_cast<Body *>(vTags);
1 q' F# \( |. _7 T5 N2 B* n* F5 D4 b
1 Q* E6 b) A" ?  m) N
  H$ L; b7 {6 z: y8 E
( W, x# k3 _5 M" N% a   body = dynamic_cast<Body *>(vTags[i]);
: P  g( c! O+ V+ i/ F9 k5 z1 q/ v4 C0 F+ s, N2 F
$ {1 B5 X7 c3 l7 W) A* g
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

3

主题

53

回帖

551

积分

高级会员

积分
551
 楼主| 发表于 2014-6-2 13:14:43 | 显示全部楼层
本帖最后由 smthan 于 2014-6-2 14:04 编辑 ! C7 Q( I/ L  T4 `; b
" L0 L$ v' Q' A0 \  T: ~: f
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
% l5 z. T. Y! t# P{
3 Y5 q+ [, G5 q    int errorCode = 0;
& t2 u6 U# S2 y5 w5 q    try/ ]$ D7 v6 B0 ^! h
    {
8 G1 b2 ^/ A" l. b5 X% t$ V                PropertyList *pList = bodySelect0->GetProperties();
+ w7 z7 f" h4 }2 `8 n, T                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");8 H! ]2 L! @" ^' H) ?: o
                delete pList;
& E. E& x  s9 U$ y                pList = NULL;
8 V* r( f! I1 s8 _. q  c( t6 S- p& _, b8 `
                Body *body;0 I. n# O5 S% _1 X) N0 M  M& y
                int allCount = 0 , iSolid = 0, iSheet = 0 ;9 `! ?( P" V: U  A# j) c: g

2 V# Z# E# s( i% ?5 l$ C+ L                allCount = (int)vTags.size();
: ]5 U- B3 e$ `( r" t. p" A' g$ D1 ^                for (int i=0;i<allCount;i++)
( R" _" `- t: V# Z* M                {
) y. y! q% B+ t& t7 n: d# j2 V                        body = dynamic_cast<Body *>(vTags【i】);3 ~4 C1 R% H) d' {, g* v
                        if (body->IsSolidBody()): [5 k4 x& T! D5 p, T: O  f
                                iSolid++;
3 j) W# P9 ~" Q  |/ ^  n  ]                        else if(body->IsSheetBody())" K2 v1 B: R2 m/ R
                                iSheet++;
) e* ^# J( A2 `4 Q4 n0 z                }
4 y' L) K! w* y% i+ m                char chs[256]="";
( |7 O1 C& t1 Y/ C# C* w5 x% Y                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);5 E  k" x5 F7 c6 L. e
                uc1601(chs,1);
" y, T- e; d2 m, B1 B    }- [* Z( T1 J$ |6 `
    catch(exception& ex), ^0 ^! c* W0 a* l
    {# O( R3 Q6 q6 d& S, [  |" F
        //---- Enter your exception handling code here -----4 q1 |# t  P- K' X0 _# [. P
        errorCode = 1;
8 N2 o& e' N3 A! [        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
0 y9 X. \" C# o* {) A& N    }
9 u4 I/ H% O/ _: f/ V( L& A" |/ C  L& r- ?% A1 a& _$ l: a- H, d
    return errorCode;3 Q- j2 Q. [3 Y# b) m8 e' E
}
: Y0 N7 u2 [0 X. K% x4 b9 J2 q( X: b" z7 j; [$ o
有点不知所措了,请指点!!!5 a7 N3 }; C4 T( A8 k. A

9 |3 F- G! L" M& Y6 o
: ~2 ?4 w9 K0 v2 U1 T. ^& o
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2014-6-7 17:34:23 | 显示全部楼层
smthan 发表于 2014-6-2 05:14" {" E  e8 [* [3 @( e+ h$ m
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb(), w" {9 w+ D5 \; \5 a0 V: {9 K
{
* J) W+ B6 R2 o" K8 T# T    int er ...

7 t6 h& s# J6 I' P你是 NX75 的吧
- P# {7 v( b) U2 A) R5 y* v# Z! W; x" b8 `5 \; ]+ m
这个的确有问题 ,你用 选择对象 selection 代替吧
9 g& ^7 P" n0 L8 U9 Q+ B7 w! V
6 R4 E# ^0 `+ H! x设置一个 mask+ U* m# R  l, M' q1 E8 q

4 i" F0 z% r& n, \9 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二次开发专题模块培训报名开始啦

    我知道了