查看: 4275|回复: 3

[已解决] 23 BodyCollector选择容器

 火 [复制链接]

3

主题

53

回帖

551

积分

高级会员

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

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

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

×
本帖最后由 smthan 于 2014-6-1 10:09 编辑
4 \2 R- k. x* B0 Y  Z1 [% _. |* X; T5 A* m- r8 A
请教:
" \- j) ?6 M4 X& K1 ?- v8 t       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:- ?' w  k! c! Q- o7 ]) }6 Z
1.jpg # c* x# R3 K/ `" U# y1 r
点击OK后,能输出正确的信息:
( z5 h; W, a  E6 H 2.jpg / F) P5 Y6 V; ^* s9 a' A* p/ A
再之后,报错:
2 {( s, H5 Y9 j3 p/ E+ y 3.jpg   X/ n9 @% L& {+ v1 j+ L
4.jpg
, a4 O; l& n' n1 t0 C  j日志信息显示的错误:# k+ `+ J! J9 \* v$ T4 Y
5.jpg
. Q8 z. t" e% Y" `  ]主要代码:
5 m8 s: f9 x# o8 ?$ @! xint BodySelect::apply_cb()' i9 |( Z$ S, [# w) n
{
1 s- B, |1 E; ^! e" W, l    int errorCode = 0;2 D4 @0 e- r: E/ A# P  O
    try
6 |% a6 S" `8 N1 P4 I    {
$ S+ w1 F/ g! @                PropertyList *pList = bodySelect0->GetProperties();
$ J: T4 b7 t& |3 Y                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");! r$ Z" }/ P7 y' V+ T  c$ r
                delete pList;) `: \9 u' i9 ?9 h! u
                pList = NULL;
# c; [7 b2 [/ \" x  u                                
. l) m, r: k7 a                Body *body;. C4 G8 l' J; k9 }' C
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
4 w. C) {0 J5 G9 C" h6 |3 }% `* d7 m
                allCount = (int)vTags.size();/ y# B2 w& J# Q) w1 B& G. H
                for (int i=0;i<allCount;i++)3 W) a! ^# d; Q( i8 m* l4 z
                {! U; G9 X0 x9 d& l
                        body = dynamic_cast<Body *>(vTags
);
# x6 o/ m: w. e1 k/ g0 t7 A: h, o                        if (body->IsSolidBody())
3 H% R+ U% h* A) D; L                                iSolid++;
, E. x, ~$ Z( L  p; ~4 N                        else if(body->IsSheetBody())
/ J2 q+ c1 }# p& U- l                                iSheet++;6 B# L3 [; a4 L- b
                }) J& ?/ q# c% o( y# c
" G! G( {* Z8 x0 H1 \& \
                uc1601("Read select objects Finish!",1);
+ ]# D' u0 a0 y5 ?3 y1 G; }                char chs[256]="";
- q# B6 d" C$ T
' P( y. U: V7 V& ?9 P+ k
0 Y' H, y6 K! T, y5 D+ `4 @" T                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);9 e4 r# Z3 j  L  D( }4 b
                uc1601(chs,1);. C: R+ M" F2 W% H7 Q3 x* o- P
    }
1 [$ L6 X1 N7 z8 P    caTCh(exception& ex)- T2 M+ N; i; |; O
    {4 g! a0 k4 D9 i9 `- L$ @3 d
        //---- Enter your exception handling code here -----
  T/ [' o! E7 Z6 |4 w8 G, J7 R        errorCode = 1;2 r* E; N) C, Q, j% U
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());5 y8 T2 W7 {  K" P8 l# H
    }
% X! z0 |. Y' Y% a  z; x    return errorCode;2 o+ B% I% N/ Q2 w9 F+ h' H* N+ N
}
) N$ c& z, @6 {, V- R8 i  i

. n! E6 l! u) a: J6 W  o不知道你有遇到过类似的情况吗??
. \5 @" z9 x4 z3 K1 E3 w问题是出在哪里呢??0 \( U; Q) q% l% J$ Q
也没有什么内存需要再释放的呀
2 j% v; ?8 M7 }1 d% m- @$ ]1 u' X% R& }& x% t

. e5 j) i4 F# _$ T$ O7 G
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

积分
82265
QQ
发表于 2014-6-1 18:00:18 | 显示全部楼层
   body = dynamic_cast<Body *>(vTags); 7 P' V* s# w0 E% V# O% G1 i; X

- M3 W  X6 i1 B' k$ U  p6 {9 {4 h# m# ^+ W2 w. [0 a
1 j* V' y" d% N6 k4 M9 k
   body = dynamic_cast<Body *>(vTags[i]);
- e9 b' K" |/ K+ p$ B% U4 a5 _/ V( r) W! U+ K$ G/ d
& r- u8 B% L6 n7 d1 w
上海点团信息科技有限公司,承接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 编辑 # ]/ \7 J1 R3 V; k. M: e6 y6 J

! Y' X4 t8 G+ Z& X谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
0 l4 X+ Q2 S& y# X9 b9 }{
# b5 P1 P* C4 U; `9 O    int errorCode = 0;
( g) H6 I/ B" `4 R1 S2 X0 d    try0 P9 K9 B- S3 J$ e# J5 I9 b  D
    {
" d+ T0 ^' {. r, ~6 Z6 ^                PropertyList *pList = bodySelect0->GetProperties();
1 K* n0 K; E" S$ R" m                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
/ q: A' a/ P6 y: r                delete pList;
4 r& v! J- I+ ~" @  O1 s                pList = NULL;, f3 g1 ?+ v' J) l4 ~8 w
6 e" f& a9 L& G
                Body *body;9 i% ^- y6 T7 h6 X8 }4 T. K
                int allCount = 0 , iSolid = 0, iSheet = 0 ;# n0 V! M* X1 F1 v- R: @* G
6 d& W0 W+ K. o1 L( O7 ?2 k2 r: t
                allCount = (int)vTags.size();
, }' u4 B4 c; j$ T2 `: G; k                for (int i=0;i<allCount;i++)0 c' \9 [3 p1 g; ^- L% K
                {. i2 b7 s5 v4 L9 {8 U- y8 R& j
                        body = dynamic_cast<Body *>(vTags【i】);
# ]. m6 I% x3 E4 [1 b7 E                        if (body->IsSolidBody())
. n; d" J1 k* K) J3 E4 o                                iSolid++;8 H% Y7 h+ _% k, }
                        else if(body->IsSheetBody())
$ X$ R( j. g" \0 B0 \                                iSheet++;% A( Y' @# B# T. H: X! S  @
                }5 t( P5 S( U7 L2 d( q/ `$ u
                char chs[256]="";/ O; S8 H; |2 \2 q
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);: v4 {+ m# i" F# k
                uc1601(chs,1);( {8 i9 E  E$ s! y" Z) N2 I  T
    }, ~1 w! ]4 E# s8 k# v2 j
    catch(exception& ex)$ M1 U! d8 q4 T$ @
    {
! i1 Y, d6 }; f0 p        //---- Enter your exception handling code here -----
6 G8 F* o: E' y: r        errorCode = 1;# ^+ V  {* P! E$ O
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());" H6 ]: D. `" J) x! z5 X
    }% P4 g/ C4 b1 d( a/ ]  R% q

+ p/ k5 D& k, t, q8 a2 P, D; ?    return errorCode;
9 j' o% X% b/ B+ Y# t# E0 Y  b, T0 ]8 N}- X3 m8 L+ J+ A8 `

; o; G# B1 Q, G* g有点不知所措了,请指点!!!- k( `3 R/ y* _, ~- ~* [$ ?: b. b

5 X8 u/ b! ~! C
5 s; S9 z* f' Q0 X( s3 L* |- h: W
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复 支持 反对

使用道具 举报

2477

主题

1280

回帖

8万

积分

管理员

PLM之家站长

积分
82265
QQ
发表于 2014-6-7 17:34:23 | 显示全部楼层
smthan 发表于 2014-6-2 05:14
* r7 ^6 i. U5 O) I  z谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
+ d* {9 _9 J; _7 Y{. `- n  r" @$ X- T
    int er ...
" z5 a! D; L# F" X: }8 \3 r# Q
你是 NX75 的吧 + \0 N( P/ V% ~2 S

& l, G( T$ }3 C% Q: g8 s! S% x/ p这个的确有问题 ,你用 选择对象 selection 代替吧
4 X8 ?! r1 [$ K. S
& J7 S: N# t' q1 s1 Q设置一个 mask
$ a5 C0 ?" A# u: ]! m8 T, \
" L' J7 G$ X( W, C. X
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

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

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部