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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:' a+ V1 y* e3 G5 o9 b& G6 P
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
" k5 s" P- w+ u0 G; p                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
+ B* L5 p9 p' B$ M- {6 g) v6 e4 H                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);' k/ Z7 j2 x; B2 c
/ E) I5 r% ]8 p, _: i4 r# ^3 x
                Face[] faces = new Face[1];* l/ e% U% b6 X# C  [6 T
                faces[0] = face;' |1 S, b( [# C0 r: q! z4 t
                FaceDumbRule faceDumbRule1;
) G, B' ^! u* n7 ?0 v% B                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);9 Z2 E) O, L: }5 U: p: n# v
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
6 C: J1 g; n6 s9 u                rules1[0] = faceDumbRule1;: H- W* c7 f  \. F
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
& Y8 n) T. q1 Z" Y1 f, m2 X' s! C
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();( o6 I# x  h; ^+ Y8 o* V- L
                theAdmResizeFaceBuilder.Commit();
1 s! p5 A! w8 E+ o                Expression expression1 = theAdmResizeFaceBuilder.Diameter;& c! e6 S) m& d( U" ~
                faceDumbRule1.Dispose();1 O0 r5 l( r4 Q' l  {
                theAdmResizeFaceBuilder.Destroy();
3 Y! |- f, U5 J' Y& [" R! d  F7 r" ?* O. d9 M
8 {& @* L( p: U# ]5 T
由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值
  N3 r. O  [' K4 m- ^+ Q7 h  g
上海点团信息科技有限公司,承接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 O# B# ?/ R: s) X  N# w) y
其他的代码会不会有问题; _6 t9 Q4 ?6 ]% 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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:
: a1 O3 `1 ^' j& c; ^using System;
- `( m3 \0 P* o$ J6 C; d3 z' jusing System.IO;2 Y3 ~& W- f* c; l. v$ Y8 {
using NXOpen;
! O9 j5 [! B* j7 ausing NXOpen.UF;/ c  M# C+ ?" y" ^( c' v
2 e$ n' `3 g- s$ s0 R
namespace InstanceFeature, `. k& T4 N5 o2 ^
{. [6 [. k" C7 o: @
    public class InstanceFeatureEdit  n  n  ]0 ]5 o
    {; P7 G% ]( v4 v  X
        private static UFSession theUfSession;
8 f9 O" l& K- U  R% }0 b        private static Session theSession;
  k- [$ L. r5 y2 q2 i& p5 @
% o. e5 A* h: O/ q, V        public static void Main(string[] args)! o$ D' c" Z5 O. F; X& n
        {
  r1 n7 g$ q: Y) K$ g            theSession = Session.GetSession();
) x! {8 t1 b2 ]3 R( |- R            theUfSession = UFSession.GetUFSession();
2 x% f4 E+ v" q, }            theUfSession.Ui.OpenListingWindow();
! h7 ~) `8 U- m) x: y3 V/ F3 d( {            Part theWorkPart = theSession.Parts.Work;
# y5 K2 }7 o5 o7 n            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;) Y" O3 S' ?9 u
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();! O% l3 [9 m/ ?% [0 f% f6 Q
            for (int i = 0; i < theFeatures.Length; i++)
( _* f6 O: A) r9 {3 [7 a            {7 [6 m2 L7 G! `9 ~
                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
. e  q2 l9 d" P8 v0 m                if (theFeatures[i].FeatureType == "BREP")
0 R/ |, P4 D# d8 P' |                {  i1 t& v& ^5 W' L; I
                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
0 K! W1 n, C$ N                    Face[] faces_of_brep = theBrep.GetFaces();
- l; T$ I4 F8 G8 j' h7 F9 D                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");
5 d: g  T. d- ~9 u* K0 Y                    for (int j = 0; j < faces_of_brep.Length; j++)  j8 t1 H) p4 V
                    {+ K& D. N' E' U
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();; R$ C- y* i8 w* m- x, X: j6 m
                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");) H4 {+ n3 o* ^
                        if (facetype == "Cylindrical"), c1 L- O; R# h# y
                        {
: y0 U+ `* @. Y: e$ w                            int type;& r* E$ _& |4 B8 E
                            double[] center=new double[3];
/ L5 ^$ l8 K9 G+ R5 F                            double[] dir=new double[3];. E/ Y; L2 t- D- S% ^
                            double[] box=new double[3];: b2 V" ~. J% d
                            double radius;7 [0 a0 k/ ?6 l
                            double rad_data;4 }- M* O3 W7 \* x
                            int norm_dir;8 W6 W* M) p2 C& s( b1 A
                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);
2 O* C3 W2 @) J& B/ g                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");4 ?4 k/ K/ d) K& A* x1 ~2 f
                          //DeleteFace(theWorkPart,faces_of_brep[j]);
3 W5 g4 s) l9 h+ @6 C: ~                            double NewDiamter = radius * 2-2;
/ E" h: D- b/ j, @2 d0 ?% _                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);
! N4 e. O8 }1 Y7 c  Z                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);, U* f' e6 v* @1 |4 e3 Z. L: E: v
                        }
6 E5 y* L% ]- I9 g% c                    }
8 f$ f& d* C4 ^. s) l4 u                }% m4 p+ T) }' p8 i7 U: ]' R: p! e
                if (theFeatures[i].FeatureType == "CYLINDER")
; Y4 V% r" i; k7 p# K. }- ?( h                {
: ~4 b* k- W1 ?8 Y                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);3 _: c4 E0 X( e# ~7 ~/ l
                    Vector3d dir = new Vector3d(1, 1, 1);1 ~3 J4 J1 {7 v+ W* s# h& m
                    theCyliderBuilder.Direction = dir;$ d  X: X; @. \2 j4 m% S
                    string str = theCyliderBuilder.GetFeature().FeatureType;. K! d  n3 E! F& Y3 ?
                    //theUfSession.Ui.WriteListingWindow(str + "\n");
  d* U5 g( s' `0 [; @: E                    theCyliderBuilder.Commit();) r4 a  l, y3 u& {" G' v: R
                    Point3d point1 = theFeatures[i].Location;
9 C% p! }7 f+ t; O7 T                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");
6 W9 [/ @. A, w" J0 A                    theCyliderBuilder.Destroy();/ J) c% I- G: z1 d
                }6 n) n7 v3 |& \! D
            }
9 u2 G- b9 s+ _3 {" }        }( f* P9 z% q& T9 v' z
. q( l2 \- F# Y( |7 B0 ]
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
2 l0 G0 `5 I2 K# x  T0 P        {. T0 m+ A6 u2 b0 \3 }8 A
            try9 J& |  P% w$ L- K
            {
! j) v4 c& i$ }" J9 _                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
$ e+ g" n' ~. U& I/ Q3 R                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
0 m4 q5 J1 ^% m1 e% c# O                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);1 E6 ]! R' p- v2 l/ v2 h% w

. t3 a1 l# o2 h                Face[] faces = new Face[1];
) C" }0 t+ |. a+ k$ x, J  A' ?2 [                faces[0] = face;- w! R7 }8 ?. |: Y2 q0 _$ J
                FaceDumbRule faceDumbRule1;
/ h9 y) G+ X( E6 f                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);, G( S* T8 ]$ D0 I
                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];1 G- s" u; Y& f
                rules1[0] = faceDumbRule1;: W1 b* t2 j" E6 @7 v5 g: x
                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
  o9 `- u: ]1 k. D* M. @5 X- N7 O: y: f, ?1 O' o8 t
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();4 ]9 ]% h+ ^! m) Z4 Y
                theAdmResizeFaceBuilder.Commit();  F# P6 o' X9 G3 e
                Expression expression1 = theAdmResizeFaceBuilder.Diameter;) @' D' g2 _# C8 d4 T3 f' [
                faceDumbRule1.Dispose();2 l  h5 U5 h, V  u2 @
                theAdmResizeFaceBuilder.Destroy();: M% q% w& R; `7 }% B" }, s
            }0 @) F7 [. ]3 N+ z9 O4 R
            catch (Exception ex)1 c* N1 N; j% B; c
            {3 Q, D. x' p# `& n
                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");
2 d/ K' E. V- L& P. ^            }5 S. U6 ^" T0 R5 `, v
        }
7 w7 [5 }/ R2 }; b, g: v) |+ \
  X6 b& D+ }& W! M  W        public static int GetUnloadOption(string dummy), u3 r6 Y, T4 G; o+ T! y
        {. r1 I9 H4 w/ @) A8 t/ p
            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
2 w4 s* s) }; m$ n- T6 A5 x) {            return UFConstants.UF_UNLOAD_IMMEDIATELY;& Y( E4 M- C* T# e
        }9 @( }  f+ B) |  r
    }7 Y$ K; r, G& ^" X; q# L, O  z
}
2 v& v+ Q, ]4 c) P$ U
上海点团信息科技有限公司,承接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
  C# V$ R5 `4 ]% W# t如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

# C8 z* ~. @/ G! A估计那个地方要释放内存
$ m) v5 p" |: i0 T/ Q9 H; j0 ~! U' g8 x8 ?
这个需要调试的
% N- ]2 o, Q2 `( M$ `4 m: Q! A1 A7 c9 N9 }  ?. H+ Q3 Z
Java 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
+ Y+ q' {  w$ m4 b3 M+ r& B如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

7 c& w+ w7 S* q6 Q& U6 ?# f另外你干嘛要用同步建模的功能2 P5 E; F9 a" [9 Y% p. q

3 }/ X& |2 ~& I( f8 E- g直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28
% ~. d# p4 W- ]另外你干嘛要用同步建模的功能
4 u0 ]2 x! g1 L% T; [% Z
# U3 t. ?- M$ R直接使用 偏置面 不是更好
2 H+ x& C* G1 U. b
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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:078 n' t1 r- [8 n4 q* _
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
& Z" k% x1 I" l5 ?& U- ?# e
具体这个 我还真没怎么研究过  9 z. \8 r1 `! j, I- |5 Z; b
4 t4 ]/ ]9 n3 V7 F+ B
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题4 M3 Y2 i) _# }: v& M! I
) r- |4 P, y# ~- Q8 R; m/ B
偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:07
+ c# |% I) \2 k0 N3 v0 Y偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

9 ]! \, E$ j" y' P你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12
, B4 Q. h; E6 M% x. [你主要要实现什么功能, 需求告诉我  我写下看看

, F5 W& r' u" ]! m我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了