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

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;- ~+ E; a1 ^0 ?  j1 c$ K
using NXOpen;' ?0 d# ^% l$ G& t. P0 y4 T
using System.Collections;
! [) C9 Y+ J6 V7 a$ Xusing System.Management;
  K" h7 F3 A$ w+ l7 t* e0 X8 \6 |using System.Management.Instrumentation;: X9 z. `3 @( l7 o" C
using System.Text.RegularExpressions;  q5 P. [& X: N* m
using System.IO;2 B8 Z; t# D4 N4 D
using System.Collections.Generic;5 c1 \8 p3 t" f9 {* g; m
using System.ComponentModel;3 M, j0 d. w2 r6 s$ D8 S( \% x
using System.Data;: ]0 a+ A; f6 ]" X( M4 f8 y; N8 ]* C
using System.Drawing;8 a4 H$ Z6 z1 h" w
using System.Linq;* ]4 h. h  Q( [4 A# G
using System.Text;
; k3 o& f9 q- w' Y6 B" Busing System.Windows.Forms;
0 X! C6 D' r" h" Wpublic class NXJournal555
3 _# g8 [; ~# E' |2 s3 {{* S) M* `& I) T! V. `
    public static void Main555(Tag[] bj, int fhsl)7 F/ k+ [6 n% A; L, _/ Q
    {
# D- q" e% m% `4 b: g        
- y$ V) K6 |$ }( Y$ L    Session theSession = Session.GetSession();, b& g- {# l1 a
    Part workPart = theSession.Parts.Work;
( U9 p% p8 u4 I& B) n; a. ?8 |    Part displayPart = theSession.Parts.Display;
6 Q0 `" k( v" V- v; o+ h( s: E& j- M    // ----------------------------------------------3 A9 F2 x% M2 ?2 q  I1 T
    //   菜单:镶块->曲面->Bounded Plane...8 I# J, o) q) X% E+ f
    // ----------------------------------------------
! H& Y# ?, o! S7 \% [& V    NXOpen.Session.UndoMarkId markId1;4 g& m, U  U, k2 K& ]7 p! A
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");9 K, g! J9 c8 l9 }- r
   
/ Q- p4 d8 g0 T' {    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
$ a; z% y) `) w# }( `0 P/ |7 ?1 U    & K0 x/ d( S4 l9 ~
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )% R1 ^( r+ o. I( b% x: F' k
    {
( {# \/ n. z5 ~" E, ?        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
+ ~( y6 b0 D$ [; N6 c: V7 a    }
. e. n/ ^$ [; l9 x6 p5 k* z" [# N( u   
3 q. {; s; z' t+ U' [/ d& U. W    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
* o5 k( M, x' i" n* w    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
' k% f, R# o% `+ Y4 O$ h; M* U   
! o. \3 [# ^0 c: d3 F    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");1 G: j/ G* [: A1 F5 k
    * \7 i0 R/ U+ s1 W1 }2 B9 q
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);1 J9 [, f: Y* f9 I  @) p% M4 ?
   
5 T$ U1 H) e+ p) k. M    NXOpen.Session.UndoMarkId markId2;- y0 z$ Y: Q* b0 ~
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
; h- d7 M, H7 E4 o7 ]7 x. i) A: o& D1 E   
, E2 A: n5 z* o    NXOpen.Session.UndoMarkId markId3;
: _7 m! G# V1 @1 _5 _5 G    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
0 a& h0 i( E6 v/ k8 F8 `& [9 d( p   
$ ?, ~8 ]$ i$ l    Curve[] curves1 = new Curve[fhsl];$ u9 i  d8 O$ G$ a
    Line zx = null; ;
9 z2 o0 C0 \; w    Arc yh = null;
. B+ [4 n3 r( E* y0 d0 C! k9 ?+ |3 [: W    int bj001 = 0;
* f+ Z3 a7 S4 `    for (int i = 0; i < fhsl;i++ )% _+ Z% R: C+ m, ]2 f
    {
2 |4 t" V" q4 \2 W# c        try
6 B+ R$ |  i' @: }: U        {
( h- v8 w4 P( x& D            Arc body2 = null;
  \. \$ T# e/ }) q8 [            NXObject object0;
' M" |6 _3 R& [! V1 V            // Tag body_id = NXOpen.Tag.Null;
5 I% _6 E$ ?/ {3 M4 S, l            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.' _, c( f9 r0 g4 P+ d
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。; h" J# i0 X9 ?
            body2 = (Arc)object0;
& c) W: D4 B4 a/ [; |            curves1[i] = body2;
5 d0 @- j/ S. p+ U8 p$ J) e            if (i==0)
: @2 ^' E( j+ O$ N3 P+ c) @            {
$ ~6 K3 I7 H4 a$ _                yh = body2;0 e6 q4 S6 N% Z3 m* R" P
                bj001 = 1;+ [8 B/ E. d4 ^$ l2 |2 d, p6 J  l% Z
            }6 o2 ^# s  R" T$ v6 U

5 T7 Z" ?. `6 u( Z8 \        }- h  X: c  R+ p5 h
        caTCh (System.Exception ex)
% f( W+ [4 h5 Y  w7 I9 V9 g0 z. V" K" e        {        1 {4 a& l. e( f2 L) J  d
        }
% K- ]0 t0 W' v. v        try
. p5 O' @8 e- U; G- n+ N        {
& H$ H2 @* v: D5 |! L9 r) V            Line body2 = null;
! Y) }9 ?+ K. g$ a. |" u, O            NXObject object0;- p$ \7 z+ q: W1 P  e
            // Tag body_id = NXOpen.Tag.Null;
( L8 H$ K5 u; b- p  ^6 G1 P2 W) H            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
/ _: \) i4 e! w; K- K9 u            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
5 l* G  M0 q3 R! x5 u1 K            body2 = (Line)object0;; d, V* @# _: \
            curves1[i] = body2;" ^$ g0 S% G2 g
            if (i==0)1 S$ `' u; J0 G3 ^
            {
( t/ d2 q; p1 ]9 t" H                zx = body2;
" |4 p$ n- b7 e# V0 R                bj001 = 2;
3 G9 D0 T6 d- I* U" E            }
/ \. Z+ {" f3 k6 \# S  F( k2 S        }) e& z5 m( F2 J; S$ j& t; p, y
        catch (System.Exception ex)
* T, m8 }) }. N        {
  l" {- y) @; z9 }- N3 y! ~. s         % J. V) h2 f; z  d8 f
        }
# u5 X3 _; _% n" _  S/ f4 X6 J4 n/ R" [; `5 w
    }
6 c  f4 J2 D2 h9 P  W9 G' c) |
9 \3 h: E- g0 C+ U//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");; U7 c# n) J, A+ h# T- s9 N/ A
//     curves1[0] = line1;
1 ^4 Z* t) {2 l, R! S: F6 g! v/ i//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
- a3 J) F- L4 U( b//     curves1[1] = arc1;+ d) b0 D7 S% Y9 S9 Y7 S& [
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
- w8 J+ D8 K7 N2 `- N- D  b//     curves1[2] = arc2;! ]* E; p2 K  o) k9 }- [/ g4 P
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
8 D" i, \7 J) H' [//     curves1[3] = line2;- ]. D0 K: X1 M+ O, g
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");9 H6 P+ @/ ~7 o( a: J
//     curves1[4] = arc3;- n; |& D3 I2 n$ D8 V
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");1 ?0 |) a* N3 q& W: A% o& A
//     curves1[5] = arc4;4 o0 m8 k# V+ \8 k- Z
    CurveDumbRule curveDumbRule1;$ W, @7 }) O2 Z
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
. ~, W! x! g9 i3 V' N: R    ; x  d. k2 s1 w
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
0 B! c% W) c! c' R# z- B   
9 C( k: [  r! C8 U3 @" F    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
1 [( W& N' m# c0 S) ]' `* S& [    rules1[0] = curveDumbRule1;
. d) u# H- }& r5 _/ {    NXObject nullNXObject = null;9 i5 e2 R0 Y/ u1 s: _9 U
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);  _1 ]5 g' z, g" H0 x
    if (bj001 == 1)0 M3 w3 |3 F( i1 ?" w
    {5 p+ b* ^8 M( h$ t( K
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
7 i* p( w* ^; w! w    }
8 c6 l& @7 A: a! [6 o    if (bj001 == 2)4 ?) o. x8 W) i9 o
    {
9 n, J: B$ ?! D        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);+ f! [) ^+ s5 Y7 S; a3 f' F
    }% Q1 B, o' y) B4 W3 x
    ! h- g9 ?# f) B: F: {2 I/ f
    theSession.DeleteUndoMark(markId3, null);
7 Y9 @) R+ [% L* ?7 r8 V( N    ' D* W! M  c  N& q8 {6 }) s
    theSession.DeleteUndoMark(markId2, null);6 L9 ^( I' J/ i5 M/ A& m
   
3 F& a9 R+ B* |- }    NXOpen.Session.UndoMarkId markId4;& M0 }# h0 ^: _0 O
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
/ t5 X. X- V+ f: b# s# u8 [  C   
6 X) f8 U" r, v. k- H/ w) M    NXObject nXObject1;0 c6 \8 h  H# v, [" N: M: `
    nXObject1 = boundedPlaneBuilder1.Commit();/ Q5 g7 q' p  w7 D
    ; d) V" R# @9 O  D  d, h  u
   
: |0 k8 j, Q+ a    DisplayModification displayModification1;7 |) y3 {$ t- s: `; {- Y
    displayModification1 = theSession.DisplayManager.NewDisplayModification();
) y; s: a$ N/ v% O/ U   
( W& o5 s9 A, p! h* M    displayModification1.ApplyToAllFaces = false;5 R. q% b0 G" p4 C; j
   
+ I! K+ [" m) A/ x3 J    displayModification1.SetNewGrid(0, 0);0 R! s8 P9 h0 q3 E0 V9 V
   
. [9 p: e3 f. d, f( j    displayModification1.PoleDisplayState = false;
$ Z1 }9 [6 Z8 j4 ]; {' k    * M: A& t' h% i; n
    displayModification1.KnotDisplayState = false;4 Z$ ?& g4 Z! ~- S
    ) v2 T( u# K! u' \) {( l
    DisplayableObject[] objects1 = new DisplayableObject[1];
. N! [+ o4 E- h8 g/ q    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;+ p. H: p6 o) @0 ~. A
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");* q6 |, b- d0 P; `
   
( V; K4 P: [  A+ I5 Y. Y        objects1[0] = face1;
& d. u/ Z. }  H5 K& a; Y4 g    displayModification1.Apply(objects1);' @+ J+ ^8 t- P! P& p0 z
    face1.Color = 32767;
) {6 [! \8 q& d/ w    - r9 f3 ^" v$ k- q5 C8 }1 A9 w+ A
    theSession.DeleteUndoMark(markId4, null);
: h/ |3 v7 m1 W4 a! _  a+ B3 R    4 F3 r+ [7 h" y. z, Q- Z0 r8 X
    theSession.SetUndoMarkName(markId1, "Bounded Plane");0 n/ ]3 W  W$ g" g
   
! d$ f  u7 t( l+ I6 X% _    boundedPlaneBuilder1.Destroy();
+ u4 r7 o% b2 V0 Q2 m: A; x! V5 n# k  S( V    ; j- U# ?* Y% V$ A% J
       /* if(fhyi==1){+ ^* D" ]) |0 \7 H# F
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
3 p/ U) h/ Y1 ^    if(fhyi==2){
7 n' q9 [8 d# O1 e4 I    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}/ G: d) m  K* M; ^' s
        */
2 w9 V& {9 G5 A- I% O$ i9 f9 f    // ----------------------------------------------7 T% z  Y7 V+ r; H+ _
    //   菜单:刀具->操作记录->Stop Recording
' q8 @6 s* I. ?7 y# x# x4 z2 u( L    // ----------------------------------------------. n+ p9 i- {; n5 `- r* o
   
0 b( N" a+ ^5 v% d4 q  }* i3 v* c" u+ v7 k, g6 f
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
4 I0 r  w3 h! o( f8 B' X}
3 C7 }7 W1 Q2 X) u: Z: x这是录制有界平面点选封闭曲线产生的日志2 p! b7 @+ J6 s* S
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 + V9 }9 ~5 @7 b9 R4 E
NXObject nXObject1;' k5 U) K$ F/ e' [& p+ t! O( k1 V
    nXObject1 = boundedPlaneBuilder1.Commit();& w9 t2 N2 T  l7 i8 a+ w
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值& }9 w+ d% Z, g, I

/ f8 V& z  c3 n7 s, Y1 v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了