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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
6 }8 F  ^" {. y/ Q* I7 u3 f/ \% \6 ?
% ?' A, W% z% Y$ x2 b$ N3 L 请教:: ^$ ^  _/ J8 p" }5 [' b; w, Z8 x
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:: a7 r2 o9 ~% ?4 N. T% k- I2 U
1.jpg - x! n5 `. V, z) p' ]5 ^
点击OK后,能输出正确的信息:8 L' ^- E, _0 m2 q% [
2.jpg ' V5 j) e4 X" Y0 ~
再之后,报错:6 H# U9 h6 [# z3 j3 g$ ~
3.jpg
% P( X, @. r+ Z$ B+ C4 T 4.jpg $ D4 H" Z# g9 ~; c9 M. n7 m
日志信息显示的错误:
( p6 A& R% `7 Q( H: U0 p( _ 5.jpg
- l4 l2 ~+ [. `8 E5 v' q* R5 p6 G主要代码:
+ Y8 j/ |( E( Z* L7 B9 D- d  P% mint BodySelect::apply_cb()
- d7 a( t0 h( O+ [8 f; {8 q{% j6 E) c1 C$ |3 G
    int errorCode = 0;
$ H  W+ u5 f4 _1 {    try. p. ^8 k1 v! ?/ x$ T$ y
    {
' k2 H5 I0 K6 N! i: n; u2 F                PropertyList *pList = bodySelect0->GetProperties();7 X/ ?! ^( d5 Z9 d# }( x* ^9 m
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
" @4 c1 ^: ]. K; @: ]                delete pList;/ y# d; C) T% }& u, _- S( J
                pList = NULL;
' x& c3 i2 I. j8 {! t                                . i0 f, W  j9 T8 x0 {
                Body *body;( ^4 w; D0 S7 J0 }
                int allCount = 0 , iSolid = 0, iSheet = 0 ;, _1 ?' h7 e9 T8 e' a: Y) z5 F
- |. I. ^9 K/ E* G* E
                allCount = (int)vTags.size();
, U- u2 w: m, q5 R                for (int i=0;i<allCount;i++); V" I1 L/ K  i$ k1 ?2 `& ?! }
                {% i0 _' ]* K% B# E( D' y
                        body = dynamic_cast<Body *>(vTags
);, i: k8 g' r8 }0 [$ N3 x
                        if (body->IsSolidBody())
: l+ M5 [" [; z! _                                iSolid++;
4 B9 ]. h; U& b& F5 T                        else if(body->IsSheetBody())
6 m$ ]# K: N1 F2 z                                iSheet++;# J5 h1 U# u& |1 q
                }
" k% ^1 m4 a6 M$ l2 N2 t# Y* u: e2 @- a5 w
                uc1601("Read select objects Finish!",1);
% h+ O# P4 I0 J( c9 c" d- ?                char chs[256]="";; ~5 ?5 Z; w4 I7 W7 c% d
7 u1 [$ k6 N8 [4 G
+ Y; E' U7 Y( G! x0 A/ ^0 {) a: {
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);- S& [9 r, a/ ~
                uc1601(chs,1);8 y& Y( V  m9 y  n
    }
( R& ]: a) Q$ a5 n    caTCh(exception& ex)
4 W( Y5 y+ r) ^! u9 b4 s5 g% `    {
% R1 Z  C* H2 i+ `2 `        //---- Enter your exception handling code here ------ {$ ]9 U1 i, f# O' I! J
        errorCode = 1;- e: x/ L. T. A3 k
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
. W# x4 P. z" t# ]    }
' f+ D6 I) _2 b, G. d    return errorCode;
% M! m. x* O4 F0 u% ^}
" m$ e, W* H. u

; b" r: I- W: K% O# b# i不知道你有遇到过类似的情况吗??
& H+ ]( _, U( f+ n( V' ]5 \问题是出在哪里呢??$ c$ _+ Y6 a; U
也没有什么内存需要再释放的呀
% K, _- M0 }2 i: B7 ^: W; L
0 ]8 A( @1 a* t. k5 d- B& N9 \
7 I5 ]0 q9 Y7 p
上海点团信息科技有限公司,承接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);
4 O9 n1 c7 A" H/ a1 `
. |: W& u; X! \& f' p0 H/ k
0 l- {. N# J1 w; c8 s+ q7 ]4 b# A1 }) F" B( i% F
   body = dynamic_cast<Body *>(vTags[i]);
2 Q* g1 N; `" H, c
; `* L3 m- w, F5 Y1 }7 g
# V& U5 z; e+ T3 N3 S! F
上海点团信息科技有限公司,承接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 编辑 % l6 ^3 ~3 z6 L. ~/ n0 X
& E5 e2 ]; h8 V& \% |% ?3 I
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
- U; t* N6 N) A" ?{
& O) M! h  @  I8 T    int errorCode = 0;* x' e9 y4 Z% L3 n' S
    try! n2 V" i7 U8 C# Y' ?4 k
    {& b- x8 z9 K$ V$ A, [
                PropertyList *pList = bodySelect0->GetProperties();& w6 ?; a- ^8 U7 U5 H
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
% I4 Q# ]8 k( E- c1 D4 b                delete pList;9 j0 v! ^$ s3 G$ D; z9 b
                pList = NULL;9 f, R' Q+ C- F2 C  x

( v3 B1 C" N$ A5 i                Body *body;* t& n, |) l( Z' E$ b1 M
                int allCount = 0 , iSolid = 0, iSheet = 0 ;# e) D& G. F( u3 I7 |
/ J- |" S& n( ]% q' m
                allCount = (int)vTags.size();/ R) |. l' y4 V  j1 E( Q4 q2 D* v
                for (int i=0;i<allCount;i++)3 m" o! h5 c+ g5 H  l( o
                {
5 F0 P( s0 A  n+ @; L                        body = dynamic_cast<Body *>(vTags【i】);" T# y. t; ?* z$ S! X, Q
                        if (body->IsSolidBody())
! r0 r: F& `0 \: U                                iSolid++;# G% v+ J+ \2 }$ k  v
                        else if(body->IsSheetBody()), I( Q" D" m$ P% y
                                iSheet++;
+ m6 }% S+ |! s6 p: N                }
0 V1 @: K7 o0 A3 p                char chs[256]="";; G" a* F0 Y, Y; m" t; s
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);! n1 ~: b4 w0 s' }. f3 y, x) a9 }
                uc1601(chs,1);
6 Q2 a, H3 ^. S# U$ J, r0 s    }; J# j! |6 x# @  K2 ?' X
    catch(exception& ex)- z5 h# B+ b7 A: y+ m
    {
3 t/ j4 i4 r* ?/ f6 G        //---- Enter your exception handling code here -----
" q4 ]6 L, _+ B" j        errorCode = 1;; S- a2 }# |, G
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
4 A$ d8 i0 ^4 u  n8 M6 e# X# ^    }7 Q5 h: |- Y. m, m" W0 j

' E4 ~4 s6 z& V9 _- ^    return errorCode;) @# L# U$ Z8 B
}5 c: i) v! @5 e8 b) m% z
* M; R' I1 K1 M' X. l" B
有点不知所措了,请指点!!!
7 S7 u1 f4 f7 c4 L$ f% r/ m4 Y- Z# \

% N9 L7 ^5 y& k* y
上海点团信息科技有限公司,承接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( d- w7 i* n; z" Y" e: r
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
( z* h8 m) Y# Y0 [{
: X/ y! Z. ^* K    int er ...

) f6 D8 t% [0 j5 c2 i& O你是 NX75 的吧
( p4 D8 F% S" u5 J' O! n0 F
) }2 W7 e) q' q% R* A# [; k这个的确有问题 ,你用 选择对象 selection 代替吧 0 N( Y2 o2 p% |) L# l& F
9 n9 Y3 r9 T; J) s
设置一个 mask( r2 w- X5 T" F0 s) M  U) H
# b7 V) Y" f/ H8 h0 u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了