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-国产软件践行者

[求助] UG录的日志文件有界平面怎么返回Body

[复制链接]

2017-9-15 10:49:42 5239 1

smalfly11 发表于 2014-2-12 23:34:54 |阅读模式

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
' q- f8 M( K5 `4 vusing NXOpen;
/ h" |" M. |* d  j" tusing System.Collections;
0 Z( t* R/ Q$ y. V9 _using System.Management;
# U! J4 s0 }. Y3 Eusing System.Management.Instrumentation;$ n8 q) T( D  h/ M% k- P7 H4 `
using System.Text.RegularExpressions;
: O# N- w1 E4 v4 Wusing System.IO;
4 Q3 k0 b/ S0 r/ z8 y/ K% _/ x. Zusing System.Collections.Generic;
. J! n1 j: m. n$ O5 Fusing System.ComponentModel;; D+ x! d0 c% ?  ~& F6 q5 N- {
using System.Data;' a; z$ n+ w% n; f
using System.Drawing;
5 W4 c; {+ m# O" Iusing System.Linq;
( _4 |2 z" J7 n& Q& jusing System.Text;
- i+ \3 N& R; |* O- O/ _using System.Windows.Forms;: p6 t9 U4 q# H& `
public class NXJournal555# U% h& x, l- y$ h8 P% D
{# i' z2 V; z" O  N- l" n. w
    public static void Main555(Tag[] bj, int fhsl)
- P$ m: V/ P3 Y% }1 |8 D    {/ |( M: r, T0 I) d5 S! R  C
        6 t1 z8 k3 _4 z: K' O9 w
    Session theSession = Session.GetSession();
( z) y- I' C+ K7 N: r$ f9 A    Part workPart = theSession.Parts.Work;
' X* P  X2 F0 W2 q3 j, {    Part displayPart = theSession.Parts.Display;
  `4 w+ @7 a; O/ B, k    // ----------------------------------------------/ l* w8 N0 L& U" \. m9 _
    //   菜单:镶块->曲面->Bounded Plane...
( f3 e8 E0 P! O1 q7 _7 L. j; u    // ----------------------------------------------& m* d2 r, q, @1 R9 a# H1 F
    NXOpen.Session.UndoMarkId markId1;6 [4 o/ p) h& X0 w. n& m- M; W
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");: @: J: F0 |* W) l$ ^
    4 i. ^; u% o$ s% e4 D2 }
    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
8 f; M9 t9 v4 g+ {! R. a6 w   
, V) j% l. S6 U, ?) Y; p2 s7 ]" v    if ( !workPart.Preferences.Modeling.GetHistoryMode() ): B+ x- e  y- L; }
    {
% Y  S% a5 K( s& }# p- k& k" z: Z0 L        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
5 C* G- a( v2 d3 h: w' V: y' f: ?9 u$ }    }
  k9 A! t! C# m& ]/ T& w   
4 F  N7 B+ y) D: q5 P4 E, U; i    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
9 A) t/ s1 u! z! P1 @    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
7 x! L) [! E) q$ W    0 c' U7 i% v6 v+ L  W+ G- D
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
% }$ x3 M$ b* F. [0 X2 d    0 T0 s6 K3 _' h1 V8 R5 M; l( O8 ^
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);4 W! R1 ^* B8 W9 ^! i- {( Z
   
; w! J/ L2 R# Y7 u: B8 v8 k    NXOpen.Session.UndoMarkId markId2;
! Z- J' L$ t" ~9 a    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
. x  `5 I  X* [( R3 o! c7 ^% e    $ z7 p9 b7 l! J
    NXOpen.Session.UndoMarkId markId3;9 Z8 s7 s. U: A) B3 q
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);  N$ C! @5 _  J- C# B: @- ?5 M
   
% j5 w1 t  a# [" B5 M% P0 X$ |* l    Curve[] curves1 = new Curve[fhsl];3 Y1 P$ I4 L% t. I. l! l
    Line zx = null; ;- n+ d% S( b7 B
    Arc yh = null;5 r& T9 s" |' X7 `' {! Z" E* v
    int bj001 = 0;) N' r/ |: F6 p5 D4 Q, ?2 A
    for (int i = 0; i < fhsl;i++ )7 k/ r6 E) U0 C% \: M
    {  M6 @& D0 k, G+ y
        try
' Q. W  l1 h- G5 q        {6 X1 i7 h. q, c: [' H- r
            Arc body2 = null;
$ c  V, z  p8 a# q. a            NXObject object0;5 O% g+ Z$ C0 j/ U% Q
            // Tag body_id = NXOpen.Tag.Null;( n' u& D2 \! Y) D$ {1 v
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.% Q( L0 C& G+ }
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。! \- l* F& b/ Z7 C
            body2 = (Arc)object0;
8 O2 a5 [; f2 M2 B( W3 G/ p: E            curves1[i] = body2;
9 z% J* d% j; W) J" {' A            if (i==0)8 b9 T9 W( }5 E  X
            {
* m" g6 }- p8 V( p( B+ b' g8 F                yh = body2;
( H: Z: {3 @! R0 |                bj001 = 1;
# H, U+ U' t# }* n) |4 U            }/ o- f0 Y, v( M4 Q9 [
1 o% `* j+ D3 h& }8 G9 d* f1 f
        }
8 A1 }7 |8 L2 v) f  |        caTCh (System.Exception ex)& n# g6 p5 G7 D* A- o: L
        {        # r2 {2 j0 q$ b$ E/ o1 M+ J
        }
) P# u- `/ f- T' r5 O        try
* W- c, I' \9 c- ]6 n/ C        {
  ^  C, b0 j1 U" x" O4 {            Line body2 = null;
3 q$ @4 ?& d  v            NXObject object0;1 Q+ G1 |& \1 k; [5 [
            // Tag body_id = NXOpen.Tag.Null;/ ~; ^* X# S* \8 q0 h
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
1 p! T. q2 L) M/ A$ N( T' C            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。* D4 l2 V7 g3 S& _: A( m
            body2 = (Line)object0;& Q# O+ D+ q3 u( s9 K: i( P
            curves1[i] = body2;
$ T( T0 p/ j+ A  P  u            if (i==0)
( }9 ^& u9 V" F% A% e+ C2 m% r            {
# k* o) l# q4 p' W3 ~2 I* G/ t                zx = body2;
* G# m+ H7 h! q                bj001 = 2;0 J9 b, j. M) F4 S4 y
            }
, f/ m" S# L& f  J4 q# x        }
% u. h# x; ^( K1 u" A        catch (System.Exception ex)
* K2 X/ B7 x, J; G4 h  ^        {1 B+ x0 u0 W" G- t6 W9 L
         + G2 f) L" [4 ]
        }* a' g* v9 \3 W, {" N% M& s# r
) c) W+ p6 V2 [' i2 I
    }
! R5 \4 R; T, B$ \) G( g
5 p' H7 u* K0 R' y* [//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");6 q2 o' A) X# r$ X; c' U+ b, n
//     curves1[0] = line1;$ z7 L+ p/ k" w2 |0 q! H4 s' m3 q" w
//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");/ P$ ?- R+ Z" ]' y1 `! c- Q
//     curves1[1] = arc1;
6 s/ q6 t. {/ Z+ E+ P; l5 j//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
; C& h+ K% j( X6 h: j1 a4 j//     curves1[2] = arc2;
( K& [9 G! a) w  C//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");% F0 u& h& j$ q' B
//     curves1[3] = line2;
" |  H; H, N$ }" Z//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");! D% m2 e3 z4 x7 q6 h
//     curves1[4] = arc3;# M7 Z8 i# _7 y1 H5 K2 m
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
. f+ \4 m+ w, N//     curves1[5] = arc4;
* P# v  c- Y) Y$ l  c2 @    CurveDumbRule curveDumbRule1;  I0 X  ]. E1 b& A
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);. H' L1 k) g/ w
   
  ]4 S8 l5 ^: u5 O; p5 \    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
. E' g# o% W: F7 I    ) W4 u/ [, y0 n4 S9 e4 ]
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];9 |3 C0 A. Y/ d) o/ U( W2 [* X
    rules1[0] = curveDumbRule1;! q8 S6 X: j1 q) S% \
    NXObject nullNXObject = null;
& ?, b: _7 p. ~6 d    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);, V9 i& g4 h) }; G8 C* T% j" B! x
    if (bj001 == 1)+ V8 T6 P1 K1 @  }! [9 d$ [2 E: D5 }
    {0 h4 |& v% F9 F- V
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
7 E: w6 D8 N$ f# g; u    }" n# B/ {  ~) y3 H$ P- [
    if (bj001 == 2)8 s4 h" G$ R' ?+ u: g5 B! p, q; D
    {8 g' \% G' g/ a- `" M
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
% Y) k" [- q5 w  O3 M" g& q$ B    }9 l6 v( ?: i; b- y7 ^/ S
    9 a% i; }5 ?# W2 H, y
    theSession.DeleteUndoMark(markId3, null);5 E9 ^! F( K" `/ q+ m- C/ Z4 i$ Q
    % M2 P. D0 i6 `
    theSession.DeleteUndoMark(markId2, null);
4 q4 e" Q$ g( Z3 `    " e4 Y3 U& u' _1 ]: j
    NXOpen.Session.UndoMarkId markId4;
/ v* Z6 B1 J) |    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");8 q4 I& Q6 l$ M  E6 e) M- j2 l
    " ^7 Q6 l: _+ K: o' V& X2 U0 J
    NXObject nXObject1;
  h8 n& f; G0 \. f2 o2 p8 h( p. e    nXObject1 = boundedPlaneBuilder1.Commit();
5 e( @" H4 |/ b0 O, P# N" }    3 W1 [4 [; |! N, r1 t# a
    $ \/ W9 j, @' j# ^) }
    DisplayModification displayModification1;8 _6 e& B5 \6 T, @. O& Y2 e
    displayModification1 = theSession.DisplayManager.NewDisplayModification();5 {! T' B; u+ _+ d+ ~2 C/ T
   
( r* ?- _& f  w    displayModification1.ApplyToAllFaces = false;
8 v4 Z3 a1 n8 v& e8 t7 j0 r0 l      b% V4 i0 G/ X" ^- M* _8 c# l, m
    displayModification1.SetNewGrid(0, 0);# R& M( t* ^4 P2 e$ T
   
( i; b/ h% ?5 z    displayModification1.PoleDisplayState = false;1 o3 \$ ?. i4 S
   
$ g! B3 U; N# x3 g# S% G% m    displayModification1.KnotDisplayState = false;% ?8 C! _$ q* e3 t8 \0 L
    ' f- D5 g0 S) s! r
    DisplayableObject[] objects1 = new DisplayableObject[1];
! F8 b' m7 t, g* \    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;# ~+ [7 k* h4 E: m( T1 F8 d8 T
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");! H9 k4 f- `4 S7 D7 z. D& z
   
9 Q% T- f7 r9 w$ P7 l! k! H3 V        objects1[0] = face1;/ E8 K" ?9 A% c9 C$ X
    displayModification1.Apply(objects1);
1 j8 K* N. @5 ^& d" g3 T# U: U    face1.Color = 32767;* P* l- h) X" r
   
" A9 b& _% k& K! A8 s    theSession.DeleteUndoMark(markId4, null);5 v  S6 A# ?0 y. B; Q& Z: \
    * t  q4 h" P) l. C7 m4 h
    theSession.SetUndoMarkName(markId1, "Bounded Plane");
5 ~- C1 e1 o% O& _9 L6 Z8 @, s    ' k# L; p5 `6 c) E4 ?1 v
    boundedPlaneBuilder1.Destroy();, t7 \+ }! h' I& |
   
3 E/ D8 t  i9 l! i       /* if(fhyi==1){
( j. o* d- _# x9 ~* E0 \9 {    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
# H. F- T5 Q* I5 l    if(fhyi==2){8 k8 X5 `9 x2 N6 C5 }* e
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}( O/ L. S; r6 n: W7 f% N7 N
        */
  W9 Q3 V  t# X8 j+ q8 h" {  Y  P    // ----------------------------------------------5 `0 a4 b! J  z/ Z
    //   菜单:刀具->操作记录->Stop Recording& M8 R+ k7 `" V  P( ^: \
    // ----------------------------------------------: D, X6 G* Q- R3 k$ Y6 e# h1 B' F
    / I9 {7 Q( Y0 [4 h( t+ ]. V. |
  }
0 @* c; ]" x$ Q0 s  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
! m7 a  k, y& ^, y' r}
4 j8 F3 @* ~/ w6 |这是录制有界平面点选封闭曲线产生的日志/ ]- Q/ `7 G6 d. W$ r
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
& }* W) l" A! F" h' i+ _! B9 V- z NXObject nXObject1;: e- ~9 x" l9 ^3 Z
    nXObject1 = boundedPlaneBuilder1.Commit();
+ Q2 D3 x0 ]; o8 X! ?; W: ~但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
5 E" Z: a8 ^9 H( R+ D
" e" s' g- t+ N2 p( v0 }! ~. [
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

全部回复1

nxopen 发表于 2017-9-15 10:49:42

nxopen 沙发

2017-9-15 10:49:42

我也遇到同样的问题:NXObject转Body出错
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了