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

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

坚守 楼主

2013-12-18 16:26:08

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

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

x
各位大侠,帮忙看下这段代码有什么问题,开始几次可以实现功能,多次调用之后,UG就会很卡,紧接着UG就会停止工作,调试显示错误为:执行引擎异常。:3 k# Y) f( b9 `
NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;
+ {5 d" N9 n8 a                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
' ~+ _$ v* a- y5 ?, l+ [* ~                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);
; o& Z5 V1 `; _! r0 m, c% H+ E/ `8 x! w* n
                Face[] faces = new Face[1];
1 Y; z6 X8 @& b7 ]) U( m                faces[0] = face;
( |, t% X) ]" U9 @5 R& @1 i- x) V                FaceDumbRule faceDumbRule1;
( |. N6 M% x$ H2 x, N" ~9 @                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
; o  N) J( d9 a3 _5 m                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];0 k" b8 t& A, Q1 t. D4 E# G
                rules1[0] = faceDumbRule1;
0 n5 K8 Q; Q# {9 W                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);/ R( e9 j) F( c

1 |* w6 C8 s8 T/ e: Z& I                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();
* H9 m8 O3 j1 r; W                theAdmResizeFaceBuilder.Commit();
7 o$ y4 c  i/ e- H8 V                Expression expression1 = theAdmResizeFaceBuilder.Diameter;. U4 |$ S) V  c: B; i9 h
                faceDumbRule1.Dispose();2 S9 }( t, Y, m, {& _3 o) q. E
                theAdmResizeFaceBuilder.Destroy();4 Q  b! f7 x) y4 F; L

: y9 ^$ C0 L1 G0 v( Z) _& n7 l; W  p( D' X+ X0 C
由于以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值3 ?% \. j1 z& y
上海点团信息科技有限公司,承接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

你就这一段代码吗?
( X( |1 o- v0 p8 e/ O  L: q其他的代码会不会有问题
" b. Z6 S5 @. v5 P. @8 t% L5 K& N7 ~这是你录制的代码吧,你的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

这是子函数中的代码,是在录制“调整面大小”操作代码的基础上修改得到的。完整代码如下:3 @/ M2 X- n6 m- P6 T% f8 Q
using System;3 q" v7 y8 X- \9 ^0 ~8 _! A
using System.IO;
8 l, W1 j! r$ v: ^1 Lusing NXOpen;
7 d6 S! Q( P; d, s# Xusing NXOpen.UF;% l( N7 T  Q4 @4 n0 l1 h
( I8 [8 h+ n5 `: r7 [
namespace InstanceFeature
3 {+ O/ m9 \- B{, c7 B& v, ?: D6 v
    public class InstanceFeatureEdit
  f( R0 U$ u$ g! e; t/ B# f    {8 c; p2 D; f& M5 o$ M6 @$ n
        private static UFSession theUfSession;% ^* H8 n" N8 a+ r
        private static Session theSession;
. }2 n) r4 @  A4 P' L( u# o( O3 ^9 R( o  I6 a# t, {: W
        public static void Main(string[] args)) d: _! O% L& ~6 d# G7 U  z
        {
% ?0 S$ Y3 \+ w7 T            theSession = Session.GetSession();" k/ e3 C* F  H# w) I
            theUfSession = UFSession.GetUFSession();
. [" I2 O% g& s+ K# u1 j            theUfSession.Ui.OpenListingWindow();
$ ^" J% i+ w. R; }            Part theWorkPart = theSession.Parts.Work;
/ x! h. m2 Y: ?" M- b; j            NXOpen.Features.FeatureCollection theFeatureCollection = theWorkPart.Features;' e6 S7 k) L* k
            NXOpen.Features.Feature[] theFeatures = theFeatureCollection.GetFeatures();% V  {- M" T7 [  }4 U+ c+ z) _3 E
            for (int i = 0; i < theFeatures.Length; i++)& \, ^! F7 {' P" Q4 B
            {
2 Q3 t. d& u% N0 p+ j0 y. D8 P                theUfSession.Ui.WriteListingWindow("特征类型名:"+theFeatures[i].FeatureType+"\n");
7 b! ]5 C# R; J( x                if (theFeatures[i].FeatureType == "BREP")
& \6 `) b4 z8 n, T                {
- E' W: \6 _, _6 B8 G9 D                    NXOpen.Features.Brep theBrep=(NXOpen.Features.Brep)theFeatures[i];
1 b- Y& Y. `7 A+ K4 }0 E* D) P                    Face[] faces_of_brep = theBrep.GetFaces();
" O0 Z- o# Z5 ]: B- j, @                    theUfSession.Ui.WriteListingWindow("面的个数:" + faces_of_brep.Length + "\n");/ {7 t2 f1 T7 u8 \, T( T; M* f
                    for (int j = 0; j < faces_of_brep.Length; j++)
' o6 W: n, _$ j/ `5 _5 @8 ]" z4 o) n. x0 ~                    {. G- H. s! ]! j3 \+ P
                        string facetype = faces_of_brep[j].SolidFaceType.ToString();
: [0 B. A& K: A                        theUfSession.Ui.WriteListingWindow("面的类型:" + facetype +"\n");
, N4 F0 Z" A3 A* R5 `6 c' K2 e                        if (facetype == "Cylindrical")2 m+ J! C; e0 T. ^* ?5 y
                        {( N" P, T! M4 ^0 K+ o
                            int type;
1 G/ P# }- f2 F4 p                            double[] center=new double[3];3 n5 Q( l4 C9 A- L
                            double[] dir=new double[3];7 V4 @( N+ e, V
                            double[] box=new double[3];
' d! \, f' s1 \2 ~! e                            double radius;7 R* l. Z0 e5 s4 `' M
                            double rad_data;- k2 p0 q, D- T8 ?6 v4 h
                            int norm_dir;
: b; Y# B' i  z; B# _2 S* W                            theUfSession.Modl.AskFaceData(faces_of_brep[j].Tag, out type, center, dir, box, out radius, out rad_data, out norm_dir);8 {8 l5 D5 i2 T* X4 K2 B8 l
                            theUfSession.Ui.WriteListingWindow("center: (" + center[0] + "," + center[1] + "," + center[2] + ")\n" + "radius = " + radius + "\n" + "direction: (" + dir[0] + "," + dir[1] + "," + dir[2] + ")\n");
+ K8 a* @5 X& g9 R                          //DeleteFace(theWorkPart,faces_of_brep[j]);
% \( V7 U9 I5 v  z. g1 l4 {                            double NewDiamter = radius * 2-2;
2 N% d) }5 Z% j0 e7 w! ~+ p& D                            ResizeFace(theWorkPart, faces_of_brep[j], NewDiamter);, h$ c3 D! T# T3 A
                          //theWorkPart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);
5 c+ V1 i) T6 j# g# {4 I                        }
/ R- Y  }1 }; O                    }$ U, e' x, J) o* e7 Q0 g; m
                }
; B  S8 o( Z; y5 W3 {1 N- c$ b+ \                if (theFeatures[i].FeatureType == "CYLINDER")
1 c& I* Z  f2 V                {* Y4 p2 y6 ^7 G! V, B4 r
                    NXOpen.Features.CylinderBuilder theCyliderBuilder = theWorkPart.Features.CreateCylinderBuilder(theFeatures[i]);
* U% R! m8 u: |. V3 Y% j; H: a                    Vector3d dir = new Vector3d(1, 1, 1);. {: G& k5 }, O7 f
                    theCyliderBuilder.Direction = dir;; t5 }, G% A2 y* \
                    string str = theCyliderBuilder.GetFeature().FeatureType;
8 U( [. E8 l7 s2 A                    //theUfSession.Ui.WriteListingWindow(str + "\n");6 b( V3 Q8 K4 g! w. k  ?+ F9 `8 F
                    theCyliderBuilder.Commit();
% P: F+ b1 B+ v% P/ Q                    Point3d point1 = theFeatures[i].Location;# F% T" k. ?& E0 j1 G2 H
                    theUfSession.Ui.WriteListingWindow("(" + point1.X + "," + point1.Y + "," + point1.Z + ")\n");! m* C% U7 K$ |
                    theCyliderBuilder.Destroy();
! J1 o1 K3 l% W4 b! y                }' S% @8 a* i. J1 v- h
            }
! L' j' W6 z) i( g) `; c        }
, ^, P0 T; x) C% |4 H! W7 D' a+ K. {: ^3 `
        public static void ResizeFace(Part workPart, Face face,double NewDiamter)
& o1 f# Z$ A# q) \7 h$ Y2 k2 B! k        {
7 z( h4 U. X3 G- R9 @            try
7 `6 M1 F/ b7 L- m- \            {
  ~+ F) Y4 ]. p" }: s                NXOpen.Features.AdmResizeFace nullAdmResizeFace = null;1 B; A1 C0 A( O
                NXOpen.Features.AdmResizeFaceBuilder theAdmResizeFaceBuilder;
9 A5 k0 C, q3 g% H& I9 w                theAdmResizeFaceBuilder = workPart.Features.CreateAdmResizeFaceBuilder(nullAdmResizeFace);' @$ `! E" E# I! y9 }2 D

: E* |0 J# X; @' }' P                Face[] faces = new Face[1];
  O6 i: T5 X: p: r( {* R+ {: O) R! r, e                faces[0] = face;
5 t/ S  z( j. w1 [* M                FaceDumbRule faceDumbRule1;
- ]% p8 }, c) \+ j. D" f. O8 x                faceDumbRule1 = workPart.ScRuleFactory.CreateRuleFaceDumb(faces);
$ ]0 f/ Y, j6 h3 e$ D                SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
% G* |) @! U5 W& M/ R9 l8 W                rules1[0] = faceDumbRule1;
; }4 Y, Z: {! I# G" ^* H                theAdmResizeFaceBuilder.FaceToResize.FaceCollector.ReplaceRules(rules1, false);
" [( L6 R$ J, [: m6 T4 B1 }, r4 y8 i7 u! k8 R8 E! u
                theAdmResizeFaceBuilder.Diameter.RightHandSide = NewDiamter.ToString();6 r& o' N' W1 C
                theAdmResizeFaceBuilder.Commit();
- U, l: X( o0 u! f                Expression expression1 = theAdmResizeFaceBuilder.Diameter;
; |6 w+ Q* F, ^: R/ L4 q$ F, H                faceDumbRule1.Dispose();
; d+ n! R$ `7 K0 l; m2 D& _. Z) h                theAdmResizeFaceBuilder.Destroy();" e" f  `8 j/ z- E
            }' o' f- I$ w. P/ z5 t3 l1 v8 |  \& R
            catch (Exception ex)+ \  F1 U$ g  y( j, `2 ]/ f% s0 X
            {
) V# g* M' [4 ^+ O2 L4 E9 |7 r                theUfSession.Ui.WriteListingWindow(ex.Message+"\n");% ]/ c1 E3 T+ m! V
            }
9 [1 w) n/ m( h4 c% Z2 D        }
" G( _& C0 X2 o* h* X. a) A% l, N* J3 h. X% s- d
        public static int GetUnloadOption(string dummy)  S4 b7 H4 E5 Z4 {) v# |
        {
. i/ w! q5 t4 f+ ]( n: Z            theUfSession.Ui.WriteListingWindow("GetUnload函数\n");
: e3 p9 B0 d; J' G/ s            return UFConstants.UF_UNLOAD_IMMEDIATELY;
6 |5 j( S. j% W; J3 x4 m( w; w        }
& a/ r& L3 }; {7 F/ N7 p! f    }
# _( k# Y, r; v4 d% n}, S' V3 e$ F4 M, i
上海点团信息科技有限公司,承接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:251 h0 o. |5 Y. J* {
如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

0 u+ J: w( {2 b2 I5 i3 q3 Q6 Z: p估计那个地方要释放内存
$ {5 C  m+ r0 v. B0 f8 K8 k* }  o6 L4 ?/ ^0 g% T1 G# V
这个需要调试的
4 e( K. t! m* g$ S, ~
- @& ?) p3 |  w7 q/ y. GJava 我不怎么用 , 你自己把代码 一段段的调试看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 6#

2013-12-18 19:28:38

坚守 发表于 2013-12-18 19:25
- x0 J% n: B; ^如果我模型中有一个孔,我调用该dll文件两到三次以后就会出现异常。或者模型中有好几个孔,可能前几个能处 ...

0 J8 [! C4 N: D另外你干嘛要用同步建模的功能
3 Q( C+ t3 W: k2 ~3 K! J
& {) A$ h" d( r9 `, I4 T5 O直接使用 偏置面 不是更好
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 7#

2013-12-18 20:07:44

mildcat 发表于 2013-12-18 19:28/ H1 f: x- \& y+ h4 }8 n' S
另外你干嘛要用同步建模的功能! ]* }. P! m! r( e) E% S% P

* d7 y, }3 o+ d8 `4 a直接使用 偏置面 不是更好
% Y5 c7 ]) g* ?/ m
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
上海点团信息科技有限公司,承接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
6 e; D: _. p% f- J, B偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。

$ g. l5 r) `! s" t; y具体这个 我还真没怎么研究过  7 a! _; D4 ?- `) ?0 B$ q
6 L  z( u" Z; D3 \
不过我建议你换 成偏置面 ,然后 试试 看到底是那里有问题& `1 B  c( a- \" G3 C

, T, S4 E4 I$ J. ^" E) Q" i1 X偏置面功能很简单,在 插入 --修剪与偏置 -- 偏置面
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

mildcat 9#

2013-12-18 20:12:11

坚守 发表于 2013-12-18 20:075 n, j; d, e0 |0 q- q
偏置面我没接触过,我还要用同步建模来实现孔的移动、删除等操作。
( E6 c5 X; c+ p% k$ m
你主要要实现什么功能, 需求告诉我  我写下看看
该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

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

坚守 10#

2013-12-20 09:27:11

mildcat 发表于 2013-12-18 20:12; y% p7 M) g' K( k( m' Y) A
你主要要实现什么功能, 需求告诉我  我写下看看
# a/ ^- u7 N, k* X, X4 i+ [, U, ~
我想实现对模型中的圆柱面的半径进行放大缩小,模型是被移除参数的。谢谢!
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了