PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

  [复制链接]

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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:0 `/ |+ j" a, c9 X& b$ V7 Z& A
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
! V4 F' Z3 W, n) ~' K( b                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;6 O9 t0 U  F' _' t# p) i* h
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);3 K) K, G* S: _9 `* x

* b: w2 {+ r" W. K+ Y, O                Face[] faces = new Face[1];7 r9 f2 Z7 D6 p; [4 @, _; c
                faces[0] = face;
& Q: \* n5 d  o) ^8 U                FaceDumbRule faceDumbRule1;; ^) ?/ v; c0 C7 _5 P4 }
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);5 m. k4 `# J& G$ ^! o/ b7 M
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];6 U) J# _' v4 T6 n( R: d
                rules1[0] = faceDumbRule1;0 E. n. s7 B+ H& o5 @1 s
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);: v% C8 o+ x6 F# e8 T1 G
) B# A4 H- \2 T* l
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();0 H3 c4 d0 Q" V8 }# E$ m
                theAdmResizeFaceBuilder.Commit();
$ o: q5 p- f6 ?, [6 |                Expression expression1 = theAdmResizeFaceBuilder.Diameter;9 z% i1 I4 D  ]7 \2 w- X
                faceDumbRule1.Dispose();+ `; }- s6 |6 i0 Z2 i0 T
                theAdmResizeFaceBuilder.Destroy();" ^4 f* ?" U$ F' p: x2 ~

) p, [1 L$ _9 u  k; `/ s) K- y4 b2 b
由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
/ f$ L" x: p) g2 p7 ?
上海点团信息科技有限公司,承接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

你就这一段代码吗?9 H9 R, l, H2 G5 Y; t* T0 S
其他的代码会不会有问题; h& R+ {+ O2 `7 s$ P1 y" R! C
这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:
9 K+ C/ n% f# I' N+ uusing System;
6 n' j% ^. s+ C+ \( ^$ ^( k. S) Tusing System.IO;
" i/ k, c& U, ]' l) zusing NXOpen;
  y' F* T' [" X8 `8 X% Uusing NXOpen.UF;8 e' E) w& `: X+ S1 ]
- c2 ]& m8 n' _# s8 |4 t0 m1 I
namespace InstanceFeature
8 ]5 D( Y8 D  B{' Y1 I5 G! l5 y; _  H& k
    public class InstanceFeatureEdit
6 ^! p" s' m' q. C, n' T    {
8 G; z" x8 X' Y3 |        private static UFSession theUfSession;
" I/ C6 u& f0 ]        private static Session theSession;
7 s, A0 Q; T8 w3 F" l' _' T
7 y! ?! `: o$ d$ j! E% w; U& Z        public static void Main(string[] args)
# ^: M2 ~* o  L6 f  K7 w5 w        {1 f7 H; T' S# P
            theSession = Session.GetSession();
' [+ K% ~7 d7 M9 f; N            theUfSession = UFSession.GetUFSession();
, b9 _" e9 N1 Q9 x" H  \2 _            theUfSession.Ui.OpenListingWindow();) c" e$ i, ?1 H- e
            Part theWorkPart = theSession.Parts.Work;4 b& X. {8 S3 O, A* x9 X
            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;0 ?6 Y! ~) t( P- Q+ O
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();
% @4 W( `+ g0 O( x' B2 Q            for (int i = 0; i < theFeatures.Length; i++)2 |( b4 N& B8 Y2 ]' ?
            {
/ K4 z$ J" E/ e  z8 f* L& M                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
3 A5 x: c' _% A3 z  ~; J                if (theFeatures[i].FeatureType == "BREP")
6 j+ \* I/ U4 n' C                {
% Y' ~* I. o6 V2 V, V/ Q                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
/ L+ V2 f5 L- f- `                    Face[] faces_of_brep = theBrep.GetFaces();! f9 R: Q# g$ F
                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
! a6 [4 u) ^0 |: T                    for (int j = 0; j < faces_of_brep.Length; j++)# Y4 i- z* N: C) s: ~5 d" E$ I8 V
                    {' b- ^8 B  L* r  |8 R& n
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();
$ n9 B$ e4 n' i" f2 Y' g( B; f                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");9 n% z+ m$ q2 h7 C1 a& _0 w3 c
                        if (facetype == "Cylindrical")
. Q: {; ?/ h/ x                        {+ V  U, w9 T1 v. }- v3 i
                            int type;
, D" k9 J* U' t7 Z5 r5 P                            double[] center=new double[3];# W, @: T) e, h6 X
                            double[] dir=new double[3];
/ _/ e: Y, P- F1 s- F( s- F                            double[] box=new double[3];
; s" j. e: H# t; o0 `" b9 Z                            double radius;7 N6 b) N( g% l
                            double rad_data;
" C; `& {! H& f+ |7 ~                            int norm_dir;5 u4 b. g! c+ [$ q; S
                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);& g1 h( b' c8 z# X5 m. P
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");
$ C- f, s6 I% g8 x/ u                          //DeleteFace(theWorkPart,faces_of_brep[j]);$ H3 r$ e6 \  ]1 U. B, _
                            double NewDiamter = radius * 2-2;4 @# \* F/ J. z7 X1 l# \9 n, C
                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
0 K- a$ `' X5 P3 M9 ?8 H2 o6 @/ I                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
2 f. R+ ?. D, m6 p; w( g                        }3 W% H' [; e  p1 [0 T
                    }! p0 Z# i5 I6 m5 |, @
                }
& f" Z  t, t  p# K& t3 ]8 Z                if (theFeatures[i].FeatureType == "CYLINDER")7 P( @. g7 h; J* f6 c* ]
                {. d: x- A' i  V/ @6 E$ t! W
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);) ]3 h$ C) u1 H! j( {) M
                    Vector3d dir = new Vector3d(1, 1, 1);, ]9 f" D3 `. J3 l  s
                    theCyliderBuilder.Direction = dir;
5 f1 R) ]0 L; O0 }* N% o                    string str = theCyliderBuilder.GetFeature().FeatureType;
  [! r' B' H0 [) f. v  k0 Y                    //theUfSession.Ui.WriteListingWindow(str + "\n");
+ @! d( g4 f6 p* U                    theCyliderBuilder.Commit();* x: W- a1 R! B, {- o
                    Point3d point1 = theFeatures[i].Location;
+ E% a4 A: E* O5 ^. R                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
' G5 i5 r# H% y8 m( I) O- K                    theCyliderBuilder.Destroy();( r4 n/ R; a0 F
                }
1 q0 L+ S8 l9 c7 \: u            }
# E! @7 l. G4 b' P* G        }
5 H. b- N  y( O0 m6 P4 u3 @" m
0 a% j. U& B% t( Z- |, A; `" E        public static void ResizeFace(Part workPart, Face face,double NewDiamter)9 v) t  s+ H! ]; ^
        {
" x8 s0 E3 f7 {" M' [5 q  B            try9 w7 i: }$ E6 {+ ~0 w
            {
2 `& s' L: i% F! ^" x6 }                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
6 U6 F% ?, r" o, C0 z                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;  u* M1 r: K4 `9 c* }0 q/ I6 V1 j
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
; X+ Y2 b9 }. ~3 Q8 c
5 }4 S* R2 d4 R. g                Face[] faces = new Face[1];
# ~# g! }5 y' g" T$ f& S                faces[0] = face;- l' c3 S$ D( W) u3 O2 C, d
                FaceDumbRule faceDumbRule1;! Y1 ]+ [! V; P: Y5 O8 d# |
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
% y; b6 h# ^0 {# @7 z6 v% B                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];& D1 b9 j4 g9 b. l* Y: j* d  D; a/ E8 T
                rules1[0] = faceDumbRule1;+ p& s. I/ d7 P
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);0 X% `0 Z4 s" o; i  x- K0 C

9 c5 V+ V- N9 g/ B; t2 [& Y                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();  k! W0 V/ [: {( N( L; T) M7 C
                theAdmResizeFaceBuilder.Commit();
3 m; m' J& A# _. S2 }* q  E0 c                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
2 e' _4 j9 b# V8 U                faceDumbRule1.Dispose();
5 K7 H. c0 s+ K! [                theAdmResizeFaceBuilder.Destroy();
# z, y5 y, [9 b2 ?& g- P/ f            }
: S- w+ y5 j4 k' K4 G! z& X            catch (Exception ex)7 X) `$ j4 h6 B: z& O4 h! @& U  i
            {& q; ?- v# S  @9 d4 M
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");. m. O# ^3 i+ V3 t, e) K# \1 ?
            }
3 a9 @* Z& I' Z& Y7 A! H0 p9 q! B/ E) X        }
% C9 h' C/ f% R1 K* d( I
# ^% E6 A0 G. G& S$ ~; H        public static int GetUnloadOption(string dummy), B# W# K$ z& U5 m; l
        {
; G$ S7 }5 F- c4 m            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
# }0 }. c0 `% m, }            return UFConstants.UF_UNLOAD_IMMEDIATELY;
: V# M7 M2 @; b$ G: O9 w( w- a' N        }
9 i6 @. |: {$ z3 u; o    }
( J- u' `4 W7 L( z' ^/ X}
' ~$ N0 @% f2 o6 w
上海点团信息科技有限公司,承接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
8 ^' k0 E5 A2 z2 W$ E! X如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

* A, u1 N1 D, V' c估计那个地方要释放内存
* T' J" D+ E+ h' N- I7 |- R4 f
这个需要调试的
! m5 W( c7 z# O" t$ J' E: [8 o  M
0 z) W& I1 d/ N2 h; A1 Z0 b: {# r0 AJava 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25+ W9 V5 f0 B0 a
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
2 r! s( O+ q4 g5 d$ J; T% y( O  O
另外你干嘛要用同步建模的功能8 W: f4 R7 d* \. I6 I8 n

8 p2 I" G9 h2 m% x直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28# m! `5 Y  M4 _& v: ~% [- t
另外你干嘛要用同步建模的功能( _0 V5 Z8 r9 ~& H9 a! g

, G7 W+ y3 x5 s6 _直接使用 偏置面 不是更好

" J* [" B4 l% E' {/ @1 n偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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:079 i; c* l+ M6 @6 S/ t# N
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

5 V4 \: ^6 b4 C+ h9 W具体这个 我还真没怎么研究过  
* O; K0 e$ g4 R' C% B& P) b  V
% k8 o* _2 i" n1 V: x% ^不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题; w/ g+ X/ r  E% `/ a  M
) N3 M: O1 |/ x
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
, H+ S4 C7 C6 E" L1 p: D偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

- o) m9 O' d5 P, b# a9 o8 T你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:124 G% s8 s! `# @& }6 Z. d# a) Z
你主要要实现什么功能, 需求告诉我  我写下看看

; u; i0 {( ]& p6 R  r  }我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了