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 10166 14

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:
' i( o& g8 ~% K$ S8 JNXOpen.Features.AdmResizeFace nullAdmResizeFace = null;3 D* c$ x5 y6 ]3 P" s- r, N
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;% W4 {& K' L5 p! \
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);! `2 {, i0 N* K7 S8 L6 d

1 O& s7 U( J( H, M                Face[] faces = new Face[1];
& l2 {: _0 E- ~5 v+ l. U                faces[0] = face;! X% w( t4 z6 J
                FaceDumbRule faceDumbRule1;
, [6 E8 p# x" u, U& G! l! g5 t                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
# E; S; H0 L: A2 c                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];" g7 l0 T( d1 {) ?+ B
                rules1[0] = faceDumbRule1;
3 e5 t5 \! D7 L$ b5 P! v' ~                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
, ]- g: }; N( l# e) d' J, n9 ^! `
' O' c# \4 o2 Z$ v                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();4 P2 F5 W) c. V
                theAdmResizeFaceBuilder.Commit();3 s2 Z3 Z) u" k7 `
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
+ Y$ Z  ]' i0 P, p: L( n' G                faceDumbRule1.Dispose();% C6 i, H7 h+ q, |; f6 n: J7 Z
                theAdmResizeFaceBuilder.Destroy();9 E* C8 n0 p; q  a

" Y  z) G5 {* T7 a$ E2 m. L
  l+ J" s( D* h# i/ y0 o0 j由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
/ t7 H- ?. V9 q
上海点团信息科技有限公司,承接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

你就这一段代码吗?. E0 C" O# E9 j' V: f% f* D& q
其他的代码会不会有问题
# T( D4 t4 u6 v6 ^4 S这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:7 Z! X/ M. z2 C# R
using System;1 ]9 a8 q0 u7 X
using System.IO;. [- g2 d) F' W" C: Q& r
using NXOpen;
% ]/ X  V  V% ]7 |using NXOpen.UF;  b+ V( u+ m7 p6 ~1 P" A
1 i" V$ R% L; Y: t' X' u  v6 ~
namespace InstanceFeature
) ]) y) Y# @2 t6 J- O( d{# m) x  I  {' w5 }+ }
    public class InstanceFeatureEdit. Q' }6 E4 v  Z$ f
    {  N/ N- H* ~7 m# W; z; e" y- H
        private static UFSession theUfSession;
" }4 }) ?4 X7 e1 q2 t0 c' m        private static Session theSession;
1 D: D* g, i# v+ O+ h0 m/ h( X; N0 K- z" N9 [& k
        public static void Main(string[] args)4 Q3 a, ^, I# ?! o4 w) T
        {
- v) e5 o6 j- @! ^            theSession = Session.GetSession();
3 o, j7 i- x7 d5 o            theUfSession = UFSession.GetUFSession();
  b* [6 h6 h: U$ Y            theUfSession.Ui.OpenListingWindow();, Z0 U( U5 x: [( S- N0 O
            Part theWorkPart = theSession.Parts.Work;( b* l$ B9 o; u  t& p. X
            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;
% `5 |% V  g" h' P( _) w9 g" |            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();
* T) x  S) ]1 O) F2 J( q. C$ ~) {            for (int i = 0; i < theFeatures.Length; i++)
6 l& x( i0 p. T9 g. y! D* e            {
: _1 d4 B  J# Q8 ~+ m                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");8 C0 }0 V( t1 x" L, ?
                if (theFeatures[i].FeatureType == "BREP")
! L. B3 O) |% s/ A, s5 J# L8 `                {
9 g3 |# a0 P: k1 Q                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
* ~( b/ Q4 V$ Q                    Face[] faces_of_brep = theBrep.GetFaces();6 s1 w0 Q4 D8 g7 d& b8 c
                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
7 A, x6 J& W. x2 k( E: c4 r( x' K4 ^" I                    for (int j = 0; j < faces_of_brep.Length; j++)
- G: O6 H; s8 w                    {! X  `; x0 W0 P4 O/ i
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();
$ s% v9 K1 r7 ?' @9 q                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
  g8 @5 U& _$ U  X- w! Q# K# x7 X                        if (facetype == "Cylindrical")
7 e2 J7 w( J0 l: Z- O% ?) I% q                        {" {$ n* q! B0 I% J; n' K( e
                            int type;, y, m* ?' T4 E8 w" D$ w
                            double[] center=new double[3];; r+ u' f1 R, z
                            double[] dir=new double[3];  I/ v4 n9 @' Q/ `' y
                            double[] box=new double[3];
: Z9 v* `7 X! d1 C1 g                            double radius;3 U: H* U. k, }% \! b& ]9 x! \, E
                            double rad_data;9 ?3 @" i+ |% t: S5 s/ G$ Q  q
                            int norm_dir;1 _* q# F: Q' g; b
                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);
1 e& F/ ~8 n; V! U: g( ^5 u                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");! Z) U$ b1 L, z7 k
                          //DeleteFace(theWorkPart,faces_of_brep[j]);
( ^/ S# a+ T3 O+ R" P                            double NewDiamter = radius * 2-2;) T, p, C5 a) V% m+ s1 W, a
                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
; \( R' j' O& q; }  v" K                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);- y( x7 ]( W6 k: T) X( w# m! B
                        }: d0 a, W) S, b5 a2 a2 E' i* o
                    }
' X; m, q0 V' P& U. c, P                }* ]1 Q- y' k/ r" p  }: a0 |
                if (theFeatures[i].FeatureType == "CYLINDER")1 s5 v+ V0 D  }6 P
                {7 O; a2 A0 \+ c
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);. E/ V4 f8 G8 D5 v8 U. Q
                    Vector3d dir = new Vector3d(1, 1, 1);
& H; x  g1 n5 L: B! R- f) S, C                    theCyliderBuilder.Direction = dir;) z' S* T4 Z/ v  F. I
                    string str = theCyliderBuilder.GetFeature().FeatureType;
% o% C+ C  W( ?( K                    //theUfSession.Ui.WriteListingWindow(str + "\n");
4 N# v; {: O. c                    theCyliderBuilder.Commit();- N8 c% D* U- d) v) f2 n
                    Point3d point1 = theFeatures[i].Location;
/ `; a6 q0 \" ]* D                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");5 }! q: |+ k, G* l
                    theCyliderBuilder.Destroy();, N- n1 B  s) }0 U: Y1 m
                }
) Z* I! H8 c6 m2 j/ j            }0 \6 B3 |: y) y" G6 j% a6 z5 N
        }+ Q$ k, {) T9 I/ s

: Y( ]7 g; {4 K: H- i- H- R        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
8 d: [# a, J& `. C6 p/ P        {
7 z1 x& i3 M0 o0 Z            try2 x: M# {7 |, g; a6 R; d
            {' g  Q" e, \# C0 j$ z" Y: I" w
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
) |) Z& D5 g! k6 ~1 F) l% J                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;1 ~" n5 V: @8 x1 _! {  E- o
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);- w# I; k" L( L* @! K% P

* F' T4 y' Y# E                Face[] faces = new Face[1];
; B( Z+ M6 u3 i( O                faces[0] = face;
1 l3 g3 }* U" v( R, L% k                FaceDumbRule faceDumbRule1;
  b" X2 x$ M6 N" ?. s& C5 v, p, c                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);2 v2 S8 r; ^+ _% P- I) s
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];0 \0 M+ x: r' B/ Y9 P& Q
                rules1[0] = faceDumbRule1;
- U  |" q3 @2 _6 L, Q& @* r) j/ X                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);7 g0 I' k) Z. g' _5 @) L' `& d2 O

4 C$ y/ s! B. ~                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
# h: t0 R! X/ g) O9 s                theAdmResizeFaceBuilder.Commit();+ U  F1 F/ E; y: C$ u' t
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
' r" F. n# G# f+ m( ]5 u                faceDumbRule1.Dispose();2 G* k( v' f5 U2 E5 J% W/ P
                theAdmResizeFaceBuilder.Destroy();
( b: C; A1 y9 t( z  b            }- c4 J! I* ?/ }" ~) C, F) y2 \
            catch (Exception ex): m/ ~, `1 j* z3 ^$ Y
            {
9 _/ `3 Y$ ]" x. t, c3 I" {) B                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");
6 U6 J( x( k: M            }) H" E% b) C; l8 Y/ ^
        }" Z# m: C6 f! B; ~6 u+ W
2 E7 A# ?- i7 ?( B
        public static int GetUnloadOption(string dummy)
% x9 ^; _4 a+ G        {) z4 a2 t" c, I
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");0 s+ v8 |! `3 C* X
            return UFConstants.UF_UNLOAD_IMMEDIATELY;
8 O3 d' R8 j) Y4 @% z9 f/ M' T        }) n5 q+ h+ v6 L. `+ K9 `
    }( E" K0 R0 E' Z+ E
}
9 k' Z9 s; ~6 x% H
上海点团信息科技有限公司,承接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
* ~9 M5 t+ Q* e1 c- q# Z; k如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

* I; C+ D! c1 J) H" s估计那个地方要释放内存
' P8 P5 w  o' B/ z: G4 {* w
) ]0 h4 g8 A& p8 {3 S这个需要调试的 ; q3 I& f/ J2 A$ N1 H
# B; Y" R- u& R" \. a, z& V
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25  m, J; x$ J6 b" Q3 ^
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
" }% b: @: B  M) X5 o
另外你干嘛要用同步建模的功能' p; f! {8 f$ Q6 p+ W! A
/ v# [: z% T0 y% X
直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28
2 V& ~* Y7 [% b4 B. `" ~( c$ y另外你干嘛要用同步建模的功能( v& h$ ?( N$ }* K; O- _  U
, }: K5 {' T" n) c
直接使用 偏置面 不是更好
( J: [, r* a. A9 g
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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; C* S' Y* L7 d0 F" M* R
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

' S$ U1 k% I6 ~( Z4 T- v7 ]2 x具体这个 我还真没怎么研究过  2 k# J9 _" ^/ o1 F- b, U3 r
+ {6 S0 T. P0 T. B  W
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题  M  Y* L9 s( S4 Q  L' l
. d4 W( W$ t' v! M1 c; Y
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
8 |& X8 r3 A* x偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
1 |1 }% B2 A9 A- z; X* }& g
你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
, _- h6 c1 x2 ~! k你主要要实现什么功能, 需求告诉我  我写下看看

' Y$ ~, Z8 r  m! l3 O4 v1 p+ i我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了