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

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;, ]$ S0 h9 k8 f. y
using NXOpen;2 ~8 _4 i8 r& b4 }4 Z7 e
using System.Collections;
# |. H$ T* s/ k( v- m$ Z* busing System.Management;
" ?0 o7 e6 P! h" r5 i* yusing System.Management.Instrumentation;9 U% q( H* b# w6 x, L
using System.Text.RegularExpressions;2 K5 _. E0 x6 u1 d: E
using System.IO;- ~0 W- M9 ^- ]! K8 x- A& n
using System.Collections.Generic;% z! i( {  f2 V  r4 z9 @
using System.ComponentModel;
) o( i& s- n. |% q6 {) S0 _using System.Data;* y: }' U$ K) L: Y& K- o2 N
using System.Drawing;" g5 }3 P2 M! [$ J
using System.Linq;
2 j) F9 v; M  C; ]$ Uusing System.Text;$ t; g7 I: N$ ^% E
using System.Windows.Forms;
5 K& x6 L8 P9 e% M7 xpublic class NXJournal5552 }, I- U( P- f. j
{) f* U7 x* H6 t  ]5 Q& y
    public static void Main555(Tag[] bj, int fhsl)
4 E; C5 p& o; `    {4 B; p4 i  f4 M# k2 o. t. c
        7 {& s- x$ A2 J; S' K* E
    Session theSession = Session.GetSession();
# t/ I+ e2 x9 Q. h4 o* x7 Y2 K    Part workPart = theSession.Parts.Work;
# e4 \( n. x3 |' B4 G9 j    Part displayPart = theSession.Parts.Display;7 e9 m. W! [/ Q0 Q% L
    // ----------------------------------------------& V9 N& L% x! H* @7 a, O/ s& ]
    //   菜单:镶块->曲面->Bounded Plane...5 r9 k$ V2 N; F; B0 H$ a
    // ----------------------------------------------
/ j9 H  A8 j) S    NXOpen.Session.UndoMarkId markId1;! a4 ]5 Q& o' m% U
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");3 k: V/ L  z7 Y0 Z$ y2 e% b
    ; N8 A% q% G# P9 Y. K# d% R
    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
; P" S7 v# ?" w   
' I. H# N) y1 H    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
9 D/ u2 f) ?; Y  [+ C+ R    {, J* X# m8 w- |# _
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");2 `, u9 p0 i/ g" a0 u3 B
    }
, E& e5 w6 ~( K9 E- Q    & g9 {' e7 \6 W# V* Q8 O" g
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;, n4 K, X1 g& e# G" F9 l3 T
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
4 F3 C. @# U$ i1 ]: k# C7 O    & c# s; f2 f; m% i& [5 L* q7 I
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");& k, v( l$ a8 i" G
   
, U& j) j# W! q7 V. {: i- k    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);: o7 }; i0 }& Y' ?
    ) h; T. Q. w$ ]( O: \! Q8 B
    NXOpen.Session.UndoMarkId markId2;
" T, n) o# T: a5 s! F& X2 D    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
% S0 A1 _. q# r( m/ T    6 y* p* x+ K: N
    NXOpen.Session.UndoMarkId markId3;7 Q6 X: J9 m( O2 c3 F9 |' T7 t3 T
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);: p+ N! n9 c8 n0 R. p' K+ d  w8 m
    , d) u' `) b) i# z4 J8 J( e0 |8 h
    Curve[] curves1 = new Curve[fhsl];! ^" Y' D2 h* {, Q4 E
    Line zx = null; ;2 P9 M) B' S& Y; u& l
    Arc yh = null;5 z' h. ^4 C, S' e
    int bj001 = 0;: S+ @+ j$ u  ~+ c: x9 O
    for (int i = 0; i < fhsl;i++ )' I; ^/ g* ~, e: r, P
    {
1 t4 }1 z6 E! x- G' B( F' ]        try
: h/ U* \. G& ]7 ?! }        {0 p( ?9 r+ x9 @! D' v/ L2 Q
            Arc body2 = null;
/ Z7 A+ _$ v3 D! c            NXObject object0;6 s0 C. o6 c% V' e: W9 j
            // Tag body_id = NXOpen.Tag.Null;* k4 {: U; a3 v; X
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag./ g4 I# o# S5 p9 w4 b
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。( Q# |( S& W# P6 W
            body2 = (Arc)object0;$ `. ^0 N$ S% G! j
            curves1[i] = body2;& D; s3 q; X  y; U
            if (i==0). n5 ?& v  R7 g7 Y- E
            {3 u4 ^# f( J. h, [6 @4 V8 d% i8 q
                yh = body2;
7 R0 X1 o% I8 A8 @5 i' M                bj001 = 1;& Y+ y# N. O8 i" b$ s& A
            }  Q2 T* r6 a# l7 r$ X

+ v( \" O! m( R8 A        }; o8 |- k  R9 }8 N; f
        caTCh (System.Exception ex)
( H2 S. O& d1 F4 {1 U) _6 [        {        
5 r, i4 J, B; a! s$ u        }! q3 d; q+ P/ M+ n  ~% {
        try
6 f, h. a6 p! D# _        {
$ f7 r: ?8 ]+ u& H4 e( \            Line body2 = null;
4 P# ^( ^5 x& N) J0 n% `- x% j            NXObject object0;6 a% d, }$ R+ T; }% N1 y) Y6 o3 q! Q% |
            // Tag body_id = NXOpen.Tag.Null;* q1 i( B& f( a) f; _
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
. q+ ^- J0 X6 ?! Y            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。, e/ H4 L% j" b* @: c9 u8 P; ~
            body2 = (Line)object0;
8 B4 o" k4 _# n" K2 V0 j: U            curves1[i] = body2;( `2 ]  X, L  n) o
            if (i==0)3 }8 k$ X1 _# @+ U
            {# v$ F, n5 B; b7 I, I" f7 B
                zx = body2;8 }; n3 {; E0 {: t, W/ Z  a
                bj001 = 2;6 j0 i& v5 c* l2 L
            }
; p8 {) |. w9 d        }
$ a) r+ @% R$ [        catch (System.Exception ex)( i  H9 f" B3 P1 H, h
        {
" l4 e- H( h- s. z         # M0 I8 @/ N  W; k8 n. ?; q
        }
8 w! H, Q3 W9 x1 H3 w/ k- n' Q2 k8 u
    }$ G2 c8 Q. v; O2 u/ g: y( z. M

8 x  F+ _; r9 c2 o//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");9 |- k7 I8 c' w% l& y8 [
//     curves1[0] = line1;
; F( l5 Q6 N! t0 c7 [//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
( \; J! C# H) j//     curves1[1] = arc1;, f$ [4 U1 v  E) A
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");, v( A6 O( s/ v4 ~" D
//     curves1[2] = arc2;
, Q- }; i2 x5 L" \. l9 B+ K//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
' d1 u( r, L0 d, a- ^//     curves1[3] = line2;
" u* i& o7 j4 L0 ~/ p. W//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
) y) K% a2 N* S9 ^, T/ b4 b$ b$ k//     curves1[4] = arc3;+ s( Q$ I/ F0 o" h4 P& ]
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");3 R' D4 h+ h/ c5 H8 N/ S& A
//     curves1[5] = arc4;
) v0 h! }( f  v: ^. T8 Z    CurveDumbRule curveDumbRule1;) t* I" G% E7 h5 k
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
% V! z5 R2 S9 r9 H1 w3 O    8 ^0 T: K4 P" |$ L) ~& t- X1 p# v
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
) g6 ~5 W, [9 @8 Z! }    * W- F* D2 x2 }$ i% x; o; S2 t
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
6 J- x+ ~0 d0 \' t; N, n  f8 }    rules1[0] = curveDumbRule1;' a8 _  `$ h! ^+ n" b) ?
    NXObject nullNXObject = null;
5 x  v: J. w) A6 k, _. O# O2 P. k8 N    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);! o- S$ s8 ~. c& w/ k6 F# [
    if (bj001 == 1)
( R2 e" q8 Y% o- E: o& f    {$ B8 U! L2 M9 R- M6 Y9 _9 G
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
5 C9 S( b) Z' }  g' J1 ]4 k    }; K" e# I! _/ ?7 G& r2 s  N9 B
    if (bj001 == 2)2 S6 d0 C  o& H/ p! j
    {
; Z* t1 j/ n: r) I5 _- Y        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
0 f1 C) N; P1 [$ p    }7 c# W8 h' F1 m; S9 R9 U) ?/ U
    8 I4 W. [& x7 T1 _( c* z
    theSession.DeleteUndoMark(markId3, null);( R5 i8 M6 }0 b# K# V1 y4 N, ]
    6 W% o8 t+ p% _- }  q/ i
    theSession.DeleteUndoMark(markId2, null);1 x" n- }5 E" Y% Q& N9 q6 L5 n
    / z2 I& q/ M, I/ D9 X
    NXOpen.Session.UndoMarkId markId4;/ U4 r# w% U" f* Q2 n& Z! Q  S
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");3 s/ f1 W  P) c% l, J' u+ B7 X
    - J' ?9 B( S8 `4 @7 @
    NXObject nXObject1;& w( Y$ m3 u' u) `3 T) Q( h
    nXObject1 = boundedPlaneBuilder1.Commit();
3 }4 T! n# V# e4 o    * Z5 f- c5 T' w/ E" [/ @: |
   
' ?8 {/ l" {) u0 u9 Z0 e" w    DisplayModification displayModification1;& ^1 \$ ^: M& S/ u) C8 r  C
    displayModification1 = theSession.DisplayManager.NewDisplayModification();
2 c7 W% {; k& Z/ m& q    ; k% M# b/ @; r. e, R7 T
    displayModification1.ApplyToAllFaces = false;
/ g8 j9 _. k1 _6 N' O    , K6 p7 |& @6 N3 y( c/ |
    displayModification1.SetNewGrid(0, 0);) w# f- _+ T5 e( c8 ]7 ]! w
    8 q: e+ ^  {/ h4 I- x2 Q7 d
    displayModification1.PoleDisplayState = false;
1 u5 k0 h" O- _6 V' b7 d" l. u0 s% k    9 E0 T$ T  x- G. K/ u/ h0 x
    displayModification1.KnotDisplayState = false;
; ]( `# V0 l" `9 Q$ R' X    , y' j; j) U$ l
    DisplayableObject[] objects1 = new DisplayableObject[1];( q; a5 T3 O3 z$ N% p6 l
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;5 W5 w- I7 V* A* a* |1 I
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
' n) m$ l% G. U! Y0 b! Z" K   
/ D4 x" {3 @+ S2 M4 ^        objects1[0] = face1;: U0 ?- g, z; X: |1 W3 G
    displayModification1.Apply(objects1);2 U, Q" q* I" C  n
    face1.Color = 32767;# d( |! Z; _6 p7 \3 h7 b
   
* F( }: V! _" P  F' D2 J    theSession.DeleteUndoMark(markId4, null);
$ M1 _! ~: @$ m7 J: O: s   
+ T& a' Z# e) Q2 d& u- A    theSession.SetUndoMarkName(markId1, "Bounded Plane");
& y# Y6 h8 B# C! M' ~. A   
! H* D9 w  d' n! C" n- \: Z    boundedPlaneBuilder1.Destroy();+ l' H) W: [. g) @. \+ ~* o
   
+ I4 G4 N& S6 m3 _       /* if(fhyi==1){& A* v7 R2 P' _/ P
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
, l0 F( X, v% U9 B    if(fhyi==2){
6 r1 }* [+ h4 f: N; `- o8 h8 n    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
$ c: W  y4 Q; i" h        */
" t1 g  d% j& K- v8 ]# c) A* V7 S    // ----------------------------------------------: f) p7 ~8 S$ A* d/ d
    //   菜单:刀具->操作记录->Stop Recording
: C. l" g2 ]1 D; I+ v( E  p8 w4 G    // ----------------------------------------------1 n, |+ y9 H; T3 z, {+ |) M
    8 N) u( W  z* h4 Q  b5 A) ]
  }5 A1 L3 u/ G/ n' U! ?
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }- Y" Z% X% Z9 p1 w
}! ~6 Z# @3 N  m7 R
这是录制有界平面点选封闭曲线产生的日志
, D& n% E- O4 W% U  W& K我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
; y. B7 ~# k( n0 o5 @; k* s NXObject nXObject1;6 j3 o- v% d. \# F! T9 b( i
    nXObject1 = boundedPlaneBuilder1.Commit();) Z) y& h, e# m! x9 N' e3 ~
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
$ y& ?3 b0 t* r$ M( f+ B. D' b! H5 v& u3 g4 i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了