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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:. ]6 @1 {. a. w
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
* ~( y8 x: {* S& d                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;9 `  z/ T- Q4 k/ ~( V  V5 _( w' q! n
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);6 x) f' a! _/ k2 I) s8 p
3 U$ J) N2 C+ p6 }& E8 M
                Face[] faces = new Face[1];
2 n+ r0 O4 g6 d& r; D) i( c                faces[0] = face;
: O' W* h5 }7 U* }4 x% V                FaceDumbRule faceDumbRule1;- a/ f& V9 @9 m: k, k
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);2 r- A1 j: Q5 |
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
3 L3 @* T& E! F  P/ H                rules1[0] = faceDumbRule1;
% L- m6 q* d& {" D- P! @! S! u) g                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);4 }; @! f3 w7 v: E! l/ J' i( z
: L$ M9 y3 g- @; j  I% `; S
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
7 }6 J) ^1 R2 f. J( W                theAdmResizeFaceBuilder.Commit();
1 q; E) ~+ P4 X8 D                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
" S; [4 l. [0 a2 X                faceDumbRule1.Dispose();/ i6 K3 @& s5 o! P: D
                theAdmResizeFaceBuilder.Destroy();
. T- H7 J! r) d! N" Q8 t+ R+ y5 P8 I& x4 e. B9 i' i% Y) y

- e# e7 l4 t& Y5 k由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
; h7 A3 Z/ c! Y# q2 x; 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

你就这一段代码吗?9 r3 H, ^) w6 [: ^  L+ `
其他的代码会不会有问题
, |8 o3 M9 E) }3 A4 h这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:! J' d( V% h4 K0 G
using System;9 f' z0 Z% R% h
using System.IO;
5 q8 N4 C0 f3 l9 Iusing NXOpen;- ?- r) T8 Y* N* [2 M: M# ~" c) N
using NXOpen.UF;9 o7 w) o7 C9 i
3 b4 A  @2 a; T; i
namespace InstanceFeature8 X5 Z, q+ c5 M' G7 k
{4 z9 x. Q; g. p2 ]$ {
    public class InstanceFeatureEdit
+ F: \4 N; G' h: {    {
. A) x! O9 e8 d+ b9 f' p3 O3 L1 @3 {        private static UFSession theUfSession;( [. l3 B9 [2 m7 r0 L  e, y! c
        private static Session theSession;) H/ i! R" D+ O1 r3 A" C6 |/ L
) N8 w" v, _- C, f9 J# B5 f
        public static void Main(string[] args)/ |1 e4 E+ i. F: R# v
        {
1 D$ a; B* ^( q$ e- i% j            theSession = Session.GetSession();
: z, m5 l6 B" w            theUfSession = UFSession.GetUFSession();
! S3 `6 J# a" C# _. Z            theUfSession.Ui.OpenListingWindow();/ l, ^1 k4 c" j' H: s
            Part theWorkPart = theSession.Parts.Work;
; Z+ s+ l3 S" u9 @5 O0 m# ~            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;& `+ r6 A& d, ?$ M$ O0 J% R, P$ p
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();8 R+ O! Q' z& _: J1 b1 R  |5 [8 F, u
            for (int i = 0; i < theFeatures.Length; i++)+ a6 L2 y; p5 Z9 z# G
            {3 U4 Y9 z' Y: I
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
5 I( s0 U9 w2 Z& O; _* N4 S. U4 H1 X                if (theFeatures[i].FeatureType == "BREP")
! p9 H  ~5 ?- z! x! C' d; ]8 ~; X                {
4 k8 S$ L1 g5 |" }4 e                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
+ Z0 H; }. E  _3 g4 ?                    Face[] faces_of_brep = theBrep.GetFaces();8 H7 V+ l2 c9 k/ T- q* i* R
                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");- G# T9 }& Q) E4 w$ W
                    for (int j = 0; j < faces_of_brep.Length; j++)
0 _- M: a- z8 w/ X# G" f                    {1 P- @: j! J! K9 E
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();# h6 V' m1 Q; j2 ^/ {" I2 b' l
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");2 Z/ a: ^) ~% A6 m+ H% y  H
                        if (facetype == "Cylindrical")
6 j; ~& F# r  _+ ]/ B                        {' J2 O8 b8 P, b7 F, }3 F
                            int type;- m2 [4 l4 v  \# \) e% G
                            double[] center=new double[3];
' w) R: o7 f6 g& \- A* G                            double[] dir=new double[3];
7 Y/ D: [/ p, B4 U; t/ W                            double[] box=new double[3];
: n  f( d1 ^7 s7 ?6 ~( Y                            double radius;
) b) p% b6 k3 c) m& x                            double rad_data;' [( {1 Q) E: {0 R$ T
                            int norm_dir;: q8 k# k& b- `8 `! N4 e
                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);$ n; C$ \$ o& R" `0 W3 W! I3 W
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");. r* u, q" S0 f; v* y# v  E3 y: k
                          //DeleteFace(theWorkPart,faces_of_brep[j]);
1 c: f  @1 V4 k0 {1 r; |2 ?                            double NewDiamter = radius * 2-2;
' x- j* a, R4 N1 E6 \                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);$ |" t4 ~% _! l' L0 L' y1 X, S# u5 u8 P
                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);" V2 g( `% D5 A) @. ~5 y7 N0 }
                        }0 ~8 n5 n; U* c+ Y2 r
                    }* G! |! T' @0 c8 e( x" a
                }
: C2 b4 e) H: L; S                if (theFeatures[i].FeatureType == "CYLINDER")
6 ]. s4 x8 P7 O5 [( m: S- d. q                {5 L, D+ B6 Z4 ~: @
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
( Q0 g. r: S7 S5 E$ z2 u6 P  N                    Vector3d dir = new Vector3d(1, 1, 1);% J+ @" `0 F9 @$ _; ?
                    theCyliderBuilder.Direction = dir;6 j+ F% T% \- E9 T
                    string str = theCyliderBuilder.GetFeature().FeatureType;
0 [# o0 v8 o  [+ l) R                    //theUfSession.Ui.WriteListingWindow(str + "\n");
* ?6 a- s: d. g                    theCyliderBuilder.Commit();
' r" w+ H+ L/ F5 M: X: }* M2 {                    Point3d point1 = theFeatures[i].Location;' O. i  H6 z- a" m+ m0 X+ C
                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
) {9 O* O+ p- t2 K! a/ D  v                    theCyliderBuilder.Destroy();
2 c4 X1 z% o7 |) I% _2 B7 K% E+ C# ]                }
0 F( {8 r* c& m) v            }
* D' A4 b. Z: {        }
4 _" c( G6 o% P
7 i/ p. x. D0 @        public static void ResizeFace(Part workPart, Face face,double NewDiamter)0 J9 N+ r. ^9 |5 b3 Z8 P. X
        {2 v) Q, j7 u3 E
            try: b. t9 V* G( n; w' [) o2 X
            {: X3 }2 J. a" J$ O  i4 ~
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
. B$ J" I9 p  V+ L5 Y* b0 m! u                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
9 F. S7 |4 P. q8 F                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);5 X; V, K% H/ E! h! p- c3 M: X
  A* H6 Y' E- J* P8 h
                Face[] faces = new Face[1];0 e5 R5 E7 x% i- Z
                faces[0] = face;* ^2 `6 c% f, q" d
                FaceDumbRule faceDumbRule1;' S2 S, n- G6 B% T7 V
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);9 P9 }  A) B! v
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];# M; d  J3 r4 w& C* u) m6 n; Y( R
                rules1[0] = faceDumbRule1;
4 I& m$ g! o: R! i) r. b! i. L4 _                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
8 `6 p5 p% A5 q" E0 a0 t- F! Q) z# W7 g+ o3 Z. E5 s
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
5 W& O' c. t; T- Q! e8 ^' T2 I                theAdmResizeFaceBuilder.Commit();
$ n# _! ?% C! F                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
6 p! k- H' H4 M( F; Y                faceDumbRule1.Dispose();
3 s5 |, c  E: U: i                theAdmResizeFaceBuilder.Destroy();
2 b$ y, \. A$ ^8 s* L( X. k' `            }; Q0 @) c9 k; y' B2 b
            catch (Exception ex)) @/ B- f% ]+ `0 H' u
            {
$ t6 G0 M. n; C. C/ s  l                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");4 W2 t7 ~: i  G& }) U) H
            }, v* a9 I! [. R7 E* x4 I/ O
        }; ^8 V; `; _6 n2 @

/ q& r9 i3 C- L; A        public static int GetUnloadOption(string dummy)
; W% w8 U$ i& }/ {: B7 n        {% z5 u' Y: E. X* l" U6 n
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
7 u2 O/ G8 Q" P# b            return UFConstants.UF_UNLOAD_IMMEDIATELY;
( j* q. B* l( E. w        }, J) m1 l3 k' [+ w- P
    }& {- [3 {: @& F# B. B2 E" G; O
}  c! y1 F  \% M- e) H* X- V7 \
上海点团信息科技有限公司,承接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( @* i) F0 `$ r! p
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
6 f1 W( ^' _$ v4 K" _' ~
估计那个地方要释放内存 7 y7 T' O$ x1 m' e+ _4 V& v+ w

6 I& F: U) V' v8 m( J- M这个需要调试的 + w+ p' {& l/ b8 F
: U+ e1 f2 U/ |9 [& V3 q2 |
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
# n4 q! x& A5 @# e# M如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

) m# p0 a% W# a$ B另外你干嘛要用同步建模的功能
; C: o: G$ R  i$ I  u0 ?% J8 B% i! c/ R$ y
直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28) g  u. y3 _$ g! [: A1 _
另外你干嘛要用同步建模的功能
0 P: A7 x. G/ A2 F( k0 Q/ d' Q% E* o9 F3 l+ D" `$ \2 n
直接使用 偏置面 不是更好
. a0 f* S4 a% d' l7 H
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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
/ J& m0 e. }2 c8 @% Z偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

+ {) ~7 l" G7 }* h7 X具体这个 我还真没怎么研究过  
: E+ k5 [7 Z5 T. }7 Y( h# H5 c
+ G& p' {' g( X9 L不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题% V3 T6 R% ~3 O; O. ^8 {' C

' ^4 h2 G" s1 k5 q$ g$ u偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
; n1 U, ?) z4 V4 T偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

" u# K) h0 ?5 {- t你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
& N. [% o$ g( H( W7 ~8 p你主要要实现什么功能, 需求告诉我  我写下看看
$ Y, n' i2 i# _( s5 f& P0 W1 n# U0 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二次开发专题模块培训报名开始啦

    我知道了