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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
/ s& P7 B, ^  B  x" L
* ]) C: A5 ~0 ]( |$ F 请教:
7 P5 w0 r# E- x+ @5 D       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:+ \1 z" V4 s- G0 Q
1.jpg * I5 U$ [6 G# f/ u% M! k
点击OK后,能输出正确的信息:, G5 Q" D) G  I4 }9 [, ?2 c
2.jpg
) T9 D+ [# j# H# Q( }8 N: E再之后,报错:5 W7 E# Q3 O! }* \3 b, I- S$ i  W: t
3.jpg
- Q3 A4 U! u% G7 b3 O# x3 N% B 4.jpg
+ [+ [$ r5 }' ?3 ~# O# e3 B日志信息显示的错误:; n" P1 T0 |+ L" i
5.jpg
  R% j' ?% K& }- V$ W主要代码:
6 ?5 F% r) i$ G& @7 Dint BodySelect::apply_cb()
/ W; z% Q9 o! ~$ k, x* `{8 O" j* V. N+ Y/ V7 C8 [
    int errorCode = 0;
4 y1 s1 M0 Z8 l6 C    try6 i& D6 @' g# A$ T! f: r, I! {
    {8 j6 h& d' u' J$ V
                PropertyList *pList = bodySelect0->GetProperties();
7 L7 ~2 N7 |- ?9 e$ ~) g7 L. M                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");; ~/ D3 e: }9 H" S0 L
                delete pList;
1 J, D% O) M; \                pList = NULL;( i* v( ^6 D7 _7 s
                                
7 a# j; n5 Y5 o. A+ M                Body *body;# q6 O1 ]( K' x
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
5 X3 A; _# p- }: E/ w; K' O8 Z( ?6 d" E- m9 [
                allCount = (int)vTags.size();. F/ C* J8 Y: V& S1 W
                for (int i=0;i<allCount;i++)
& }, ]9 I5 i. `8 m" q! ?8 S- v                {% g/ W' L/ d% {% J$ `  w7 _% K
                        body = dynamic_cast<Body *>(vTags
);3 T( I$ v$ {1 a- ?+ f4 u9 |
                        if (body->IsSolidBody())
2 L( ^9 N5 p/ D1 x7 a7 @5 N& i: t                                iSolid++;) R6 G- d  d7 X* ?# l8 I' k
                        else if(body->IsSheetBody())% Y# h2 [' b$ s' V* P+ R2 t4 `
                                iSheet++;
9 T4 r" W$ n3 \7 {                }
" x6 B9 }& S& y, p$ o2 Q% t1 u6 |* [3 O. G% s- u
                uc1601("Read select objects Finish!",1);8 ]$ [$ c5 }6 _2 M- B- K" H
                char chs[256]="";, j  D( @  v/ a) @$ o: I
- U: \, N4 @. K2 _9 O

4 \, x/ d5 q+ h/ z8 {2 f                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);( O' p6 ?( }* p+ w3 c
                uc1601(chs,1);
$ b  _& d  T3 y& m    }
3 p% o7 l8 Y5 F% h6 ?3 N9 X9 W4 X    caTCh(exception& ex)
6 _/ g9 l& t" @/ w* G! P& S& B    {1 K, E( R9 V) v% A7 h; s
        //---- Enter your exception handling code here -----) @* r! }$ j1 X& Z- I7 K
        errorCode = 1;, W7 @3 H1 W  n/ X/ s# g" [! H
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
& ]5 v2 x) n* g, K- R) ]* I    }
, T# i) ^; [7 o- r1 @6 }; ?! |    return errorCode;  r  y7 U2 L. Y- L. f- R
}

9 _5 Y9 K9 X: H) {1 l) `+ K2 f/ v) C2 }- x  U! ]
不知道你有遇到过类似的情况吗??
5 d8 V9 W" V7 [, ~$ T8 u" e& i) I问题是出在哪里呢??
, }! w+ E4 E9 V: N% ^也没有什么内存需要再释放的呀
7 X6 Q9 C. v' @' B. H) ]/ W4 B* q# x0 [4 k: S1 y

! `6 d2 G7 @1 P% J, p! J% [
上海点团信息科技有限公司,承接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);
% |/ x# K. S5 B( [% j" ]1 ^. t6 D# J. h& U0 V* Q9 `6 O
. z5 w( f3 r2 l1 s6 T

% Y+ X5 c3 t& a6 J. {   body = dynamic_cast<Body *>(vTags[i]);
& y& N$ k% T8 `0 y: F
; v  v( R1 \6 b4 z2 E$ ]
' ?; y# t: \/ S5 B8 r0 v7 f9 k/ R6 w
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复 支持 反对

使用道具 举报

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

smthan 板凳

2014-6-2 13:14:43

本帖最后由 smthan 于 2014-6-2 14:04 编辑 9 x) _3 o; L( |5 J+ v

* a' m# R) A/ |% w6 P5 f8 e谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
, @' a2 b8 ~& E$ [1 _{
5 r  l( n9 W) ^2 A! J    int errorCode = 0;
1 I: H5 d$ h5 n! F  q    try
# b" Q, k2 b7 J& N$ O" ^+ ^% l    {5 i  n; [4 Q, M: W( d
                PropertyList *pList = bodySelect0->GetProperties();; {+ i1 \  }$ p9 j, G9 }+ |) {
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
. `6 w1 a" i: R1 j1 Z. a                delete pList;
0 A8 F* \8 ^: D" v0 H7 f2 `                pList = NULL;
6 D$ f$ r6 B5 x+ R: u) D* J9 E7 ^! w) F+ u7 _( e3 |
                Body *body;) O+ p; W% ~; @) A5 {- w- h
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
  t' k6 k, R# W" O8 n
) s( R4 z) i3 T' I2 W3 w  i, J6 _                allCount = (int)vTags.size();
+ R! U; c. E% H( e' f) z                for (int i=0;i<allCount;i++)7 F. P, N1 E" d" v, W& v0 h
                {5 `6 X+ j) \: Z2 m; f* D9 `0 ~
                        body = dynamic_cast<Body *>(vTags【i】);; L5 W% |) h6 h! ^
                        if (body->IsSolidBody())% _" ^9 K- G3 i8 Q2 V( a1 G" ~
                                iSolid++;
  }" Z: s+ J/ _  L7 X! N4 m" u3 U+ O                        else if(body->IsSheetBody()): |) v$ Y- E" `$ P7 c$ K3 o
                                iSheet++;
8 ?2 ]% ?& L0 ^- o5 K                }! K  Z! V' E5 u6 }! k1 y+ w. F6 d5 ?
                char chs[256]="";
" ^0 K+ V' {6 E0 P0 P                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);. e5 J; }1 P; Z7 \% [
                uc1601(chs,1);9 @( M! Q& v! q9 y* N6 U
    }# x* F* [- `( Z# e6 {* {
    catch(exception& ex)
7 X) I. m5 q6 J# y' N    {8 T$ S6 h6 }7 b
        //---- Enter your exception handling code here -----
2 h/ X- f0 A$ i. h4 p1 K        errorCode = 1;
# S& b  H8 _# z        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());3 ]+ Y- N; T+ G  q
    }
6 B$ ?7 f8 X" h4 r. {* E, e- A( C9 O. e, s( F0 G) m
    return errorCode;' u0 T" }! n2 B" B, j8 X6 a1 k
}' D# C7 E' D: [% w* v7 w4 j: e& n8 h
% A  A5 {( r2 P* t+ D
有点不知所措了,请指点!!!8 q1 n9 k* V0 |1 @6 O$ W

) ~- q! R% h- F9 d/ U/ {9 n
# `2 ^( `) A) 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  Q2 V3 ?+ Y; v! V9 T
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
3 w* q$ ?2 D, l) ]& D7 @9 _# S{
1 N' r% A6 G+ i9 b7 F    int er ...

5 U1 I, _; ~" Z# k& Y你是 NX75 的吧 : M$ E: t& \; s$ q* Q$ f$ P4 ?- k
8 M7 L$ K* {+ W" ~
这个的确有问题 ,你用 选择对象 selection 代替吧 3 e. U6 j9 y. {, z
) f3 }1 q, x2 e- V
设置一个 mask
' j; e! }( C/ m: m' ^4 b' K7 }2 n4 g& _0 X  ~5 P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了