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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:$ f8 d7 o0 o3 D4 O' N0 X" P8 ?
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;6 v) @" h$ F% w3 \( n
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
- M" l: ?- R: x                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
. v9 K: `2 }' g/ W9 d5 s3 B0 C8 B# o- l
                Face[] faces = new Face[1];) j8 A& f8 a7 e* `, q9 r& B0 F3 o
                faces[0] = face;
# J) P1 \* `, Y( X* O                FaceDumbRule faceDumbRule1;+ v4 G% B# X( ~; U! W/ }" J  z
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);/ m+ ^" j, v" @( z% K
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
9 l3 Z; t0 [- {$ j0 Z                rules1[0] = faceDumbRule1;* X3 j3 V* }" [
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);- g2 R% k% x' Q9 d5 M8 r

% x% }. e! ?& s1 M& p4 ^% ~. T                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
" o- i* l2 h! G1 d                theAdmResizeFaceBuilder.Commit();0 g- }, q. y$ I9 H; i7 u3 R; I
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;; k' o; l  j' K7 l1 t$ I) A# i8 q; U
                faceDumbRule1.Dispose();
3 e  h. ]0 \6 S" w4 S: k- S4 B                theAdmResizeFaceBuilder.Destroy();1 X0 H9 v! S! R6 r* f& f, P

$ e. U4 W4 f$ I" n( E. _! Z; Q8 g5 c) _, Q- ~5 |( S4 |( M
由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
; c! O" ]8 {6 }% W
上海点团信息科技有限公司,承接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 P4 }1 p7 w6 o; s* }9 R其他的代码会不会有问题
$ L6 b3 \0 E; J0 J! N0 I这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:  L, z, [5 i& j* ^) M
using System;# }3 ]% r% t5 V  a7 [  K8 m
using System.IO;7 s: L! U3 \. P2 l+ l
using NXOpen;
5 s, _# u) Z4 s/ O$ T* ausing NXOpen.UF;
6 V; h' E1 i1 n: v3 G1 Z! d7 r4 H+ U
namespace InstanceFeature3 J6 e/ E0 q) ~* a
{
' E# ^5 y' @  S7 h3 Y    public class InstanceFeatureEdit
9 }8 i1 P& R* B2 N( h6 G( k  l    {
8 `$ N. p! e1 b: l        private static UFSession theUfSession;3 o# b+ q. T2 X1 G' e3 z9 x
        private static Session theSession;/ ?( E5 k, s% F. S
2 o1 v) o) P* t4 {
        public static void Main(string[] args)' |) Z8 a4 o: R0 j, [; H1 ?
        {( U. c' [; Z' l4 ~
            theSession = Session.GetSession();; J4 B; M. |9 h' T' t+ I5 c
            theUfSession = UFSession.GetUFSession();
5 y9 \7 T, I" b) P/ @) I& F( Z3 W8 |            theUfSession.Ui.OpenListingWindow();
/ x# t. R3 {1 {; w" L" i7 q' _            Part theWorkPart = theSession.Parts.Work;
  K# S  H8 S+ U$ d/ v: k+ `            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;
8 J6 D+ }0 k$ i+ E            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();
& b' k  M) A& i+ ]7 `( S- @            for (int i = 0; i < theFeatures.Length; i++)1 J9 k: i5 c3 L* G! ~
            {
2 C* G0 ^9 p3 d; S+ o1 e5 Z                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");& @( K' F' X. ], B4 O/ r; b
                if (theFeatures[i].FeatureType == "BREP")1 g" l( l5 I; D) c$ \& O
                {1 K; P1 f- X0 B
                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
: y% |2 i% s( f! u7 I+ t* u                    Face[] faces_of_brep = theBrep.GetFaces();
' C+ j6 B) J, R6 V& q, W! j                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");% m2 a2 t7 j/ x- c
                    for (int j = 0; j < faces_of_brep.Length; j++)
! N1 @6 k9 T/ G5 q8 s" p                    {
4 M# |$ T9 v: J$ V7 U! s7 W6 e                        string facetype = faces_of_brep[j].SolidFaceType.ToString();9 D7 N1 _* T; K
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
( `* X, _5 f# Z                        if (facetype == "Cylindrical")3 F+ j+ v; W: M/ b* D1 R  {
                        {
0 R1 D" G$ d7 q0 t                            int type;; _( P0 Z0 Y& P( _
                            double[] center=new double[3];
( b9 x% l% y" u' g( X                            double[] dir=new double[3];
% V  h( N( Y6 I9 k2 G                            double[] box=new double[3];
! a# k4 \1 t2 I$ p% b6 W$ ?                            double radius;
) M; _: M1 }* J: Q                            double rad_data;1 V2 |9 F6 t7 w& @5 F- H1 x5 ]3 ~
                            int norm_dir;
) {' c' t# ?- u; v2 {, n' n                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);
' N. c2 P0 _, a                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");+ Q1 h0 U/ H9 a8 E$ V
                          //DeleteFace(theWorkPart,faces_of_brep[j]);0 N- f' a7 \# B  V9 v
                            double NewDiamter = radius * 2-2;
7 j1 W3 K4 W! k9 v8 T, Y( G                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);7 h" A! o8 ^. Z/ Z
                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
( \) ~- S4 p4 Z- j: O! t& L/ b0 Y                        }8 }1 X& K6 Q$ `0 u' l/ R- O
                    }
# g$ q4 J/ H$ j1 _8 G2 ]0 s' [                }
0 i  F; B$ T$ N                if (theFeatures[i].FeatureType == "CYLINDER")& p  s# c4 \. w  w
                {
; Q3 L8 M& n+ P  [                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
' C. a9 i3 q4 }: w) p+ S' h+ a                    Vector3d dir = new Vector3d(1, 1, 1);* j, }' o$ f! d% l* b* P4 Z
                    theCyliderBuilder.Direction = dir;
; _7 C$ ?" O! _& Y; ?8 i8 z" \3 F                    string str = theCyliderBuilder.GetFeature().FeatureType;" W5 m. H- _! c. v" S9 Y
                    //theUfSession.Ui.WriteListingWindow(str + "\n");' A5 |( z  c+ w2 U+ u. n
                    theCyliderBuilder.Commit();/ C6 q# I9 Y7 s
                    Point3d point1 = theFeatures[i].Location;  r: \8 O. W" p' j# [+ j! g
                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");: ~- D- F; Z) _0 L- Y1 A9 S
                    theCyliderBuilder.Destroy();
. J1 }5 `6 n% B- z7 O3 e) `                }
* W! C/ \$ L+ ]9 k7 T: G- S6 ^, f            }% q9 Y+ R  R, L% H$ b" v
        }" u% Y* J3 i- S3 Z2 d% R5 m
( R) e. F) s; R: s; {
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)# x: o) O: `) H! R- c& s% I8 B
        {
1 u  t1 x/ L; E+ v( T            try  J4 F0 f# _$ t! Z
            {* h9 {/ Z- R+ e4 G% W
                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;0 L; Z+ i9 K# A( S( L' e1 p
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;' h4 Q4 p% B) v# O
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);& u: r# X( h7 g  g$ d) `7 p

; ^& Y4 X! p' F+ l% n" z                Face[] faces = new Face[1];
. {& }$ l4 \/ C0 `                faces[0] = face;% Y& D& Y' r+ A0 ?2 H
                FaceDumbRule faceDumbRule1;! q/ m3 p7 _" C3 Q& @2 l
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);2 L4 T# x2 s% ?) Q. f& x: J
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];1 r6 P7 M. m/ a. {0 w8 K- J# N
                rules1[0] = faceDumbRule1;6 u6 e0 p" C9 P6 n! J3 E7 U
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);$ m* ^& v- ^# [$ m3 K

6 H% m5 W5 d' v                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
( Y" @& R& K: O8 o# D) ]) o) Y                theAdmResizeFaceBuilder.Commit();
4 r, f# k, r3 o) Y3 w! \                Expression expression1 = theAdmResizeFaceBuilder.Diameter;# `3 ~0 _' n1 c1 }) Q9 x1 a
                faceDumbRule1.Dispose();9 `+ L) H4 |$ Q3 m' p5 A. Q. Z" |
                theAdmResizeFaceBuilder.Destroy();+ \8 L, B* p4 C' ^7 `- |5 I/ d# `
            }% d" r9 t+ b! r, i4 p2 N
            catch (Exception ex)- p/ ]! X6 D2 g$ T  \( q. S
            {8 M, z# n" H( i; V$ C4 R( Q
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");+ \# [* m$ ^" D7 f$ w- i( G
            }* n8 s+ W, P. B9 e( B1 B. N  U
        }
- o4 I2 q3 x/ [6 ?; T6 d, ^7 K  ]: q6 R; c/ D; ^$ S. U
        public static int GetUnloadOption(string dummy)
5 _; z$ h0 Y( E3 x% Z        {) B) Y3 O# p8 e" ~" r6 U  R
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
& S" d+ \- n; u( x# i. @            return UFConstants.UF_UNLOAD_IMMEDIATELY;
. \7 R& ~/ U0 w7 H% `1 a        }0 k9 }* l! g  n4 r; `9 f: k
    }8 o7 o1 w" R5 j# l" R+ g% U0 X
}) \( l* b; w, n" S5 z
上海点团信息科技有限公司,承接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, Q; z+ Z0 B9 b1 {/ e
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
9 j, m% O1 r' d4 c- I
估计那个地方要释放内存
: v5 f' P& ]! E1 a3 M8 t: Y; q- w; h6 A+ v; |% x
这个需要调试的
4 ~8 i6 X8 C8 ?8 I( r+ I  K) ]2 G% z: J; a: I
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:255 ~" Q) X% E( s! v8 {
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
: i, C6 o9 z/ v- K# p5 {! ~
另外你干嘛要用同步建模的功能# L+ s  d' R( j

# [+ r3 t7 |. e直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:282 z. Z6 r8 ^0 m0 x0 Y
另外你干嘛要用同步建模的功能$ L9 R5 R! s! a: i. F

  a$ ~# `) k5 n) O; U直接使用 偏置面 不是更好

% F5 o8 K, i" N$ C) d偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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:074 p" ^$ q3 c" \6 a
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

' j, O  ]# y0 S8 o具体这个 我还真没怎么研究过  
+ C: \( x6 x+ y
) j6 j( A, C2 i$ ^0 V不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题
& U! o4 F/ `+ Z8 P% ?7 {3 w3 q" a4 o1 a- _; G* W
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07( M9 J9 U6 f2 s8 N) @; z8 l! k
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
8 l3 S; d( q- x2 |* ~( Z+ Z  j
你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
2 P, ]% ]# @. r4 W+ |8 d你主要要实现什么功能, 需求告诉我  我写下看看
2 y: D1 y$ x# l; A
我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了