PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[已解决] 多次调用后提示 执行引擎异常

  [复制链接]

2013-12-20 09:27:11 10458 14

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:
+ b9 m! m' y% HNXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
; j4 B  E" T9 e. `                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;4 E. j4 g8 V- F  Q* s& s! ?# K# n
                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);% U% b; `5 B7 e, s

8 y3 }4 p6 ^, ^) N7 [: R                Face[] faces = new Face[1];" V. w/ G) T" Y; o+ i! X; ^$ \
                faces[0] = face;7 |2 f: L& k9 I+ Y" O7 x* S
                FaceDumbRule faceDumbRule1;( f3 o% ^2 W0 M9 @' V9 V
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);3 D2 O4 y, M$ Q
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];* o6 ~3 v' N( P- d2 c
                rules1[0] = faceDumbRule1;
* W: S* F7 X& o  e. `                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);5 o' J6 g  K9 M* x! O3 ^9 ?8 }
# v- E& V: @: J+ O
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();7 r% h' i- C9 b7 [' D5 K  I
                theAdmResizeFaceBuilder.Commit();2 w; p/ |7 M+ n/ {# O5 R6 U
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;, _- x( }3 p. O7 J5 |
                faceDumbRule1.Dispose();; w+ B" J7 s1 c
                theAdmResizeFaceBuilder.Destroy();
% A  h' x, h7 y. s0 z5 z# [, [. U+ s6 k

5 J% J1 W$ i8 S: R  y; [由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值& S9 a& D, g/ x7 }. ^! ~
上海点团信息科技有限公司,承接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

你就这一段代码吗?$ o7 a) v7 f  f) U+ b
其他的代码会不会有问题+ n, b. ~) q5 X+ P. 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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:
' c0 W% x: S) G8 M, dusing System;$ O' _& ]2 s8 t3 d/ D0 Y
using System.IO;
. n: Z7 C! G# x/ _8 x$ O- S8 Dusing NXOpen;% c. X0 R( Q2 w) B! ?
using NXOpen.UF;
$ |6 g* @. c( E3 P6 X* `' o0 h9 I& i% c. ~: p/ q0 w  P# c5 d
namespace InstanceFeature
# w" g- Y- g7 o{2 O5 _" ]5 w. X0 ]  j( C
    public class InstanceFeatureEdit
* n$ A/ \! H+ D2 ]  L' V  ]4 W    {2 Q* X6 e, l4 A* I& d
        private static UFSession theUfSession;
1 `) a. t0 Y/ L& d5 b! W        private static Session theSession;
6 V( l& K+ W1 L) C" ]+ P2 J* q: K; ?
7 I/ f+ [. L& F# F% w) m& M        public static void Main(string[] args)  {7 W$ j5 {" z
        {/ n/ @. S% _9 x3 ]9 G
            theSession = Session.GetSession();
' f2 v& H6 R  A; y5 O            theUfSession = UFSession.GetUFSession();/ R, n# A. I4 y  u& W6 i, B
            theUfSession.Ui.OpenListingWindow();2 d: @: e0 @, x) X; K7 T& S! n0 {
            Part theWorkPart = theSession.Parts.Work;  p6 u" d* {4 v' T0 h& e4 w! s
            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;) i2 q( W/ B# t3 P0 t$ e- |
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();
7 u- W6 y1 [- D" y& Q3 C            for (int i = 0; i < theFeatures.Length; i++)
) N! L+ b  i5 s) i3 v            {" O, b, T+ v5 k  M
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");! [0 @7 x. N) N) l7 J  E
                if (theFeatures[i].FeatureType == "BREP")- U" U# }8 r8 n: n' X
                {' K! R2 ]" V, J# B% T; e
                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
3 z; `! S0 d+ u+ Q                    Face[] faces_of_brep = theBrep.GetFaces();
$ c4 j. R+ b* }6 p9 m( Y                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
: y! R1 e" K* [. c                    for (int j = 0; j < faces_of_brep.Length; j++)
& X! O# X& h! ?3 q8 W8 y4 P                    {
) }) x" V6 W+ K- o5 U( |                        string facetype = faces_of_brep[j].SolidFaceType.ToString();
, Y; M. q2 \4 ^. L: r  e                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
/ X* S0 J8 |+ f7 z                        if (facetype == "Cylindrical")
3 m  V7 A& b2 Z: X% ~                        {6 h" ]0 D, F: W' x7 L, V
                            int type;
4 p# x: i& I2 y; Z                            double[] center=new double[3];! U! E# j: E0 r1 z
                            double[] dir=new double[3];
1 u8 }5 u2 Y2 P: n/ ~# J                            double[] box=new double[3];
$ n% L: b1 a; }! x* Q+ P, O2 A                            double radius;7 B. F0 h2 c3 e6 [
                            double rad_data;
" M0 V* m  n" Q- l# @9 c                            int norm_dir;
) ]) @# ]: l* e  ~* s                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);
+ j7 u. ?; Z2 G7 R. W+ @1 L                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");
2 ~3 q% f% N3 _( u: D) k5 J                          //DeleteFace(theWorkPart,faces_of_brep[j]);5 y' z5 H5 T- q% M: o! Y
                            double NewDiamter = radius * 2-2;  X# }1 I* @6 e: B' }" Q3 U
                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);, i2 b: j* H) D7 `: A2 w3 ?
                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
7 `2 I+ Q' ~7 x, ~7 i                        }# m$ S$ v- W9 u) M5 v5 X
                    }/ g# o/ v: T1 \" p2 \
                }
0 K  ~) P6 E* f3 a2 B& Q- ^                if (theFeatures[i].FeatureType == "CYLINDER")
( E+ X0 j5 o7 T( o! M" k9 s                {
- F- l$ ~) m. b2 X3 A9 T1 V                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
( }# j# k1 G8 b, u                    Vector3d dir = new Vector3d(1, 1, 1);
6 D8 s5 _  w* ]9 B9 D  S                    theCyliderBuilder.Direction = dir;
% i. v8 W6 w7 ^+ Q% [" P                    string str = theCyliderBuilder.GetFeature().FeatureType;
; G5 [; K% ~+ S, j4 A                    //theUfSession.Ui.WriteListingWindow(str + "\n");* {" U/ v5 g# F) x1 R
                    theCyliderBuilder.Commit();7 I: {3 p; [' c0 J+ r) ]. a% I6 {
                    Point3d point1 = theFeatures[i].Location;
! p& k7 }+ V2 u1 W9 w, z7 z                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");) A; b9 c4 A- M+ ?& f- E  m
                    theCyliderBuilder.Destroy();
: F7 T) h& o- U  j* R                }
$ M; u- g/ T+ x, Q7 N+ P3 C' y) Q            }( Y, G% e2 P6 T, v3 q
        }
/ s9 L  \  t) x4 G- K/ a) }* o: }& b+ b8 h0 X/ a0 O
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
) N5 h% N0 z. n7 L        {
* V& o1 C# v; [; h( w  N( i            try8 Y) ?3 g1 i; h2 A% V. p/ d6 Y
            {
3 m: v7 I: U" W9 F                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;3 {0 m+ L  q& x5 `$ ?8 i3 K' h
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
: u! _6 `* m# c: J% t" E                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);& X; V$ D( o7 M" Z% v  w8 |

" Q* U) h6 X' ^6 y) p1 b# U                Face[] faces = new Face[1];
1 X/ ]) D3 L. R1 ~/ p# M                faces[0] = face;
' L1 L- X% i, o5 Q$ J* D; |1 l                FaceDumbRule faceDumbRule1;# `: k& Q* B/ P6 s0 ]* y5 G
                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);2 u9 b5 A1 p6 I
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];1 Q( Z. Q! T4 X' n% P2 }  x
                rules1[0] = faceDumbRule1;
4 k  ]+ C/ C5 U* g: k0 W                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);$ ]2 L8 ^$ c3 ]& L4 \2 r/ L* G

8 w" X8 ^6 x8 \' m                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();3 ~4 p6 |7 Z; c  |7 h
                theAdmResizeFaceBuilder.Commit();
, x: v5 U$ A" d                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
* o2 ]- |  i! V) Y$ T& L/ C# E3 X                faceDumbRule1.Dispose();: V, ~4 J9 ]) D/ U
                theAdmResizeFaceBuilder.Destroy();7 `. E8 E7 `8 J- h
            }
, \% q+ v& P& H            catch (Exception ex)+ |) l2 P" S5 T* i
            {
) \, c4 a2 Q" Q1 z6 ?                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");
, P2 W! o, y3 A3 I            }
- O& w7 Z3 T' n7 Y' S        }
/ g9 g* r7 ^: Q  ^0 F3 K' |% L- z. d. w( Q7 G
        public static int GetUnloadOption(string dummy)
: O0 P2 o" I2 |) @& A6 {) P        {8 ]) m# r6 p: t# i5 C3 v
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");, t, K! m8 [/ Z, P5 Y
            return UFConstants.UF_UNLOAD_IMMEDIATELY;
4 a* Y0 E  }4 R6 H' J6 t1 M# F        }
7 X' e) X! x+ Y& U- k! k    }$ N$ i6 c2 F8 {. ?; L* b, K
}1 S& ^) E! V- f& d6 D( o3 D7 k) c
上海点团信息科技有限公司,承接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:257 s3 E+ R  p0 l4 f0 e! _3 v, j5 s8 X
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

: ^$ b+ Z7 {2 y估计那个地方要释放内存
6 T7 Z1 J8 T3 ?
  k$ H1 b3 d* u/ t这个需要调试的
# T" F& u% \7 k- g9 B; k* \
+ @4 N( K- }) X$ f' @; S, E. s! nJava 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:250 V- r' F$ t  q
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...
4 W3 W& X. q- J, g1 _* R/ N, J" O- I
另外你干嘛要用同步建模的功能$ Q! R6 v9 K5 O4 q  q! J+ L; a$ j
' C+ i: y) V: w2 T
直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28: M7 A- H7 A9 P, ]5 n
另外你干嘛要用同步建模的功能
; `6 b; v, `4 v6 ~
8 h! \9 R6 U2 e. U" a4 Z直接使用 偏置面 不是更好
% ^: n& E9 j; W& m- r
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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
! d+ P( _1 {& T" k, R* N偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
/ O- M" Z2 q1 R# K0 Q
具体这个 我还真没怎么研究过  
2 A4 s5 I4 I! U# @# ]* p8 ^! q5 \6 T# W3 a, }; ]6 x* ~9 o; b
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题
5 u% I; S2 i8 V6 k3 W  [* e+ M+ r+ ~4 X
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
5 z5 p+ Q5 n$ u/ R# K偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

3 G4 Q2 k# y" U& W8 j+ B0 }你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
, M( V1 E- x) F1 {4 Q你主要要实现什么功能, 需求告诉我  我写下看看

$ l6 v2 ^6 M6 j# w( }+ G5 @, r我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了