PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

[已解决] 多次调用后提示 执行引擎异常

  [复制链接]

2013-12-20 09:27:11 10526 14

坚守 发表于 2013-12-18 16:26:08 |阅读模式

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:, N' O# M! Y8 f8 }7 Y1 `* c
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
# M( V7 O5 c; U                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;5 `$ s5 I# d% v# G* X
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
9 U5 O- s( w1 B/ _' y! l$ U: W: e# N9 l. n. A# `1 j* N6 J
                Face[] faces = new Face[1];
" B; s7 S+ j9 }' [/ |                faces[0] = face;
7 y$ x; m6 n* z3 K$ i+ _                FaceDumbRule faceDumbRule1;
; p  c% u+ z& e: M                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
6 T& x: l* F0 K7 L/ D                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];! T/ a+ E) g" T- D8 X: p7 V
                rules1[0] = faceDumbRule1;2 ]$ K; A: V2 [5 h9 d2 g
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
  U( d. D( R) P; f4 t" Y1 S4 c7 p9 O' F
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
: i  ^9 Z$ g4 R! z                theAdmResizeFaceBuilder.Commit();2 f, \1 M: n5 I7 J* ~8 _7 T7 z  w
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;9 f2 ]" e1 ^0 g( C' E! P: W" p$ Q; r
                faceDumbRule1.Dispose();
8 d# N- \% l4 E7 ~! a                theAdmResizeFaceBuilder.Destroy();
! |* @8 L: M" E  n) z: y: q- C) J' a' l

8 Y) p- J2 j9 l6 B9 S. n由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值0 ^- T7 i2 }3 b& ]  Z* ?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复14

admin 发表于 2013-12-18 17:28:05

admin 沙发

2013-12-18 17:28:05

你就这一段代码吗?
6 K3 k" _5 d) H其他的代码会不会有问题
- T$ m8 R- T0 L" a5 p这是你录制的代码吧,你的face选择都是同一个?
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

坚守 发表于 2013-12-18 19:22:24

坚守 板凳

2013-12-18 19:22:24

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:
, X/ w. G( [% U5 lusing System;
- u; d; M: `7 T9 \$ E7 j% Zusing System.IO;
4 p5 p. K% L5 r$ T/ Gusing NXOpen;
3 H2 g* v) E6 dusing NXOpen.UF;- v$ F' C3 X5 N. ?8 z: z7 b& ]
: z6 U  l1 L# {: c/ y
namespace InstanceFeature$ Z5 g5 a- K4 H6 e9 _
{
1 {- z, o  d" ?2 I1 o2 L    public class InstanceFeatureEdit; v8 D5 x4 f  f/ D4 _$ [6 O' C9 n
    {
" w; ~1 P% S% z- w: z        private static UFSession theUfSession;
/ N# B4 g* s" G# T5 h        private static Session theSession;
" W! a+ E( `* h3 D! n! u' [  M3 h. j* r0 |1 P4 j
        public static void Main(string[] args)9 C& i7 A  O2 g
        {
* ?& j& X% w+ v0 S6 E+ O% A6 O& `. l            theSession = Session.GetSession();
- v! _7 W5 J0 J% b            theUfSession = UFSession.GetUFSession();
- {6 x# d! Q' \. N            theUfSession.Ui.OpenListingWindow();, f1 B, z' L$ V, m; w
            Part theWorkPart = theSession.Parts.Work;
$ C9 ~$ h% q# W( t0 U% A            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;3 k; s/ h; H7 o' ~$ B  z
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();; q( n, J+ z4 r
            for (int i = 0; i < theFeatures.Length; i++)4 s( y0 N5 I6 w* P
            {
! F! w' T0 c% H, @                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");4 Y; C5 h+ y  x2 j9 s4 _9 I$ c2 ^
                if (theFeatures[i].FeatureType == "BREP")
. K6 D) M' G! L6 I* v$ N                {
* V% c# N% T# l+ y9 z, W                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];) q$ S0 z8 u; `, Z' k5 H
                    Face[] faces_of_brep = theBrep.GetFaces();: \/ ]* r; a; Y$ f! P
                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
3 ~' R# \; `' A+ Z( M( a                    for (int j = 0; j < faces_of_brep.Length; j++)! L: ?$ W( D9 M& G
                    {6 t# Y! }8 f8 _6 m
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();" \9 U, G3 ]/ E$ i8 s* Z5 h5 r
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
6 q+ j3 B3 x0 h+ ?9 b$ ]                        if (facetype == "Cylindrical")3 J& O/ Q# `2 Z: K9 B9 V3 g, Z
                        {
( b) [5 k) Q5 C! B2 [. a                            int type;
7 o+ I1 y! @/ x                            double[] center=new double[3];' \$ Z1 l: T9 m- `
                            double[] dir=new double[3];" L! I" @9 Y. y9 x! ], S1 |
                            double[] box=new double[3];1 @* u3 V7 x7 @
                            double radius;
1 u" w" K  ?% f, d                            double rad_data;  D1 |) ~, u- b7 K( U3 X
                            int norm_dir;
- R- J* X/ q' _/ _. c6 K7 C- G$ H; k: d                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);
  |4 H& g8 Z! I                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");
1 L0 q4 q# e5 @3 ?  t  [0 h                          //DeleteFace(theWorkPart,faces_of_brep[j]);/ s' q. t, w  j6 M3 j! C. r/ y" {
                            double NewDiamter = radius * 2-2;
# X" z6 \* y/ f                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
& p6 L0 J! V, P* p, F" V7 W                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);" w$ }  u2 s2 Y
                        }" t& l. B5 P0 f% B5 k- m  k3 s
                    }; q# n9 @0 Q: x7 h, R3 o2 j! M
                }
: ?* y! |; B6 i- V* K# u1 H8 K                if (theFeatures[i].FeatureType == "CYLINDER"). R8 \+ u" K4 J! }0 k
                {3 A9 W7 s6 \1 B
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
- T/ |' [0 S) }$ [                    Vector3d dir = new Vector3d(1, 1, 1);
/ Z* B  o' e- J' m8 b5 D' j                    theCyliderBuilder.Direction = dir;
1 h/ q3 }- W! F" \3 [- l                    string str = theCyliderBuilder.GetFeature().FeatureType;6 ^1 m! K6 Q1 g, k9 y- q
                    //theUfSession.Ui.WriteListingWindow(str + "\n");2 o& e3 |: J2 H7 G4 M
                    theCyliderBuilder.Commit();
) `" m2 j! k2 L+ x% R; Z                    Point3d point1 = theFeatures[i].Location;
. l/ @$ F4 N9 m; R                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
. C0 M; Q: I2 D9 |! }                    theCyliderBuilder.Destroy();8 o+ M3 h3 P( V' b
                }
+ b( W1 w# {7 [            }/ [9 ?  a( d% L' @( _8 O
        }& C' z7 h8 I. m8 _! Q' x0 e) Y
4 n! d& d! L/ Y! U" ?5 p
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
: r# E, ]; z7 c, R' L8 I' i        {
/ f* _- O' z, E+ y# r  \# b            try% ~2 q! w7 Z& Y7 E* J5 \! m, F
            {0 \1 W& a$ M3 ]) H! r. ~. T3 u/ `' M0 I
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;/ L3 U( i+ ~! }- `- o/ m
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
( B9 I7 y4 ]# n$ c                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);& Z. J$ U3 x! i, h4 I

+ x' N- H$ ^6 |1 u. i6 p/ b                Face[] faces = new Face[1];
6 g! Q) {" _8 E1 P* q' v                faces[0] = face;. X; z9 ^) k" @, v3 r4 s
                FaceDumbRule faceDumbRule1;
) S/ T  i6 w6 i9 Z( d  K; E7 X                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);! I% _* P% Y* [& n
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];% P5 ~  s- V7 V* h
                rules1[0] = faceDumbRule1;$ W  s7 f& r6 ^* N5 S0 w9 G
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);: c8 S0 t/ ?+ ~) C
2 Q& {% e8 [9 d% J# g
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
; d4 _8 ^' I: Q                theAdmResizeFaceBuilder.Commit();
: j0 v+ @5 d9 }0 ~7 A& |- S                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
6 a! U% e- E5 q% _7 Y                faceDumbRule1.Dispose();
9 b3 q4 m, V1 r  o                theAdmResizeFaceBuilder.Destroy();
9 W& z( G6 v8 ~9 r/ w            }; p8 h# C. T8 z* @, R7 S
            catch (Exception ex)
9 E8 E% ]- w9 M: a+ u            {3 O: l. D$ |  z8 h& o8 n- E- Z; P0 c
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");8 c4 i6 H1 b, {5 g( Z/ ?9 I4 t0 s
            }
+ I2 T$ F/ w& T        }
1 s! `) o! r- f% U! n( h: ]2 ^' E1 P( Z0 P  ~5 Q
        public static int GetUnloadOption(string dummy)2 B( E' T( f# n' _
        {0 \% L6 e$ f9 z5 X$ G
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");( R( o2 T- S& N5 e8 @
            return UFConstants.UF_UNLOAD_IMMEDIATELY;! G5 ]5 o4 I# ], I
        }
0 D( E  z/ o9 N: t$ m! n; t    }7 k8 I/ z' f) @1 N3 M0 b: M
}. J; v* Q' A% W8 g
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

坚守 发表于 2013-12-18 19:25:28

坚守 地板

2013-12-18 19:25:28

如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处理,到了一定数量以后UG就死掉了。
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

mildcat 发表于 2013-12-18 19:27:47

mildcat 5#

2013-12-18 19:27:47

坚守 发表于 2013-12-18 19:25! c" j! m2 g8 m- h& ?4 B+ @
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
: _1 g; `4 a( F% W& O! f
估计那个地方要释放内存
4 j0 m- Z/ ~! |* {
0 Y! G% F, L( `+ A; T这个需要调试的 ) i7 A0 f0 M' W" E* ~; V( P
9 z" v. d5 ~8 O
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

mildcat 发表于 2013-12-18 19:28:38

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
. O8 _6 g# ^4 k( Y如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

8 ^. O2 B' v, x2 P  `  [) b另外你干嘛要用同步建模的功能
/ L. @$ y7 ?" Y4 p5 k6 }' `3 F8 g( x& y' X/ C
直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

坚守 发表于 2013-12-18 20:07:44

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28' |) g% T: l/ z2 \* Q# ]; X
另外你干嘛要用同步建模的功能( F: {/ a" s& k9 i& C, [
" y* W3 v9 I# q6 _( o$ y' [& U
直接使用 偏置面 不是更好
# i( K3 g1 L, ?9 g! U; C
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

mildcat 发表于 2013-12-18 20:11:32

mildcat 8#

2013-12-18 20:11:32

坚守 发表于 2013-12-18 20:07- \* e5 R; a8 d- v
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
  X/ w+ I8 B; S2 O; h
具体这个 我还真没怎么研究过  ' o8 t$ p- W* f& s
  l, J+ A/ |6 r  e( w, T! k+ D6 ^
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题
8 \' e. x# Q6 j1 n+ o2 o6 b" `, d. w! ?
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

mildcat 发表于 2013-12-18 20:12:11

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
. m% a" [! H! R% D/ _, ?' S偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

! T, p; v. P% t- {5 t; h你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

坚守 发表于 2013-12-20 09:27:11

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
! Z0 n1 Z" u( p$ p. q你主要要实现什么功能, 需求告诉我  我写下看看
) f# r- _2 Y, _* `+ `1 i8 C5 ^
我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了