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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑 8 V/ y# x5 i8 J1 p0 N4 X
: ], ^) F7 N5 o; }+ N/ X, K' v2 |
请教:
$ n9 a4 r. i6 `' i' o       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:. e1 `$ M* @' K+ e
1.jpg   ]8 u0 w0 m3 n; C& Q9 i
点击OK后,能输出正确的信息:- k  }: U9 V7 s& A3 f# a- R0 I: k
2.jpg 1 ?& h3 k. i/ h2 a$ I
再之后,报错:, h) M9 O2 d! A$ I
3.jpg
+ C) |3 d3 P- @# ~, W( W* @ 4.jpg
- i: c* A6 Q  x) S% Q日志信息显示的错误:* n3 o! ?1 ^2 ?! j! ?* ]8 u
5.jpg
3 @7 M' L/ Q) J, C/ e7 `6 j主要代码:
4 R# a; k/ v* [int BodySelect::apply_cb()/ o7 d. U; N" T/ c, ^* Z
{
. m! W9 c, g/ `1 K% p    int errorCode = 0;
# O7 r, ~. r4 g) x5 ^1 ]* B9 t    try  ~: w) h/ t7 B, s: T
    {
! e1 E3 E6 V6 W# p( p                PropertyList *pList = bodySelect0->GetProperties();6 g. [; b8 d! e  Z' p- J- K: ?/ s- F. w
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
) b7 X. f* u2 a  P" b                delete pList;7 j' b9 K" ]4 r8 u. H  ?0 j
                pList = NULL;) I% D. O  I: i1 G# y
                                ) k0 a4 m9 N/ C4 N, T" f! b0 t
                Body *body;
5 U6 `$ a' V4 V1 d                int allCount = 0 , iSolid = 0, iSheet = 0 ;
# {* P: Q2 b, x* I6 T& U( w" m+ z( v+ a
                allCount = (int)vTags.size();3 g3 M/ w- n. {4 w+ e  w. |" ?
                for (int i=0;i<allCount;i++)
% n0 v. v0 X8 e# @                {
  e% y4 ?  m* \" P0 S( Y0 r, _( _                        body = dynamic_cast<Body *>(vTags
);0 h# S- Q5 j0 {
                        if (body->IsSolidBody())
. G9 x7 ^' j, s8 I& m' t% ]                                iSolid++;
" s8 Y0 p$ ^7 ~' `  [                        else if(body->IsSheetBody())) A. \* ^3 L% B; F
                                iSheet++;
  v  ?5 J$ K4 s3 c. l  L                }# J( I" J- U5 j" B5 o
+ B2 {; g% \: ]2 Y& q5 Y+ [
                uc1601("Read select objects Finish!",1);
9 S; n/ }( E  n$ {$ H+ C  J) i                char chs[256]="";
  @, M7 Y6 X7 i1 c: x( u# ^
/ t2 [" E- ~; i1 @3 _
" V0 {/ M. `# d/ U                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
* s) h9 y' G5 H" y) Q$ ?                uc1601(chs,1);
$ Q5 y5 O5 l0 S# X    }; R- g! u* v8 }7 e8 O
    caTCh(exception& ex)7 g; _# Y- k. o: V6 @4 X' n! {
    {
; y. D8 \" C3 W9 [! K; g: z        //---- Enter your exception handling code here -----
4 P' W/ j) S* J        errorCode = 1;. @: v% |# x" B, V2 Z2 A, G+ J/ m
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
3 Q* [; H0 K9 a9 p. h5 a$ [5 y    }5 \# W, M. k/ R+ v
    return errorCode;
$ u9 M& ^6 A6 O- m: X0 C}
0 g* a2 m: }4 t1 B7 h) B; c
/ z( K& [8 w2 k8 F
不知道你有遇到过类似的情况吗??
& j: ~0 p6 U5 s. b% T! P6 W4 L问题是出在哪里呢??4 Z  g6 y/ c8 ]- V' ^
也没有什么内存需要再释放的呀
+ V! z, n: N$ v; |3 r
- M6 `) P5 a4 ~
1 B, H! a  K. m
上海点团信息科技有限公司,承接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);
- u; J  p8 A) Y& W8 ^4 e$ x
. ~" X/ z- M  W; s4 F
6 S* d7 o" G. m5 p' J
; E4 {! M) K. d# e" j1 r   body = dynamic_cast<Body *>(vTags[i]); 1 y2 v6 ^& j/ q) ^5 }

4 i! z! \! F" P
# @. N" g2 G' v1 z. e! o
上海点团信息科技有限公司,承接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 编辑 8 Z( X7 x2 d" x6 d: W- l
# S) v# w( C+ ~% r2 L6 Q
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()  ^* v) r3 e7 _6 R
{+ f' A2 s- K' W0 @, }7 e& f7 T; X# z
    int errorCode = 0;% s' |4 l1 ~4 ~' t0 i
    try+ I% [; @- I7 ~# _  s' [. Z6 P" {
    {
" T" N! h& H7 L) }                PropertyList *pList = bodySelect0->GetProperties();
: h: B3 B0 }3 m: @4 m                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");) y( U% u# x+ @, `9 |
                delete pList;
  I) P* Q3 t6 q5 o                pList = NULL;
3 t. d9 p4 P3 j2 D: Z& p  h# D1 c% q' i$ d; O& R/ j
                Body *body;
+ A7 n1 h3 g, \& q                int allCount = 0 , iSolid = 0, iSheet = 0 ;+ F3 L1 d0 z. s- |. H3 v
: W: K( L, s  v4 X- C: R& n
                allCount = (int)vTags.size();! d# M/ B) ]  j! p* b$ D
                for (int i=0;i<allCount;i++)! Z) s: Z9 y" F+ w5 R% h
                {
3 o% l5 f# y0 V' X; v# y6 W0 O                        body = dynamic_cast<Body *>(vTags【i】);$ V  T2 h% v5 p
                        if (body->IsSolidBody())
' a9 B/ O/ \  _- h& Z                                iSolid++;
+ S" G8 {! m7 a; g0 A                        else if(body->IsSheetBody())! o. k8 ^$ E+ W! \- Y  U
                                iSheet++;
" w$ F8 |, k# w5 J  C, m* d                }6 x! G8 A* ^7 A" u  u8 w2 q
                char chs[256]="";
' Z% ^* P8 u: [$ ^: {; Y8 W                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
( h; C) u* x  V' w4 B                uc1601(chs,1);# c* ]3 B" G& O) u" M6 A% o( J
    }: {2 R# F0 o( G" @7 O  p, S
    catch(exception& ex)( c: x3 B1 B* X4 Y3 O' r7 Z4 c1 D  k% x2 H
    {
% I* M* ^, z" q        //---- Enter your exception handling code here -----
9 p# H/ {' x' z/ B9 m+ h! {        errorCode = 1;" N) c7 P1 W# Q5 l  ]
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());4 Z$ x# C/ L4 H2 ^5 R, A* P! q2 Y1 ~
    }7 ^1 a- i1 R+ C

0 [; A1 x" I9 z5 P    return errorCode;' \* k% ^: @. q+ c
}) I" x0 Y* s; D0 P/ F

, U2 y/ w) ~1 R8 A9 `# }有点不知所措了,请指点!!!
0 O! K* H( F( }' G4 Q' Q8 w: R$ }) s' x3 a  W' X' [& x* ]

5 ~) d# }/ c( F3 R3 V9 R0 `# n3 F
上海点团信息科技有限公司,承接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, D4 k! }8 H/ X) \" S6 H, U3 j
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
) K/ q# U( Q: t) ^% q{4 t" ~" \* _- Q! |. s
    int er ...

2 I/ |9 Y# j4 k, T2 b/ G4 K你是 NX75 的吧
7 |2 A: O# _) i5 F: a: V& i
& r0 p6 T3 k& j& U' q+ a7 K0 i& N这个的确有问题 ,你用 选择对象 selection 代替吧
1 Y  E1 J/ k1 ~% Y0 f; B. U9 z+ ^2 N% ^+ D# p$ u6 n
设置一个 mask: v/ q+ \. X' @8 i: y1 @! |* O
& X' A& ^; X, m4 a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了