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

[已解决] 23 BodyCollector选择容器

  [复制链接]

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

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

smthan 楼主

2014-6-1 10:06:15

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

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

x
本帖最后由 smthan 于 2014-6-1 10:09 编辑
1 B, j7 d" Y. q4 H2 v& S$ Q
6 k- i) Z; M- V/ @ 请教:
9 q, ?8 O. @0 N6 t" e% t/ ~       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:2 q% w3 o! a+ E# ~" r# |
1.jpg $ _: C8 t9 T5 l
点击OK后,能输出正确的信息:
7 \+ L4 G" [. U% L, \ 2.jpg
$ |# u) g! @6 D' W9 u再之后,报错:( i$ b! A8 v7 z/ e: e- `! [# k
3.jpg 1 V+ _+ a+ d; J- O. Y
4.jpg : @! r/ k: C9 h' c% ]
日志信息显示的错误:3 w2 P: [. s6 e7 m8 ?$ ^4 ^8 w9 p
5.jpg
6 z3 G" N- T# ~  J1 C主要代码:& m& F+ f( ^; Z) w; b, r. b5 f5 _
int BodySelect::apply_cb()
7 h" d# h* t# X. D* }{( }8 b6 F1 p8 ~) h8 w
    int errorCode = 0;
; b; \  t' E8 M6 l    try
9 E1 u# l, q, J) {6 ?) w    {& M  ]! E7 l0 T, z4 E
                PropertyList *pList = bodySelect0->GetProperties();/ P9 g, g* X( |  |, N: K
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
9 n! f# [! [5 n; ]* i% A- V                delete pList;- R/ g0 X8 E" _& a! ]- H; L/ C
                pList = NULL;0 f7 M) t+ O5 ]+ A# D7 r0 h
                                % `" \7 X5 V" Q" L0 v0 F5 V1 F+ `
                Body *body;
# \2 x7 x6 M6 R( [; a7 |: p                int allCount = 0 , iSolid = 0, iSheet = 0 ;5 M# k2 b. A' F/ k# B* h2 @, H0 E
% O' S) u  {) j% K! p8 F" z* G9 b
                allCount = (int)vTags.size();
9 V0 w8 h) c  a+ t. N( b% ?8 r                for (int i=0;i<allCount;i++)
. b% F- B6 a2 D5 q5 k                {( ^' p6 Q" {! t: q
                        body = dynamic_cast<Body *>(vTags
);/ M7 |6 c, O  i, z+ D
                        if (body->IsSolidBody())
. B2 k  |+ Q- c                                iSolid++;
5 n1 y" X) I0 x* y! T8 a' D% \7 ]                        else if(body->IsSheetBody())
# p: Q! s2 N/ G                                iSheet++;
% ?0 x" f$ N  L                }' ]6 w$ j* O$ ]7 T* T
$ I5 V. J0 W5 J
                uc1601("Read select objects Finish!",1);
$ ?7 {! q# `# S! j# |/ g                char chs[256]="";* n" W9 [$ O" d$ y& W! v7 \

, J: e" e% P# ^( n1 T: [' ^! l5 f8 n9 Y3 _; r; M' a
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
! }* I1 f( c, ~/ _- @$ b& q+ k                uc1601(chs,1);
/ r( m! r7 b& D- y7 G' [    }
% L$ V, o9 J/ L+ }! B    caTCh(exception& ex)* h  Z' Q, P2 w6 g9 m
    {3 {% z( V% \. a
        //---- Enter your exception handling code here -----
  N* u' g8 `2 H* W& j6 }        errorCode = 1;6 Y. q& Q' J" ^
        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox
::DialogTypeError, ex.what());
) v$ ?* w- d) [. j7 R' X    }2 W/ c# X" G* s1 t9 {
    return errorCode;6 q6 d3 ]( Z2 ?8 `0 e* g* Q. W
}
+ ]: x" X7 f' h7 C9 K
) w1 i5 H0 {" ]" Y9 }
不知道你有遇到过类似的情况吗??
  o# X1 [8 }0 S! b& p4 d  ?; A问题是出在哪里呢??
- k+ R3 r( I5 Z1 {# o3 H6 }) o也没有什么内存需要再释放的呀
! S, J! O4 F8 n( Y: l" g- V: w8 G/ M( b
% I& N% q4 M) A+ [
上海点团信息科技有限公司,承接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); & }0 P, _) n: S* p4 S. G3 R8 I
$ q# e9 e! k4 |+ L9 R

9 S  p  Y7 d: |0 T2 _1 Q/ V5 U9 q+ _4 U6 c2 ^0 r2 b- ?( f
   body = dynamic_cast<Body *>(vTags[i]);
. f, ]0 I. g1 \% b8 e  P+ v$ I& l: x* M3 v/ O3 b

* \; t5 g$ b) k( q" r9 X* v
上海点团信息科技有限公司,承接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 编辑
4 ^& e; H! R7 R  Q$ f+ l
2 u/ d* }) F* y, G# n! ~& G) [1 W谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()0 y8 @2 u4 S+ L8 f3 `: ?
{
* U8 d3 j* d& J: k3 H    int errorCode = 0;
9 X4 U# e) n* v# r' u    try- l1 A/ A9 J/ `& r) R, i7 v
    {
+ |4 a3 {" T0 L7 f' e                PropertyList *pList = bodySelect0->GetProperties();( [6 _8 W: w* x1 b" G/ y
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");. }' m/ f0 D$ R: N1 D8 w  M
                delete pList;" U8 R5 c  |, v# y1 V# X$ W) ^
                pList = NULL;* M) e/ D& A+ D, d
1 z/ ~# s9 o6 \3 f3 R
                Body *body;
* U: A  h) ]- y& j$ T7 M                int allCount = 0 , iSolid = 0, iSheet = 0 ;) ~7 ^- }+ O$ ~0 c) {0 s3 g
8 l5 J  S3 X0 h& a, g
                allCount = (int)vTags.size();
% m: |. C+ n/ S6 i6 L                for (int i=0;i<allCount;i++)
" B! c' [# Q5 F' j/ V                {- _. H. N# J- @; T% r2 O
                        body = dynamic_cast<Body *>(vTags【i】);/ X( |' |6 _* r! K+ ?
                        if (body->IsSolidBody())/ u2 }  N$ s3 X9 w) H+ l1 Z
                                iSolid++;
; P- N2 G% b9 I                        else if(body->IsSheetBody())
1 n" r1 ?! y; i( B( J8 L* n+ m                                iSheet++;
1 S  V) h2 h" |                }  ~4 ~2 H" [4 C" }2 U: i, c
                char chs[256]="";9 U) [6 h( s, k. }* X8 ~
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);; A0 e+ z& j6 A( d$ h5 j
                uc1601(chs,1);1 ]6 A7 z4 r2 B
    }
& P+ w9 v. D' j    catch(exception& ex)  K5 ?' Z, |- e% H+ X
    {4 t+ }3 P  g8 @
        //---- Enter your exception handling code here -----
% n, I5 d# t3 q# E& b7 j2 e        errorCode = 1;
4 T( K3 r6 f# n! o  ?        BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox:ialogTypeError, ex.what());8 o3 u- I5 B% K* N
    }
0 z' `6 Q1 p$ s8 i6 V7 _' @* @0 c9 O8 Z  i6 I% x
    return errorCode;
; F2 H7 Z4 o# o' Y  R) x6 [}
1 i4 Z/ [- `% E6 p: f/ F7 \1 \0 C# K7 t& a
有点不知所措了,请指点!!!
) d# l7 T+ |2 |$ Z& }4 u7 B# K  |' c7 Z" J+ V! K

3 d2 H' ~  O. v. C+ 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$ {. U+ K: S* n/ v! T
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
5 g# K1 \: T6 _. J1 \{4 @5 T1 t$ Q/ d  A
    int er ...
/ ]& O! m( I9 ~/ O
你是 NX75 的吧
# c( j, F; F, u* `8 L# l  E# f* b; c) f0 `8 P% s' @! f( r
这个的确有问题 ,你用 选择对象 selection 代替吧
# d1 k! D) c* y; i" _) t$ }: |# b: b" z- a2 a! _: g1 D9 j' i
设置一个 mask
- k# s! U6 u! y0 H) K" |/ X7 L6 u' y4 W5 o1 Y+ V3 k9 S6 G8 v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了