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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
5 t  T. |5 O0 a. @5 Z& X" t1 I8 s& c6 B3 C& F% c
请教:
8 B' p- K$ N6 y4 Y/ T& o9 a4 w' V9 y       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:, O/ J" \' H. Q+ U
1.jpg
! a7 X; F. }2 M6 }% l% y( @" K点击OK后,能输出正确的信息:* P! U. w/ O4 C* r7 ^+ i, U$ Y
2.jpg
# T' \( o8 g8 p再之后,报错:
: R4 \2 z4 |7 h$ j 3.jpg
0 _5 E+ S  P  U2 H3 x 4.jpg 3 \$ x0 e% ^$ n+ j4 j2 b
日志信息显示的错误:
6 y* P6 B7 d6 i. t' u2 W0 o0 [ 5.jpg ( n% Z+ c5 ]  O: ~
主要代码:; ?3 i( B& ]' s1 C8 b  E0 x
int BodySelect::apply_cb()9 J7 N, n: P( e& J% q
{/ P+ D7 F8 z8 H2 _
    int errorCode = 0;4 T# g; n! s$ E" @; _
    try
6 Z) C3 e) w% k- n- p    {
+ n( ~* D. c2 T5 z' `9 r( ?! @                PropertyList *pList = bodySelect0->GetProperties();
2 f6 \" t/ ^4 G                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");% R; T7 t6 u+ c- w# I2 w
                delete pList;4 ~/ B! p5 k' k7 E# Q' g
                pList = NULL;* e6 k2 q2 F0 F# k+ ~# J5 k- K
                                9 D8 f! b) r& \' {9 f6 A) ]6 ]  L5 Z. v
                Body *body;
" l" G% G* |8 w; ^  s: a1 O8 A                int allCount = 0 , iSolid = 0, iSheet = 0 ;) Z. U8 B+ R$ r# p2 \! z+ J

- p0 L- _$ b0 w0 Y                allCount = (int)vTags.size();# l( t& _2 ~3 d3 v6 J
                for (int i=0;i<allCount;i++). y; K) A8 v- V* f) B' c/ y9 `
                {3 B- k6 |0 t, {: B6 T( C7 t: A
                        body = dynamic_cast<Body *>(vTags
);
" H2 {  x3 O: C! |                        if (body->IsSolidBody())
8 c9 U8 S+ s$ u  |* n0 d* k7 M  v                                iSolid++;
1 l# u& t+ S& H  Q* d  g3 c0 P% o                        else if(body->IsSheetBody())
& \: Q* S' }9 u0 \4 w1 g0 q0 h+ U( w                                iSheet++;
+ v, i; V! q0 M) g  p9 y; S                }% R3 u4 x+ f  ]; Z# d7 E" P) @

9 g9 Z* V* j9 o! P) g                uc1601("Read select objects Finish!",1);: @9 F% {/ Q. X5 W3 u
                char chs[256]="";
; B; N8 O: B4 |$ t2 p( ~, D; ~; \. _0 @4 x$ W% w" Z8 D* t
( y/ {. X4 e7 v. f4 l7 R5 b
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);& J9 f" V% c; i3 d/ X2 h! e
                uc1601(chs,1);& X( o8 T' l( C9 d6 C/ c
    }
: p# }3 ]' Y$ P1 C' E) R* G9 L/ E    caTCh(exception& ex)
1 J: v5 {2 o3 ~; F% r5 h, ^2 M& m+ K    {
. C) l% C4 p$ c( t7 A: H+ g3 K        //---- Enter your exception handling code here -----) i( F$ `/ @3 X( f
        errorCode = 1;
; I3 m$ s: B7 I, }7 F        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());9 T" }' c1 q! E6 t% H, @" o" I1 ^
    }
+ J' L! D8 M9 K) s0 \    return errorCode;9 X' l: X, R  d0 I7 Y, U' r+ O
}

2 q6 ]3 m% K7 l8 _% ?3 \% U- S5 G. ]/ e) l! p
不知道你有遇到过类似的情况吗??0 P, v8 L) Q6 w! {1 a
问题是出在哪里呢??* D! d* M/ n/ J" N2 u- ^
也没有什么内存需要再释放的呀
# y6 N2 p2 {- H1 h
0 o) h4 N/ W8 J) V  ~) {0 U2 d' H) d3 V' f1 z/ I7 _# {
上海点团信息科技有限公司,承接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);
5 }+ q3 k8 k) S) C: @0 f
; E2 J$ C7 L' }" R! e/ e9 Z& w7 R: ?! @6 x% \9 \7 F

- i; H. Q) p7 p   body = dynamic_cast<Body *>(vTags[i]); ' o4 x6 U: ~/ N7 {! c
- ^" Q4 e0 p# v, x" r( q6 t! R

* d& z8 Y+ ]7 k% m7 Y, h0 @% J) 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 编辑
. y2 k" S0 w2 Q$ d7 J; x, V4 q9 L6 D/ C) G
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()0 k# O1 }. S; W* `
{, k" `! Y& e. b, N4 M; @) {0 G
    int errorCode = 0;
) T6 E/ Y3 c* m2 e' a8 ^* j% |8 c* h    try
) E" R. {4 i! v1 R% G    {: ~: z6 L. Z% G1 q4 q; s! u
                PropertyList *pList = bodySelect0->GetProperties();7 e) w. ]4 _+ X: a/ M0 [
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");6 m  G/ `1 G7 u2 P+ w* \) Z
                delete pList;+ Z/ t  \7 t9 N/ a
                pList = NULL;4 x, z$ N! m1 m# E/ Y- y+ Z; e' H5 L

& G4 F" G. Y, |$ Q- q5 N                Body *body;! T9 o- o/ `* {
                int allCount = 0 , iSolid = 0, iSheet = 0 ;% @  f# i& @: S7 u" m# `1 I  }
' ?9 ?4 F9 i) Z( ]/ v0 P
                allCount = (int)vTags.size();1 C: k& H0 h8 F& T% M9 ~
                for (int i=0;i<allCount;i++)
8 a; p/ F) y; S- l0 v                {# X8 N+ v( ]- T2 u
                        body = dynamic_cast<Body *>(vTags【i】);5 }2 x4 T$ @5 I5 m
                        if (body->IsSolidBody())7 D  u# H& e8 J
                                iSolid++;% S4 `6 K9 D% \9 _
                        else if(body->IsSheetBody())
) N8 ?) S) O6 |" H% ?                                iSheet++;
: @! a7 }& ~& t1 i                }
/ k; a5 z5 J, q                char chs[256]="";
; O1 a- g  R* b& N, y                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
+ s0 K  {* J3 C$ F" y8 h  `                uc1601(chs,1);
2 F: \! e3 C) C6 m5 X$ x2 j" X    }# L' L! x4 b) Q3 K' ~
    catch(exception& ex)3 t' `" b4 c! m
    {' u- N0 D( E/ Q: d9 K; R( v
        //---- Enter your exception handling code here -----
+ Y! Q* I& I; D2 f+ a        errorCode = 1;
4 h$ C& G* I6 R! X+ c        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());
' u1 B! ]* v8 Z6 ]% x$ ^    }* s$ C$ i- U' S; @

) k/ ?- ^2 P1 s% l4 H    return errorCode;9 g9 q: z4 g$ L( `
}6 B+ c* Y1 H: [. o0 A$ U; Z

0 ^. f7 T: V7 e$ u' M! O有点不知所措了,请指点!!!
( h( V/ G: B, q2 Y/ D+ T! t8 z" W* n4 K9 r* s
7 W6 |  Z& {4 _) X( Z3 {
上海点团信息科技有限公司,承接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
% ]3 l4 E0 V: H; l; M+ B  P谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()/ U, s  a! u4 g& G( g
{7 z8 \& ~# i  `
    int er ...
, i7 g- d' @& S! m( z  M
你是 NX75 的吧 5 _, ?. Y* y( |  J: ]0 T
) A5 T) @: H. N6 k6 P
这个的确有问题 ,你用 选择对象 selection 代替吧
+ L) ]9 @( O+ ?
: n3 v8 D" `2 U* C6 X设置一个 mask( {# i( }2 F9 H8 S- f; n4 y

8 l% |; r2 |% R5 U3 _0 @, G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了