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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:7 s: j( a) V8 ?) z
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;" q: G- ?' U, y: a- J! |/ f
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
* N  X5 _/ \: U) @# d; j2 }                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);! }2 t6 b+ v: c' p; G" W- e
9 H7 w& {: T) B4 N
                Face[] faces = new Face[1];* y6 z6 F; X* D; E) {: [: t
                faces[0] = face;1 ~( j- s) T2 t: @& @! l1 `* e
                FaceDumbRule faceDumbRule1;9 m. B4 r2 `: W. y/ J
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);2 p5 ^, s) l( k% P
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];2 F: i( l1 |! e
                rules1[0] = faceDumbRule1;
2 ?& m6 v. h8 K4 Q( \& b" v4 a& |4 H+ \                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
/ I1 Z; D8 {5 M& p. S% M
1 E' p9 D& ?' N  E1 ?( K                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
% |. f. ~7 e! D/ L. \2 P3 a) T$ n                theAdmResizeFaceBuilder.Commit();4 q0 ?3 w% ]& m8 o
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;* b' V6 d9 q3 Q6 c
                faceDumbRule1.Dispose();0 i2 y, ~1 V* f5 r$ _+ r( B. \- b
                theAdmResizeFaceBuilder.Destroy();
6 x+ x3 A% Q( i6 f1 q' \, u( O1 h
' O+ J( P! h1 v4 d
, f- O$ k. t' G9 F由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值1 e6 p' f" A, F' S; T- s/ M5 S
上海点团信息科技有限公司,承接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

你就这一段代码吗?
! o2 c1 g1 z# @' n) ^+ Z' y, E其他的代码会不会有问题7 a* b  j& o( O: }- n7 k
这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:/ I  [( b: \( `( ^
using System;6 L# F) ~4 U+ c; I5 s7 B% d3 i" s: X
using System.IO;( o* \' N1 R4 K, z
using NXOpen;
4 k& V' C, _: C: `& M6 s% ~using NXOpen.UF;# z. |0 S9 w2 V9 Z" n' d
; s5 _% X- {1 Z/ X. Z9 D6 H  D! i
namespace InstanceFeature
# X% G5 m4 O/ d4 n% W( a9 G9 z{
/ e" q# u* \4 d6 v! B- b    public class InstanceFeatureEdit
, y' }4 W% j: ^& \, A; {' d. L    {
* r( r2 V$ g. z# U( o        private static UFSession theUfSession;
' r+ b; @  H* s; C, v        private static Session theSession;
- G0 @/ p( z' I% w% d; l# z  Q$ z
- Q* M5 o$ s0 @# \( [2 v, u        public static void Main(string[] args)& y/ g9 X# }4 T: i- r: `: x) G
        {
7 u# P( M) i# H6 G! `/ ?$ g4 Q            theSession = Session.GetSession();
8 Q: J$ j' E. k4 ?. E! K            theUfSession = UFSession.GetUFSession();
- V  M; R7 l1 k" F$ k            theUfSession.Ui.OpenListingWindow();# {* U1 X* @6 ?* T0 G
            Part theWorkPart = theSession.Parts.Work;
- ]0 ]/ ^# o! E3 k3 H0 X' R: e; j            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;+ o/ ]. z  D/ w- S
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();% b" v8 E1 v' j& e3 N. f6 f
            for (int i = 0; i < theFeatures.Length; i++)( ]0 j$ z7 T* [: G0 h6 [6 a& w
            {+ S( {2 @  W' c% p' r; c
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
) [' m0 ]/ o- S, w                if (theFeatures[i].FeatureType == "BREP")
0 s1 ?* F4 W% z, F" m                {
: D; t4 G' ^! O: D  y: o                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
; ~4 _. S9 E3 h* |2 z3 o                    Face[] faces_of_brep = theBrep.GetFaces();
" u2 v, Z; Q  Z7 E# h                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");3 J) }- J0 B9 v6 x
                    for (int j = 0; j < faces_of_brep.Length; j++)  m* S( U5 h6 d
                    {
* T/ L" i' X. N                        string facetype = faces_of_brep[j].SolidFaceType.ToString();" G3 `+ O; s+ Q* G" m6 y+ D
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");7 ~" e  @# H/ g2 [9 h; D- D  R
                        if (facetype == "Cylindrical")( s' j3 }7 C- U, q. ?, g- m1 Y
                        {
, S1 U% o1 D* ]* W                            int type;
) P/ X( {4 ?' ~( g, o4 j# w6 P                            double[] center=new double[3];
9 @& U/ {7 U4 W  c4 h                            double[] dir=new double[3];
5 a1 X6 K, d) Z' L# ]: V4 T6 p$ @                            double[] box=new double[3];+ l" U8 \# Q# d$ q. v; J
                            double radius;. _$ V$ U" w  u" I
                            double rad_data;* z3 B( n% X# C
                            int norm_dir;
) D' @7 G* J8 D" }5 J8 ]                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);$ l* r% L/ d8 D( F* p1 j9 T
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");: J2 |" d* C5 `; O7 T7 ~
                          //DeleteFace(theWorkPart,faces_of_brep[j]);/ @/ x: O2 H% y* e3 F2 B' [% `9 f
                            double NewDiamter = radius * 2-2;/ W) v! Q6 |) y* W0 X* _1 x5 y# l
                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
# Y9 f- X& Y+ }7 F2 z" Q% c                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
4 x. y! B2 k2 u                        }
0 S  W  D( a% J3 E7 O                    }
' P2 W" `+ Q; Z$ B9 X; n; ?                }
! g+ ~  I5 w- E2 Z' P8 ^1 \: W                if (theFeatures[i].FeatureType == "CYLINDER")( D9 r$ m- Z( H
                {
* F, }8 Q$ l0 ]                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);, J6 Y, `) g+ J& v3 o2 b; J, `+ D
                    Vector3d dir = new Vector3d(1, 1, 1);7 F) |* B. a' |0 g) r
                    theCyliderBuilder.Direction = dir;9 @/ N- O( N9 A$ l/ H
                    string str = theCyliderBuilder.GetFeature().FeatureType;
! K. `# s% c5 u3 J1 N% ~                    //theUfSession.Ui.WriteListingWindow(str + "\n");
8 n" o1 F: _5 \5 M& ]                    theCyliderBuilder.Commit();
4 z+ E% u4 W& y& {' J4 Z( f                    Point3d point1 = theFeatures[i].Location;
) j/ G# o2 P) |: ?                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");: h1 |5 d, }" y, x
                    theCyliderBuilder.Destroy();
8 [" ?( e) ~: B1 K$ F                }
/ \7 P# i) Z' d5 X. u            }4 G& C% d. q) @6 W$ o
        }1 g8 X. B4 e! T" h! b& V9 Q6 L
) N7 k% C+ k0 C( Z2 E! x0 G3 c
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
1 J9 ~% f; `- n, E3 N8 Y1 |        {+ |+ m+ L+ s: h4 T. w$ u! H, g' k
            try/ M: `/ C) D, B* ?) r: }
            {: }" t9 d9 E1 |) O% U4 q# Y, A
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
* S3 C- S1 Z+ b+ Q/ c                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
; w0 o9 |# O' B5 G1 m                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
; [+ X1 a2 R  c, o: H/ Z& }& \: T' }
( ^( n: K" ^* ^! R# K                Face[] faces = new Face[1];( p3 Y: X8 j) @! h  k5 ?+ \
                faces[0] = face;8 f9 {% h' F" I9 ?7 @, Y
                FaceDumbRule faceDumbRule1;: ]% Q9 q/ r; J' x
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);9 _1 [0 {+ M: N) z( m
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];" q0 r1 c# U% n5 K- F
                rules1[0] = faceDumbRule1;
! f/ ^" R; k. _& D                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);+ Q$ P0 E* {( ?* X2 a1 y" n' t
. w8 E3 M* U8 q
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();4 G) R! x  p! ^5 }
                theAdmResizeFaceBuilder.Commit();
3 F1 y" E! A5 Y" N. [9 ^# y8 Z                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
$ ]" j2 M4 E* e4 O( f                faceDumbRule1.Dispose();9 T2 Q+ E9 s1 a0 |& W' T
                theAdmResizeFaceBuilder.Destroy();
! u" X9 l/ M5 Q0 _* I# l, c            }/ ^- C! r9 U/ K
            catch (Exception ex)
2 V5 X2 K8 i) D. ^- P" C            {% w6 n  z' I; _8 L* O" \7 G
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");5 Q# V3 S* ]0 d) B. T
            }
( F3 O: ~# |  K1 p7 n/ k% j# m* L        }
. k! p8 r' t7 Z5 A. i+ e6 E& @
& K& }& E+ ~, V( L2 H        public static int GetUnloadOption(string dummy)4 V; W- M% o4 B& Z2 s7 `2 f* G: d
        {! n2 U3 G# Z8 E2 [5 j* Q
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
, v) _  I! J/ ^- \            return UFConstants.UF_UNLOAD_IMMEDIATELY;) H) L9 \# T$ a% \. y
        }6 _' o: i, ~0 L5 h3 K" m; o- ?
    }; O0 u+ S. d+ H. X, c
}
* s, _0 H9 G1 D9 K
上海点团信息科技有限公司,承接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( j0 u& X5 B1 {/ g3 {
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
( Q/ \6 a/ T9 @
估计那个地方要释放内存 0 s8 _: e0 g5 M% U% m

+ E; E+ y. d3 K0 r+ i( q: S6 y这个需要调试的 4 w. T1 L. L+ u3 v$ m2 f- o

. O* C  ]3 M" i+ mJava 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
5 f; B4 s* b" G" f如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

: r2 j4 Q* W9 x/ T& O6 M" ?- i另外你干嘛要用同步建模的功能0 Y! n6 q# P! o" K, \' v2 w

3 D9 r: W/ J: y) b% I  d直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28
7 ^. o0 R7 t) b8 [# T另外你干嘛要用同步建模的功能* U3 M0 P; c: a/ Y
6 g6 z& j8 R, d5 {. n3 J
直接使用 偏置面 不是更好

$ p+ D- j6 A; G$ u, Z# 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' M, b8 S* g6 k3 R" u/ J* v
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

8 y- @7 b, a8 i" }+ A/ t8 [/ N% H- b具体这个 我还真没怎么研究过  
8 A; A6 q5 b( w2 S0 J& K+ G0 f) _- J* Z
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题
/ P7 g: M' R3 w0 Z: ^" a. `- C; C5 Q
# b! `* y* m+ t! f$ l偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07# T6 A. a. c+ c" k
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

5 D1 E2 W$ E# C, Q5 i* ]' u  Y你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12: T2 ]( P  A$ m9 O1 `
你主要要实现什么功能, 需求告诉我  我写下看看

' v0 z' O7 n" [! c) b8 q) `我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了