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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 ) E3 s; W# C8 o7 ^9 ~

$ s" `; K* n4 c; h, l! n 请教:
9 O" `) r# t% H! n       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
# \9 j+ I1 ~. p) r  } 1.jpg 2 k0 f7 i& q) f6 u; h: M
点击OK后,能输出正确的信息:
6 E" P4 ?  O8 `! V% s2 Y1 e 2.jpg 5 X" w* e2 M" s
再之后,报错:  D7 ]9 |9 d! O
3.jpg / K3 X  q. u/ d$ m5 D) q
4.jpg
% ?* p! a3 J2 X( k) K日志信息显示的错误:( V8 i1 C& w4 `4 [' J4 x
5.jpg
* e. L) k( f8 \4 y1 D3 X; H主要代码:
  ^6 }* ~$ N/ T6 Sint BodySelect::apply_cb()& ^* w& n7 Z9 h' \
{
. M7 d9 z7 d  O% a    int errorCode = 0;2 `2 v# h; `6 z" M( W
    try* R# c1 d) V! x6 j$ e
    {9 ?$ `3 g( K" z# H+ t( W# E' s7 V
                PropertyList *pList = bodySelect0->GetProperties();
+ p  s% \0 m% @. z                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
* w2 j" M) s2 a4 b$ K4 B                delete pList;
4 y- `4 ]* |* _                pList = NULL;  `' y( f+ [4 O/ h, _
                                
6 o( V: [" Q5 t* ]2 a; X( b                Body *body;
2 ?" K6 ~) s: e                int allCount = 0 , iSolid = 0, iSheet = 0 ;; M2 g% E& U' f9 O7 W, ?: v$ y& z

- d+ b6 H4 D- o5 d  y                allCount = (int)vTags.size();
! r: V8 s( k5 T! F* D                for (int i=0;i<allCount;i++)
  R# Z( t0 \8 W. J8 o3 S  b                {3 j! {- H0 g2 }4 v# t+ z
                        body = dynamic_cast<Body *>(vTags
);$ O3 v( y6 x  d# W/ b( _
                        if (body->IsSolidBody())
7 z6 E' Y: h1 \+ q7 p6 O  |0 z                                iSolid++;. U) d( m- o7 [; N. g2 h; q/ j0 S
                        else if(body->IsSheetBody())9 ^& S% C3 u: L3 q
                                iSheet++;% E9 V: v0 Q+ a5 q1 u: \7 k
                }2 y' S5 i  S" ]1 O7 k

; q7 p/ I8 [: Z                uc1601("Read select objects Finish!",1);
. S( R4 R  {4 Y  w                char chs[256]="";* S) b, H5 Q( M$ J8 o. G
! p) m" D9 Y) t! \8 S9 |$ `+ @
# y2 V; ^4 i. ?
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
# @# P7 s& H  z0 X( L                uc1601(chs,1);; D2 y, w* O# S: I
    }
5 e% a7 ^+ ~( D( ^; i$ K5 F4 K  m0 o    caTCh(exception& ex)* `! C7 D* X2 I. F
    {
5 t- W  `3 T+ \- b) d4 u        //---- Enter your exception handling code here -----
5 \/ |( {, m# C# b* T0 T* D, b0 }        errorCode = 1;
9 ?+ i) d* G$ x! d! J! v        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
; r6 W& R! A) f1 t    }; u2 Z7 U  j( I8 u. C! `; u) ?
    return errorCode;2 \) B- r& @$ K0 \0 s, p
}
% I& M6 S* O! w+ Z4 s9 c/ J+ n  j! l
+ ^: A5 y0 c; k/ r: R
不知道你有遇到过类似的情况吗??( z6 A6 y) P: K: {1 m
问题是出在哪里呢??
6 s0 R  C5 O+ {也没有什么内存需要再释放的呀3 \" p, N$ k8 f  ]6 B( c5 `
. Y. C' x. ]4 A
, C: M9 v7 y) W
上海点团信息科技有限公司,承接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);
7 _8 a& f; V" \7 x! }& V4 t$ H8 `: k, V( n
2 c# X: W" K7 `. v

5 T$ J3 P4 O( I# X) F, m( a   body = dynamic_cast<Body *>(vTags[i]);
3 o( k% Q7 @* K: j8 n5 y. e. |. G2 [
' ~) I& Y- ^7 {
上海点团信息科技有限公司,承接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 编辑
, _0 j6 \6 }  G, P7 k) d# b/ G. ^7 t- w) x7 `
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
/ j9 [  }' p, H+ v' s{4 J! ?0 g( h5 B6 F/ V
    int errorCode = 0;
  f- W* [8 i; {0 @3 g" M4 {* i) ^1 d    try
5 \+ o4 X% ], D. m' L! @! X  {8 d    {# R* `: W1 [* i) m: ~# j
                PropertyList *pList = bodySelect0->GetProperties();
4 v8 ?* r! ^& m$ w                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");8 s# E) x% \% x& ^5 c
                delete pList;( a- J) ]- q- [
                pList = NULL;' f. V/ r  n% g6 ~, b# W

6 h1 t1 \3 Q- g1 ]4 Q                Body *body;
) M2 w( a+ A) i- m/ u! k                int allCount = 0 , iSolid = 0, iSheet = 0 ;0 o: x; D7 @% w- a4 W
7 H! a/ m. A) a" f- k
                allCount = (int)vTags.size();
/ B+ A. ~: Q' T! a! \' O                for (int i=0;i<allCount;i++)
# s7 o  U( q/ L+ i5 x* j8 o                {
/ [  c4 _) B& z3 \' H                        body = dynamic_cast<Body *>(vTags【i】);8 }! }  O; ~; p3 Q' ]. {
                        if (body->IsSolidBody())
) m( {8 d. M* M( P3 J                                iSolid++;$ G0 o+ N2 a. z; A6 `/ S: ~/ }
                        else if(body->IsSheetBody())
+ X2 U, }* M" F& F- A2 e                                iSheet++;6 `' v5 z9 L- |9 I4 R
                }
0 e1 j" ]* j4 o* W* h& x4 t: q3 E% I1 a                char chs[256]="";
4 C+ W+ Q  P3 w% p: h: @/ B* w                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);. F% s4 `* M* h- h8 H
                uc1601(chs,1);
1 W! A: r- b% ?    }
3 |8 J& e6 b6 L& }. r    catch(exception& ex), Y* E% Y! F1 ?
    {2 Y2 e* s# k0 l( ]6 _! M
        //---- Enter your exception handling code here -----
% J: {$ V% R! N        errorCode = 1;
/ A: R& a" U; H! g        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
" N/ d; l6 r6 p; T; ~    }
0 T# K9 D) W, J/ ?+ x* v# }* u
# n) B. D5 C- ^( _/ g9 ?    return errorCode;
+ u9 |: X7 S$ b! j% i7 O}
$ E* ?' z) [9 j/ D
& Q. d6 {# B/ U! F; n有点不知所措了,请指点!!!
4 J' \3 u6 t9 j. I
/ X1 m, o: O* p
/ J6 D! \/ @1 I. 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
& Q6 O7 t" v& o; D3 ^  Q谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
( [% Q5 w+ |: r( ~+ b. Y' {{
& y, i2 |$ ^- B& a    int er ...
2 X$ [3 [. ^% E* Z% u2 s5 T
你是 NX75 的吧 " c: I! D9 I( }/ V+ k& \
+ f. H: q& i+ \: y; B# l7 U$ }
这个的确有问题 ,你用 选择对象 selection 代替吧
7 U8 z! [" X1 U3 J& Q
% f6 v5 _* j2 o& v+ U. `设置一个 mask/ O9 t- I( K' I

7 c) n0 l7 U  R8 B! t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了