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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 7 y; r+ e  U6 O* u: j- O" b
  _3 j" N- W" ?5 ^9 r; n+ w- B2 X% d
请教:# {% h) o  `. s
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:* q) p. \# p$ @) ~9 Q% ^+ x+ o
1.jpg 4 l) @+ u2 J1 _" X- a* \7 V
点击OK后,能输出正确的信息:" s! e6 G8 z$ ?3 n) o4 Y* e: b
2.jpg
9 A: n9 s8 p& [& z再之后,报错:. s2 o  }2 A" `% V
3.jpg
1 B1 ^$ E2 ?( R 4.jpg ( Y4 b) j, Q1 H7 [( }( C- v
日志信息显示的错误:2 L* H4 {( e+ z# p. u* y
5.jpg 9 r) i" \9 z  j1 j2 m+ b
主要代码:
) \( z- R9 `9 m: o8 M! D5 Xint BodySelect::apply_cb()
8 L- q* X3 \! k+ v, u" K{0 p5 m, }# `/ E# x
    int errorCode = 0;9 s. ^3 p! }; _4 \4 Z6 u
    try, x0 Y( x# P: I6 @+ X) d- f
    {& h( |. k" M8 s4 n
                PropertyList *pList = bodySelect0->GetProperties();
9 B! ?4 R3 ^# Y: J8 a* {& Q                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
* X5 n" }+ K7 h4 y4 b6 ~) o                delete pList;% B8 I: P" F, G8 t  J" N
                pList = NULL;
; H5 j; m, L) h% f2 ?* ]- ~! k                                
- e! ?  D) |8 `) _$ ~                Body *body;
  {- h5 ]; W" {* p                int allCount = 0 , iSolid = 0, iSheet = 0 ;, e- [1 g/ u9 s7 D1 |

. a' r' I6 W1 b1 E( ~+ I                allCount = (int)vTags.size();
+ S0 _# E' Q4 U5 j6 v4 `                for (int i=0;i<allCount;i++)
& ^/ u" L$ U$ i4 ]. E                {
5 M+ O/ ]# U8 `                        body = dynamic_cast<Body *>(vTags
);
( M( R% m( f5 B/ q9 F" M                        if (body->IsSolidBody())! Y' t8 r+ m) w, x& E3 x
                                iSolid++;6 d( X. ~" s. y* }7 f5 {' v  E
                        else if(body->IsSheetBody())
8 L3 l1 ^& D6 P+ o) O5 A                                iSheet++;" a% t( n  W) o$ {
                }, K7 L: |* p; g" E

/ ~( w5 i, E7 L1 }! ]% F) I                uc1601("Read select objects Finish!",1);* X# a4 b! `' z  H
                char chs[256]="";$ I. q3 |0 |1 s) H1 ~

* l3 U$ t5 \' `0 `6 g; ~, ?6 b* j. w7 X7 x$ k  ~4 T" E3 c9 J; `
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);) @6 o* _4 S+ _- _& K
                uc1601(chs,1);
4 j& h. e8 a$ X7 Q- x' a' S    }
6 m; f; p( p& F    caTCh(exception& ex)
, z& ^  J1 X$ |7 Q& Y1 S) X, T" x    {
3 ?0 ]  \  y0 l6 d        //---- Enter your exception handling code here -----& B$ J7 E9 k( F; m2 |  @* u
        errorCode = 1;
2 }* f' C( J! X( O: \  [% z& H        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
, S/ i0 |" L3 p' A8 P    }
( l3 w9 [7 i6 L8 D% l* l0 f# W, D    return errorCode;* t4 y5 [" I% ?: n$ Y
}
) i2 e" t5 Z# h( w2 F0 P

0 b# k9 }+ D# G0 M不知道你有遇到过类似的情况吗??
: \# a, n( @: @: `0 i. E6 |  c. m0 v问题是出在哪里呢??6 A; W' i: O4 F1 H$ u7 w
也没有什么内存需要再释放的呀8 w: O8 l9 c: e5 ?& A
7 C- O+ N- v0 @# ]) C! `) R3 B

8 w# `! c) @: Q* \+ r0 c. ~
上海点团信息科技有限公司,承接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);
8 _0 ^* o* T' p& w% ~! n4 x$ ?: x& P# ?+ \2 x

0 W* a, k) ]4 N$ x
- z9 Z* Y$ I& W: g. i   body = dynamic_cast<Body *>(vTags[i]);
0 G2 a7 Q/ Q" n; P# S/ r
, Y1 s* u" t' c3 i7 m( S, U
/ _$ b' n  V; {) U, G0 W
上海点团信息科技有限公司,承接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 编辑 # D0 T9 ]1 S3 @' C5 S$ n# Q1 C" r

2 [( R! w' d# K; K  U谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
9 U: n2 G& R/ {3 h% i+ v3 r{  J+ s( S& {  R4 k
    int errorCode = 0;
) w6 H$ R8 V! U  ^# d' s. b    try. P$ V8 o! F2 G
    {
, F7 T. U' B: P! J% R                PropertyList *pList = bodySelect0->GetProperties();1 D0 e- r7 R# C7 g! O
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
4 \& D, k/ \: @( Q4 `4 j5 L                delete pList;
4 Z) O$ P9 u9 J. W                pList = NULL;
% Y" C8 S% E4 C# C; j# k) R7 P5 B: D$ R
                Body *body;
7 `/ o, a2 p- E4 |                int allCount = 0 , iSolid = 0, iSheet = 0 ;
/ ^: z/ ?  ^; R0 X( g" i- N* s" u3 U
                allCount = (int)vTags.size();
! K, F6 \, y5 E+ r5 b6 e) B                for (int i=0;i<allCount;i++)
' h. ~- J; ?6 w8 M7 w$ G( J; k% P                {4 O; w8 \5 g5 P' i
                        body = dynamic_cast<Body *>(vTags【i】);
6 X9 O* J' ?! O4 g! M                        if (body->IsSolidBody())9 k4 F' s  f/ o+ z
                                iSolid++;
0 D/ r7 ~' M8 C! o0 n                        else if(body->IsSheetBody())
" d+ Z; |- O6 Q: K+ e5 ?$ X/ @0 U                                iSheet++;
0 P5 n' y# u, |/ z% q) Z! n% S                }/ S% H1 _! H  k6 Y& O6 G
                char chs[256]="";
" Y# \5 w- g  r  \                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);4 J0 M6 F9 p7 ^$ B2 q7 d' y
                uc1601(chs,1);/ W2 t) W2 v  a1 Z
    }: V. a  M" ?% J# M$ ^" k" k) v; T( k
    catch(exception& ex)
! d2 p: m- w- D7 @* X    {
1 g1 K5 k$ C9 H! n" g: k, _        //---- Enter your exception handling code here -----+ v7 T/ g0 M) M, N  e3 s, g+ L
        errorCode = 1;) ]: s5 p8 B, f& Z
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
* X! H/ B8 {' ^5 }! \$ r& k! ]- |    }  ~9 k  d( W* a( u+ c$ W+ P

) l: K0 y+ N( t, B- B    return errorCode;
/ P# W- o! _4 [  R4 T}! J4 A! ~5 X* K
4 i# n; d/ r2 ?/ q. p, r
有点不知所措了,请指点!!!1 n; `: T' c; H& V
# C, D6 d& k# ?7 C5 O" r# I

+ N, f3 Z; n& M- 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' X( |" i6 f6 c2 ?5 {  B% k
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
' c, O* k' ?: [; x9 G{
0 \" p& [, b8 {7 x0 R6 F    int er ...

- l/ X3 d8 x$ f8 \5 g你是 NX75 的吧 ! v1 ~) Z% @1 p9 t6 E7 e- p+ ~
7 a4 R- B, w1 O8 e2 C
这个的确有问题 ,你用 选择对象 selection 代替吧
& I5 h" S) d- v
' [! P4 ]8 d8 q' S: M设置一个 mask- v, x/ E/ k$ z! W
, I+ J9 Q" t! S; n) a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了