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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 * h7 N# e5 A0 G# a
7 B5 J1 p/ Y1 R+ P+ O5 x
请教:
  f7 P% R" L3 o) j( D       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:- P6 D  p4 w8 `: Y& l! j# E. J9 v
1.jpg 3 ?) ~9 y4 Q1 o, u3 g
点击OK后,能输出正确的信息:
& V$ q2 P) p* X6 ]2 M8 t4 t* v5 U5 N 2.jpg + m+ ]8 z1 h( u: a3 q; m4 _3 b
再之后,报错:4 d6 l, [. O9 {
3.jpg
% T0 d3 U, v1 \3 g7 G8 N* P 4.jpg
- `. N& M! x: O1 s0 V, o1 u9 i0 |* }3 P日志信息显示的错误:
8 P3 q; n- X* }0 p  u 5.jpg ; I5 j1 c6 I+ R1 @- N6 O
主要代码:
; O9 P( Q6 x' H9 b2 z2 f+ Eint BodySelect::apply_cb(), E5 ]; e" Z/ W1 x8 i# o
{% u) S; u$ v2 Q7 l. @, j+ y
    int errorCode = 0;
* N( m0 l, G* C4 H    try
1 S" v9 N' s: Q8 [8 \: o: n# j! i- [- G    {
$ u; t2 c7 `& |                PropertyList *pList = bodySelect0->GetProperties();
+ C" Y0 _2 @( D+ i9 G+ x                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");: z2 B% O- [6 L5 P9 J
                delete pList;
! O. t9 {. G  ]) S+ ]* A6 @                pList = NULL;; I+ x$ C# S8 K9 K. Y
                                + V, [) a) e7 n
                Body *body;
% ^5 t' E& q* V! {- H                int allCount = 0 , iSolid = 0, iSheet = 0 ;
; D$ r  Q% p  s- h1 B9 i2 H' Q( ?+ o* X4 @
                allCount = (int)vTags.size();
; j& l; z1 r0 f* S( |5 m. B                for (int i=0;i<allCount;i++)' D" N/ u) ?+ {# z
                {
' z! W! J) ]. o0 |, x! Q                        body = dynamic_cast<Body *>(vTags
);
9 ]: G" h! E8 s( C: ?" A$ b                        if (body->IsSolidBody())
% h% g4 u8 w( o* ]                                iSolid++;  |! w& s; B& ?6 w4 ^
                        else if(body->IsSheetBody())
' {; L! e: b# ^! E                                iSheet++;* ~$ l$ K+ b* A  P3 O  y6 z$ |  C
                }; b. ^" ]4 m* x5 A' S

9 S+ W5 |. g7 Y3 G                uc1601("Read select objects Finish!",1);  D* ?% [. N$ ~. c& h
                char chs[256]="";
( z% K+ j6 h) C8 F  N. F
+ {, A  B( B! J3 \6 K7 x  d
& Y+ \7 Z; m4 v0 j                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
: Z. X& j! i8 t6 c0 n                uc1601(chs,1);9 b" a1 h( D) K& E$ Y0 t! A0 ~
    }
0 F7 Z" X: B: t* [    caTCh(exception& ex)
" }; d9 B* C4 h! t  O$ Z' }! Q    {! W4 D: R0 z& @! Z" D. x" S
        //---- Enter your exception handling code here -----4 ]$ ^, k: k8 k  Q: D3 F
        errorCode = 1;2 |6 U$ L, Z6 y
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());. a' m5 |5 Z  V! `4 G  S( D
    }; V2 ^, F$ m( Z2 V+ {, W$ [
    return errorCode;
7 R- p4 S; t4 h7 i( H}

, A" z& D1 [1 k% G8 Q5 ?' b* C
不知道你有遇到过类似的情况吗??
4 S0 }: ?( j* N& t! P! U& z问题是出在哪里呢??& k7 e% v* K6 Y/ L
也没有什么内存需要再释放的呀
- h3 Q, c, H7 L% r3 O. ]1 p
0 }9 j) |2 ^% ]. [+ ]
4 i) ^) W" H# b/ C- l
上海点团信息科技有限公司,承接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);   `% d7 D/ c$ I( H& i/ b

  L& P! p7 W" I3 j( p' a3 I" F5 A+ E7 \3 j2 g' g3 \  J
5 E9 ?% u2 |5 a# t/ H
   body = dynamic_cast<Body *>(vTags[i]); & N) L5 D! B5 Y8 ~8 V( F
' U) |+ M. c% r& b% `5 H) {

0 W. l$ f: u" t/ t1 N
上海点团信息科技有限公司,承接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 编辑
% Q8 o' |1 o( q4 I6 M$ U6 Q# h9 h' E1 Z/ [2 ]
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
+ b* }9 [! D' s8 F{
, ?- Z8 B, T/ A- c- I( r    int errorCode = 0;6 b, L" D9 H/ j  T
    try) \9 M, _7 l0 {5 t. a+ |6 [
    {
- a" R/ X. S4 ]9 E                PropertyList *pList = bodySelect0->GetProperties();
5 f8 f+ G8 d" z% @8 Q$ V                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");2 K+ v9 l# T* m. s% `. _
                delete pList;
! s: N, \* i0 C: Z                pList = NULL;! x) \3 j, y' Y1 l# `

6 x8 {% Z1 I: e$ i$ x* ]                Body *body;! p1 M& [+ _3 P; S0 q2 |4 F
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
' \% ~" \' z! l- l( t$ S; B, ]# C
2 e6 H# F. @6 m  ]# {                allCount = (int)vTags.size();
6 a" B. u* v- a" w/ Y& \6 N                for (int i=0;i<allCount;i++)1 c5 X) x1 M+ Q
                {) x& w& q0 w# L+ V2 I7 f
                        body = dynamic_cast<Body *>(vTags【i】);  n& {; E& X( t- v
                        if (body->IsSolidBody())$ A! u% a& o8 |  _  D6 b
                                iSolid++;8 E8 u: h' A9 l9 l5 u' R0 A$ O
                        else if(body->IsSheetBody())% N2 _( Q7 k5 i7 K  M
                                iSheet++;
, t4 [; x( H( T" b+ G$ m+ W                }
2 [( M. `9 \" q5 l6 J                char chs[256]="";! C+ T6 c" T: N
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);' r/ f( V! w% s
                uc1601(chs,1);
; b5 W* l$ b. c9 P  J    }9 J4 A& ~1 Z( d2 a7 R
    catch(exception& ex): V  D8 G" \) L1 M) i
    {
& L' U5 w& q- a+ G# o/ `- \        //---- Enter your exception handling code here -----
1 f! A- t8 H; ^8 R' f0 ^        errorCode = 1;4 _# h# s6 ~: h3 _2 C
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());( e9 D% _/ b/ w- S0 D
    }
4 l0 a' j* o# s5 U
- y$ N1 |2 B! z, n0 F    return errorCode;7 L0 F4 G# |1 O$ }
}
8 c7 ]% h6 ^8 R2 s% m1 @  H$ B$ A7 W- h4 w
有点不知所措了,请指点!!!) O. Z3 B; q1 y  I  Y& t9 g

& z% Q" e! @; @9 m2 c5 x; X) e/ D4 ~' B! M2 v* M6 `+ z0 J3 v9 U, l% k
上海点团信息科技有限公司,承接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
5 G" t/ `# o4 L- t& C3 q' P谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
+ C+ v5 |" O3 Q% @) q{' u) p" E& P' x" u9 T9 r
    int er ...

! L& t  ~; \3 i; N: G# l/ M你是 NX75 的吧 2 a! v/ T8 C8 P2 F
& t' M7 {: w. ?. M
这个的确有问题 ,你用 选择对象 selection 代替吧 # D; y0 L8 w; J
. c, G0 G% \0 j+ s
设置一个 mask7 m) e9 ^4 M. y7 @0 L/ u0 P! @

: R  Q, E5 G  p$ Q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了