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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:
4 \, [5 E+ D5 w6 `NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
# M. W: T$ p5 f                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;) ?% O5 P9 K! S# d& h
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
* _. S6 ]- D5 g) g- `& `5 r) ^  N9 C% o
                Face[] faces = new Face[1];  `6 T+ a$ r1 j# v3 n# u  L& w
                faces[0] = face;
8 g2 u1 N; `& b; P                FaceDumbRule faceDumbRule1;
( K1 B4 H$ |% E# v$ a                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
8 O" l/ s& t$ D! n' U# v8 j0 L                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
4 ]  ~& X+ E7 [" U& q                rules1[0] = faceDumbRule1;: v. \7 I- t, D) W4 x) l
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
% a( {; h0 O, y1 k8 _: U' ]8 n
- c7 n4 x5 V/ L' c. l: [                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();- v' T/ A1 N( f$ c7 r& Q
                theAdmResizeFaceBuilder.Commit();
: e, Z/ y6 I9 m/ j                Expression expression1 = theAdmResizeFaceBuilder.Diameter;' G: J, i7 z# ?( O
                faceDumbRule1.Dispose();* U' s3 }, C9 e+ N/ u
                theAdmResizeFaceBuilder.Destroy();
8 G: z3 w6 J2 |4 ^* t3 M1 g9 J) b# C

% F- G' h- \- C7 q由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值+ H9 ^2 Q7 \# A2 ?1 `, C
上海点团信息科技有限公司,承接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

你就这一段代码吗?
+ _8 C1 F# G9 g/ K8 I% F  u其他的代码会不会有问题/ x$ M& t, o" x+ l$ b; S; H, g/ \
这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:# b" o2 B8 M) u1 K0 _) y
using System;
$ D7 L4 I. ~' D) V, m( k2 N3 v8 Nusing System.IO;; ]$ o8 s( d3 Q& L; y* V
using NXOpen;: s) z8 A6 n$ c3 M
using NXOpen.UF;
. M4 n1 |2 f( w0 K! k+ `, u4 B2 b
namespace InstanceFeature7 P" k$ l# D4 r. S4 F5 D' F
{
! S+ O4 e  E; \. g# z4 K    public class InstanceFeatureEdit7 D+ k1 r; _7 p9 i& J: _1 m
    {8 A* W: E; |. i
        private static UFSession theUfSession;; @3 M: y) s  e* e
        private static Session theSession;
9 y# c+ ~1 i) S) T3 g# a% T( y  c8 m  W" m
        public static void Main(string[] args)8 U, I3 Z$ ?8 P. r0 U9 H' s' P
        {
+ e7 {* t$ }$ g( W; ]            theSession = Session.GetSession();0 I: p% d1 J" L( V
            theUfSession = UFSession.GetUFSession();/ m. p8 i8 B/ C% |
            theUfSession.Ui.OpenListingWindow();
2 L0 a( O+ w6 z! s5 g            Part theWorkPart = theSession.Parts.Work;7 ^$ t$ d6 r1 O! |
            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;, k, f2 v/ S: y3 a, ?
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();
, f$ D  s4 U! }# P: G. t5 t: U$ l            for (int i = 0; i < theFeatures.Length; i++)
  c. T! b$ B& t            {8 k* u( k# P, H/ N5 k
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
, w2 ^- |( g# \4 q1 J                if (theFeatures[i].FeatureType == "BREP")4 t) B/ x0 P' v7 J& m
                {) L4 E5 K0 ?$ Z
                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
0 `! C# s+ O- H9 P3 X: Y' i+ \6 F                    Face[] faces_of_brep = theBrep.GetFaces();
2 B( d9 U# O# P: M" G                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");* p" G: J9 m6 j; b# N9 Q
                    for (int j = 0; j < faces_of_brep.Length; j++)
6 Q( I% o' D5 R% `" @' `                    {, L7 m! h- v4 y0 A  {# q% O; e
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();; t1 O0 J. h; G6 {' |
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
: L+ I; N5 o# o( s6 ]- s                        if (facetype == "Cylindrical")
$ L1 |8 y# g  j! J6 |* }- a0 T  B                        {/ h* w2 j% `3 T
                            int type;  H# e4 {$ e% @2 F
                            double[] center=new double[3];
4 x8 @) j* R. j                            double[] dir=new double[3];
1 o* H0 {; j8 ~                            double[] box=new double[3];9 v7 w) ^. h  V9 @3 {& H
                            double radius;0 s& x" X& E8 ~5 T3 _$ @, t
                            double rad_data;8 Z9 l0 M* w  R. l3 k7 x
                            int norm_dir;' _8 h: p: S; Y* W- u
                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);' ]; m/ a0 B' n5 a6 Z
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");1 H0 Z8 n& Q& {- {3 `3 m
                          //DeleteFace(theWorkPart,faces_of_brep[j]);1 ~- x( n( H. W& }6 t
                            double NewDiamter = radius * 2-2;
9 j* ^9 g( j& @, N/ M                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
6 c6 z" ?, v, j! R! B) F3 B                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
6 Y# L0 |9 K7 |* O* g                        }
) N6 S% N( r6 D4 n) F' g" T                    }
5 {* h3 x3 K1 }. k1 Q, [& d; H                }  K5 @. n8 H, W4 V- S9 L* r
                if (theFeatures[i].FeatureType == "CYLINDER")
  p. c& i% o# p                {: t# o5 Y! d' Z! W& U, d" Y' S
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
# i& r3 l, {% G9 `9 S                    Vector3d dir = new Vector3d(1, 1, 1);
( ]- B9 Q7 W( i& ~                    theCyliderBuilder.Direction = dir;
, p+ B5 C% L* p" ~/ s                    string str = theCyliderBuilder.GetFeature().FeatureType;
( D" u9 g' a4 S  r                    //theUfSession.Ui.WriteListingWindow(str + "\n");- \# N6 e1 w1 D1 ?# u) q5 `1 ~
                    theCyliderBuilder.Commit();" M+ s" e. B+ |3 y, O
                    Point3d point1 = theFeatures[i].Location;
  Y1 ?8 f( X3 R' b# r6 a  W1 _, q8 I$ B                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
# m; Z3 d! |% {                    theCyliderBuilder.Destroy();) n$ Z6 s1 O/ p- l
                }: w" s5 ^, U4 b. h$ ^
            }
6 ^7 |: U" E/ F9 A, S        }
( R. M. Z/ A. ~4 ~- t) K% \) Q5 s- z
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
1 Y% t6 p& b) i! a, H* f: W        {% H4 x- k. Q# h# v. R
            try
) E5 ^  A9 |6 N* w; h3 e            {: [: P; N/ Y# ]4 V" u' X$ w9 ~
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
) f/ _- c# j) N9 b                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
2 n9 T% `% T* m( B9 ]8 [8 k  M                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);7 k- I3 P1 v' q) M1 r

1 u# C8 u: P6 g+ m3 v                Face[] faces = new Face[1];9 N1 @  I1 j  U
                faces[0] = face;' H9 _) e' _5 X4 Z- o! t3 G' ~/ P
                FaceDumbRule faceDumbRule1;
. u' s) @- n8 q! o8 e                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);7 C  A# P  K! ]. q
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
8 c1 @* b1 _" A6 \6 M                rules1[0] = faceDumbRule1;# F# Y" ^* s/ A2 u- l" t2 m
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);0 E+ P6 `9 t( @) E

+ q: C. L. A* [& w9 _; @                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
7 D! {  p9 ?% n) [. w8 t: h                theAdmResizeFaceBuilder.Commit();0 Q  w" ?3 a# a, d
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
- z: z/ ?! P4 [, Z                faceDumbRule1.Dispose();+ t) a6 \, r1 R  D5 j4 k( m" ?3 _$ a
                theAdmResizeFaceBuilder.Destroy();
$ A5 K% ~5 x9 l4 b- B) ]8 g            }
6 B7 J  m- z- q2 }8 p            catch (Exception ex)& l2 p" }7 A- U$ s' X8 w
            {9 l! v+ a, R& @/ y3 v$ @( {
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");
8 J9 H8 m1 S( h            }
4 P& r, b$ D! `; q* U6 P- |) \" Z        }0 @* }( O1 q5 {0 y: D5 _4 u' R0 v* @

: s2 P) e- n% a9 B        public static int GetUnloadOption(string dummy)
1 F) Q9 ]- L6 l% ]# n  s- ^        {
# `" C/ Z) X5 T4 Q& ]. g. k2 W            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");& ]3 H* m: e1 G9 h+ W
            return UFConstants.UF_UNLOAD_IMMEDIATELY;" y7 [% U% d2 Y) U
        }) J  @6 y* v% f6 h4 M* A8 B
    }# s1 V, f% D& k" z
}
# ?% Y, T6 v  S" `$ S' v
上海点团信息科技有限公司,承接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/ ^- u7 W# K: S9 W2 C$ u
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
% d1 u! s% m4 b( u, T) s9 q6 ?* G
估计那个地方要释放内存 0 _' R0 G6 q2 E* T3 g: u

/ g5 k4 Q+ a/ t* G7 B这个需要调试的 ! z. v5 R7 Z" g1 E, O- `, D
) \9 {9 S# }' H. p4 J( {: g$ `! P
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
3 E- N+ {+ R  h如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

& n. w1 x0 o& ^7 [- B另外你干嘛要用同步建模的功能
! `# ]5 r) I$ Q5 c5 r2 X. _$ h6 S- ?$ _7 h) G1 D# }6 }0 L  q' b
直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28
* x* V0 R/ \/ Z1 \4 U6 |另外你干嘛要用同步建模的功能9 ?3 I4 L. N  U

" s3 m' f. c' w: {直接使用 偏置面 不是更好
6 v) n4 O; Q1 r* {$ s1 G. n' a
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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:076 c8 r" L( h  x! Y$ M; \3 c% z" l
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

; e4 T- N7 [8 Q8 d具体这个 我还真没怎么研究过  , X" ?; {9 R8 B
( S. y' D) y% u$ Y3 }" i- D
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题$ i; \; q3 G! c8 x# i' A2 U* y
' ]0 M  V& ~4 b, z! ^6 Q
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
, A' P6 d. H3 X3 u0 U偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

5 @. Q" M2 ]8 ]. _你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
& h0 ?- i) K, G( U1 a' T) V6 B你主要要实现什么功能, 需求告诉我  我写下看看

3 F0 J0 X$ ]' y/ T; A! f5 Q% k# I# W我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了