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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 2 h0 m: g' F! x) o9 J6 ~" Z$ ^; t
5 p3 `1 s$ ]5 x6 h1 C
请教:$ g! y* ^  y0 T5 c9 N
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:
- B+ v: Q' G1 r 1.jpg   W, Y1 t( J0 H2 }$ U
点击OK后,能输出正确的信息:) j# B$ m6 T- Y2 I0 S% ^
2.jpg
3 z% a. ]. I" N# i. Y& V4 C+ W再之后,报错:; F7 V) r( v( h2 }5 M, k9 I
3.jpg : x* ?/ j3 q1 U
4.jpg , O$ u* T4 P1 `! b# k: V6 E3 w
日志信息显示的错误:3 Q5 V7 D2 a4 I3 Z# T6 e
5.jpg
8 ~# Y, T: U6 Y& y4 r+ [, [2 [主要代码:! H5 D' q8 p$ G" T* \! l* v4 l! P/ l
int BodySelect::apply_cb()- [1 w) Z' x3 L" T7 M
{; a) p5 z: {/ ]/ g
    int errorCode = 0;
5 P/ H( F$ ~$ C; K8 D    try
3 S+ A% Q5 i  }3 D5 x    {
- P, U- |. D; G! f1 E, b                PropertyList *pList = bodySelect0->GetProperties();
! H/ N8 ~! ]0 B. ?2 P2 A8 Q- L                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
/ i7 I5 H5 Y8 @# \# F& Q6 J                delete pList;
4 r1 b4 k8 o2 @5 m. V                pList = NULL;
1 N/ @4 t1 }9 r# J# a! h                                / u2 a- _' T3 t  m* z
                Body *body;
  r8 _4 R- h9 J2 T5 K, v3 w) n                int allCount = 0 , iSolid = 0, iSheet = 0 ;; A* H6 }7 m0 g
) h  V3 z% _1 C2 b9 _/ y' q
                allCount = (int)vTags.size();" ~( M  N8 D% }% x7 U& j: _3 H
                for (int i=0;i<allCount;i++)0 b! E! y0 P9 y  F9 ~: z# `$ i
                {
, O! A4 |& I: |9 ~: O" j                        body = dynamic_cast<Body *>(vTags
);
, |+ g& U, a" v! _                        if (body->IsSolidBody())
6 t; S% W& z, c                                iSolid++;& J5 h+ c# s1 m# \) o
                        else if(body->IsSheetBody())
/ M% Z9 u4 a4 q- h6 j" \( R                                iSheet++;
7 d: m4 H, U& S5 B* M. u7 g! {                }! P0 r2 B/ f9 Z( l6 d; Q8 r  d

8 f1 {: h" f- ?4 B                uc1601("Read select objects Finish!",1);. k# u8 {& {0 V. @- N/ a
                char chs[256]="";9 }$ k, x3 z% _2 z7 S0 d- |
- ?" D9 K7 J; i0 U" o  J
: M2 V6 I9 _7 F; a0 u
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);/ }: ?9 x8 a' |% l5 e
                uc1601(chs,1);9 v" ~  o0 x8 }; n
    }6 g( L# j& F  b
    caTCh(exception& ex)
8 m: u$ |: n( ]+ Q    {9 E# e$ {1 }9 a; B" M' _
        //---- Enter your exception handling code here -----. Z1 P' h) X1 |# |; i7 s; H
        errorCode = 1;! j  N6 E" H9 v
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
1 k  i( K/ N1 W! p    }
  _- E! u, R4 ]" [$ d, `: _    return errorCode;' r4 x" q4 P0 J. ~! R. H: o
}
" ?( B( T. T- f1 ^5 b
( d3 c& i! M8 r* I5 V
不知道你有遇到过类似的情况吗??
: h" p7 b8 d( ~! x/ z' W7 L* k问题是出在哪里呢??  B/ {: }. C  s+ M% {. w  E
也没有什么内存需要再释放的呀8 I1 ]/ |# l9 g* Y; p6 E4 ]
" c, ]* q+ T- V; k- w. W

- h9 V# H# R9 f0 E1 u! q
上海点团信息科技有限公司,承接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); / w% G' R) C. }( Z! E7 ]2 K4 T
, p( d  B* y4 J) u6 f& |2 T

5 g) M5 i0 S- z. o) F3 |5 {
. O/ K# R+ @3 e   body = dynamic_cast<Body *>(vTags[i]);
3 u! Z* r4 w; \/ N( H3 k% n4 @; q6 M# A
9 d/ y$ f$ }' w  H( X6 B
上海点团信息科技有限公司,承接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 编辑 5 L0 ~) g3 N* o4 q
' F3 t6 S) l1 L% @7 n% [
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()9 I- x- d9 M  ?
{" b8 i! l0 B) `1 ~! X" `6 |) p. }
    int errorCode = 0;+ m: p# }. L$ j, i- f
    try
, S: _. J0 a9 Z8 O0 \    {0 W0 I) G2 m( P
                PropertyList *pList = bodySelect0->GetProperties();+ M7 E" L  I8 b! R) `7 h
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
0 [/ V. b8 R' W                delete pList;5 r7 n! k; J3 o0 [
                pList = NULL;
8 X+ o7 d; ~! v! ~0 n! ?7 E: q9 k  {# e
                Body *body;* E2 m- P& i' |6 o
                int allCount = 0 , iSolid = 0, iSheet = 0 ;
6 O7 n9 g! X9 l0 E$ M6 k+ m2 F) J8 t6 o1 F% {+ e4 I: c
                allCount = (int)vTags.size();
. l: W5 K( V! r/ l  h0 s                for (int i=0;i<allCount;i++)$ h, Y. c" K3 p  z9 ~
                {
  p( a5 |8 l+ p! z% n5 q                        body = dynamic_cast<Body *>(vTags【i】);
$ Z3 t) s% X4 s. G! e$ v: U% f3 Q1 B$ c                        if (body->IsSolidBody())7 ~" S8 h" j9 Q1 X8 m8 l' ~
                                iSolid++;
) _/ b( v, ^5 |                        else if(body->IsSheetBody())
5 ^& G+ F- H: o8 T& ?' P# Y2 e                                iSheet++;! J" n' G3 _2 [+ O; O% M
                }
5 N/ ]" r; r+ E& M7 K8 z8 D' b                char chs[256]="";
6 c7 X1 j1 l5 h8 R; t                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);+ m5 F$ q( ]) N+ Y7 d
                uc1601(chs,1);
+ r! R9 R, g  o3 |! Z$ W    }
9 @: T, P+ Z+ Z6 B( N, p    catch(exception& ex)
: [) ~9 r* f8 o) C    {6 W5 Q0 G- [! o, r4 o/ v' [/ ^; j
        //---- Enter your exception handling code here -----. d2 [$ [7 z0 {: |5 |0 k
        errorCode = 1;
1 U  q! |! b% J        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());) k6 @4 h5 R/ b1 L& O  P" l
    }2 U% {6 k8 E; P) g  |- O( H0 l

0 O  s' n) a4 \: v    return errorCode;, b% u7 d! M6 d
}1 R: Y" ^3 V6 g/ G, g6 q; _
' G9 w2 m6 ?1 H1 O; N
有点不知所措了,请指点!!!- ^! D* q3 B3 I/ l. A: F2 X; N
' ]1 d6 ]" o1 r' z, A

! R% p- k7 V& s% A  @* g
上海点团信息科技有限公司,承接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" g% W8 M; i3 ^9 K! w谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()% x' D6 P# e, i" N: A$ i) s# Q
{/ r! E  Y: i# f2 N' S8 b
    int er ...

; q2 ?- |( V' S4 s  c' |! R你是 NX75 的吧 2 |9 E" e& o8 g- V# c- h
7 m/ |% e1 j2 z
这个的确有问题 ,你用 选择对象 selection 代替吧 * z- M; z( C& C0 E
) t' l. b7 j# K- R7 Q
设置一个 mask
4 U1 p, r+ Z8 m# ^
) d# {" x* u2 H$ J8 y2 Q' f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了