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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:( p$ p! m2 N# [1 w! d8 d* H9 S
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;3 l* }2 r6 T- ~: k; K
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
: x* A) q# I" ]7 {1 _% w                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);( i7 S& v( |# E8 o, h" _

2 ?  G4 Y4 a" f# m* r                Face[] faces = new Face[1];% ^+ M$ v7 M3 v( A4 i
                faces[0] = face;
, S- V5 Y# P; y) d8 ~: k! X                FaceDumbRule faceDumbRule1;6 a5 S" b+ y* i! G# Z
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);7 o6 Y' g1 V% L1 V( Q9 U4 Q
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
" C; C) E/ _! x9 w                rules1[0] = faceDumbRule1;
; u5 \% j7 s- O/ |                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);- n% u7 r9 \4 e: i+ a6 M0 N
& H, ^; G. |# e
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();/ X# ~" B9 ~6 ]$ U5 k
                theAdmResizeFaceBuilder.Commit();
/ f7 O* q- x6 D$ Z4 C1 B                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
3 L. Z! e/ m& z- _1 q- C" t/ {                faceDumbRule1.Dispose();  d  L% z( ?0 l% l. u
                theAdmResizeFaceBuilder.Destroy();/ O6 ~* h0 U5 }7 ~! U6 Z

8 Q7 `. n! m3 L. t9 w) Y  `8 P1 K* s: M
由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
8 b9 i7 k- L2 b: @
上海点团信息科技有限公司,承接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

你就这一段代码吗?. P( Q' I* T1 I. c- I
其他的代码会不会有问题. j0 [; v$ v4 H. E! g  t
这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:
! g0 {& O) a* g, A8 Ousing System;
& _& n: w( u- c: G6 v. u# [; y6 M0 Tusing System.IO;
* N- l& N+ v$ A. z! qusing NXOpen;
/ u4 c; n; }& C4 B& }; w8 o3 S; Xusing NXOpen.UF;) q" S% d3 y6 z/ ^, q' x
, p; q# h9 q8 T, F
namespace InstanceFeature
) O9 ]1 N5 b7 _; s0 {8 n{
5 P( \7 C* s. o: _( N9 R    public class InstanceFeatureEdit
, o( E& z) W3 b: D1 r1 z. Y1 a8 m' m    {
( L. g( z2 R0 ?8 ?; p        private static UFSession theUfSession;
; v+ p- r. a* h7 \- m# k+ D* ~        private static Session theSession;
5 [; Q0 p% K2 ]7 x9 e: a* t; W0 h/ U4 _% S3 N0 M0 N( h+ I
        public static void Main(string[] args)2 A" X* J( e( x( [" }
        {' B2 s2 @+ r8 s+ f; ^7 ~4 h% Q
            theSession = Session.GetSession();
& U5 T* g5 \( n! `0 ?9 O; Z            theUfSession = UFSession.GetUFSession();9 K7 E& x# m1 S: @/ B" K* Y
            theUfSession.Ui.OpenListingWindow();/ e; m0 U: Q! w3 d1 T
            Part theWorkPart = theSession.Parts.Work;
8 |9 j# ]5 A- Y8 G1 A! A            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;/ s1 ?- n& [7 O
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();, [4 s8 S3 e; q3 o
            for (int i = 0; i < theFeatures.Length; i++)2 m& X$ |5 U& A$ c
            {; _7 v- `+ s: P+ d# Y% P
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");! r/ S; [) @  B$ r3 G
                if (theFeatures[i].FeatureType == "BREP")# q' Z1 n0 h' U% ^- X
                {
  O" A6 `# S! d$ X5 e, x. N9 c                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];/ ]7 z9 z0 w  d. w
                    Face[] faces_of_brep = theBrep.GetFaces();
- L; S! v( t; ^/ y                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
, M! c9 L3 o/ H+ j                    for (int j = 0; j < faces_of_brep.Length; j++)7 ]$ C! i4 l! T" O' h! b
                    {
, o" |8 N+ U+ O, d                        string facetype = faces_of_brep[j].SolidFaceType.ToString();
- m3 q. X4 l0 B1 m7 T( P7 t/ X                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
  r: u% a. [" y                        if (facetype == "Cylindrical")
- w& T* _+ s$ ~1 ~                        {9 G8 c* }, F0 W7 n' a% O1 }4 l" a
                            int type;
# o  [% i9 O3 t0 Z2 p6 M                            double[] center=new double[3];
! @2 q" ~( f7 l: U                            double[] dir=new double[3];
! ?5 I  k% h; ^: K. X) }                            double[] box=new double[3];/ w$ d5 b0 f7 t" z6 v
                            double radius;
4 t! r, b' B( J. l$ h7 W. ^2 a  ~                            double rad_data;
6 \5 e, ?9 C3 U8 U" g                            int norm_dir;
$ \% v) H5 R( S9 k  Y( S                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);: I0 g1 j6 d: N& p. M# D1 x
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");/ I- ?# Q+ R3 i/ [
                          //DeleteFace(theWorkPart,faces_of_brep[j]);
' Y8 c3 O! w" w* Q                            double NewDiamter = radius * 2-2;  z) \8 y4 M6 s; _
                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
8 J6 X! {2 s: ~2 G- D) ^2 H                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
9 p9 S' M5 L; I                        }6 X+ o( l$ J3 Z6 G
                    }3 f0 {- E# H( @8 G5 O
                }8 e0 W0 \4 W( ]6 N
                if (theFeatures[i].FeatureType == "CYLINDER")' u" s  ~- ]. P" P; ]0 }
                {
; k8 Q) h- {1 c1 r: Z                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
7 w2 v1 e$ i" @1 `7 m                    Vector3d dir = new Vector3d(1, 1, 1);7 p4 G, Y( c0 b
                    theCyliderBuilder.Direction = dir;
, s8 L8 n8 B$ `- V- n8 P' b# h                    string str = theCyliderBuilder.GetFeature().FeatureType;
* C2 U8 J6 t9 v3 D2 i                    //theUfSession.Ui.WriteListingWindow(str + "\n");
2 l+ z; d, d! F% v1 P" P                    theCyliderBuilder.Commit();- S" N( q1 C8 x% G  t+ b1 M
                    Point3d point1 = theFeatures[i].Location;% h! }* q( N5 S7 O, [9 ]
                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
# ]  S3 [* m7 K) u  [* o                    theCyliderBuilder.Destroy();3 i( ~1 k' h. J  K/ G
                }: m& J- ?, D( l4 v! `+ T
            }$ `: c$ G) C" t( C
        }
- n$ h, m4 Y1 t. A3 u+ Z, }7 ^$ h1 \5 d+ a0 S0 T
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
) b2 g+ T7 q9 E; n1 \! s# A) J        {
; j. u3 f0 `2 D- J/ f            try/ M- q6 ~  l* S: |  ^: ?
            {
& X! F+ J  N) q5 L. D- f% ^) M                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
! F$ W. P2 ^; Q                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;& \- \; u$ J# h8 v8 s! H$ A
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
0 ?) A) u; m1 B# f* K$ ~
6 j) H6 U) b# S: ]9 x                Face[] faces = new Face[1];
2 {7 Q# U& |# s2 a: G# P3 W. s$ @                faces[0] = face;
5 p/ E0 S5 q6 E. k8 Z3 K. W$ K6 T                FaceDumbRule faceDumbRule1;  O$ x; ^3 x) p* h( m
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);, w  G( C6 W9 R2 {6 s! O5 ]
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];4 W! v& K3 ~3 A2 {: j3 g% S" }
                rules1[0] = faceDumbRule1;) e5 M% B9 w: t: j) e
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);+ }( l+ o6 G+ U; A% [6 C
, x( t& s- h' C1 T! w
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
" ~& g5 O: g9 l, k3 L- W                theAdmResizeFaceBuilder.Commit();
  d" |; \1 s2 S$ K                Expression expression1 = theAdmResizeFaceBuilder.Diameter;" @7 I9 F9 X7 x  j( F! A, |; C' J' A
                faceDumbRule1.Dispose();) ?4 ?6 n) J. Y5 @
                theAdmResizeFaceBuilder.Destroy();
4 j6 R; A* w9 Q+ e8 d            }9 f% F& p% @5 Q, H0 D
            catch (Exception ex)
* W$ o% J4 a0 |% _$ r$ L- x$ f3 Q            {
( j" X" {: f/ R& ~4 g' Z                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");
) m  a8 e& I, y+ c# Q            }
8 t8 n" t9 ^( S1 ~0 U        }
5 L* c3 r! j$ o! Y: u
- A# P; B1 o4 }, d% a        public static int GetUnloadOption(string dummy)  q6 Z& V, x" X& K3 d8 |. o# s! E/ ~
        {) j  q' Z  j) K1 I
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");; q, T2 d* Y0 n( J
            return UFConstants.UF_UNLOAD_IMMEDIATELY;
$ G6 ]$ C/ s: Y1 I        }  ~  ~4 K+ J; N3 s
    }: O. _8 b1 L5 Y
}& Q7 C, E5 X6 D8 ?$ M
上海点团信息科技有限公司,承接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
! U; X1 i9 L& L1 x! p如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

6 p  b, w+ R1 [! G估计那个地方要释放内存 2 Y8 r! j# H0 h& ?
8 d! K7 o7 ?4 H- {. B/ x
这个需要调试的
' a$ l, {' G) q- d1 `! M) s' t" T5 U8 c& _* R3 i: F4 o* q
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:256 R: L: _3 x  K
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
" l  w! ~3 X3 K& B7 y# M7 G( y  [
另外你干嘛要用同步建模的功能. ^9 @) r9 f% N% r8 ]3 v

( }+ H- }: E" p* E  D" k, k# ~直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28
- D8 c1 W% Y8 t! ]9 s$ T另外你干嘛要用同步建模的功能! e  k1 L% D& Q" d* ^$ I# t. j5 C
5 {3 x! Q) y9 M* y5 q* E4 ]
直接使用 偏置面 不是更好
# n3 g* P2 f% ?3 w6 u2 y
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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
# |" ]1 r6 k( b偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
' K, l# D3 E) C7 _# M% a
具体这个 我还真没怎么研究过  ) u( a7 E4 j$ F( u2 z. G+ S3 A) L2 w

* ~- Y, Q" Z( r不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题# B* ^# X  W9 B! n( M$ ?
& w# G# c- Y. M, c6 p  X
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
, G$ X/ t$ t, m偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

. x1 [) D; F( s2 N$ X8 t$ z你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:126 {3 f0 K( s* E' m
你主要要实现什么功能, 需求告诉我  我写下看看
: b3 O! a/ T) j  ~+ B0 r8 d/ C6 [
我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了