PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
: q" c( E' B& Lusing NXOpen;
2 S% H0 M  T  X! ?using System.Collections;6 R0 s8 z5 K5 M, o
using System.Management;
# |& y& B4 q3 {using System.Management.Instrumentation;
5 }: V' S2 X( Z: |1 H+ i$ N3 Susing System.Text.RegularExpressions;6 ]# b0 `* A6 }! J
using System.IO;# [8 E" d/ ~+ S/ `3 r
using System.Collections.Generic;2 Y7 j, Q& S0 u" i* k6 ^% }* `
using System.ComponentModel;
3 _1 u" e. P2 Z  rusing System.Data;
8 K2 }/ N2 u- O% Qusing System.Drawing;4 N+ z* `$ e9 L, b3 d0 O" N
using System.Linq;
2 M/ L* B0 v9 z% Ausing System.Text;
& t9 Q& t' M1 zusing System.Windows.Forms;
* E# l, t1 c, cpublic class NXJournal555
  |# B' G2 @8 y{
8 \3 c8 `3 U. ]5 Q    public static void Main555(Tag[] bj, int fhsl)! S+ K% \* Q  L# @1 }, j' ?
    {/ i8 j8 T- F* M& ^% |/ O/ g0 z
        
. y& |8 @" c5 F    Session theSession = Session.GetSession();" z! O0 g/ [3 z) |% Y' t" W
    Part workPart = theSession.Parts.Work;
7 M# X- E* n) B3 D& F9 V0 z    Part displayPart = theSession.Parts.Display;
* o7 x9 e& |, e6 s8 f    // ----------------------------------------------7 y; L: U7 x& E
    //   菜单:镶块->曲面->Bounded Plane...5 t' F; ?0 D" |* }& P0 }7 P
    // ----------------------------------------------
7 r  S9 ~* @/ I( S3 A5 M    NXOpen.Session.UndoMarkId markId1;
, Q8 y+ S, G& S& t( R) p& y    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
2 B' p" ~4 }) ~+ U6 |3 b: J8 Z  ?6 }    & V5 O& l3 a/ v
    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;  W+ k8 o- e3 V- y! E+ N2 @0 B
    $ q6 h7 e' z. t) O
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
' T6 O2 i0 ~: j# S/ ^    {0 z8 R2 _) K( s) |: l8 v
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
7 p! F6 I; L* }5 x1 o    }+ s8 t% }+ y2 ?1 v0 J  b( l: U
    3 S" A- L' U8 d& o4 r5 _
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
; O3 j5 l5 H2 U+ P5 H    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
" k5 I& c- O* y1 k; B6 u" h   
3 I3 _  C; i5 Y3 [    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");' G! Y% i: u' a) r. f0 ~
   
7 M/ E  p; s( u1 f9 L' {    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);( Z5 y# m( m" {% U! G
   
- y( W: j* p- R1 ]6 C0 d& K    NXOpen.Session.UndoMarkId markId2;% q2 V% N8 z! E8 }3 t7 ~3 k
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");/ m* z: T* g, m6 B  c' V
   
  o9 n! K( ]/ H$ h6 b% h( h    NXOpen.Session.UndoMarkId markId3;9 t6 ?; n' n) H1 ^0 B2 i
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);( a4 Z" Q& b- j4 N1 i; q
   
1 B. O: p1 y9 s, q7 d( I' Y7 b    Curve[] curves1 = new Curve[fhsl];3 E& h, ]% _( X3 o
    Line zx = null; ;8 ]  C! l* }0 \
    Arc yh = null;
0 H" f; \# b, y  z* }    int bj001 = 0;
: c- Y" I; V1 v) h9 i; \" a    for (int i = 0; i < fhsl;i++ )/ e" A0 u7 T5 }4 t; `8 X% i2 r2 W
    {
/ N4 h$ p) Z8 [        try% T& A2 `8 ]' `( U( o
        {; I7 C1 G6 O+ E6 G/ p; Q7 U
            Arc body2 = null;6 T2 r9 q0 w; D0 U6 f# V; G3 `
            NXObject object0;- s/ f. [1 B! \5 X
            // Tag body_id = NXOpen.Tag.Null;' T# I- }/ I+ Q* [
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.( U! u5 c/ e: j6 D2 O
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
  a. |# q# B1 n            body2 = (Arc)object0;
6 E1 x) O8 H- I$ t# h            curves1[i] = body2;5 e9 \$ H0 T+ K/ A, J0 {9 r
            if (i==0)
! }6 J6 Q) Y3 k8 F9 ?3 U            {7 j! U- T2 i* h- ~8 P
                yh = body2;' ?) \+ `% X: j" T$ G
                bj001 = 1;
; R) B5 i, r# i            }
2 }  p' D) F% ?: @
* r: F3 G% B+ {& t9 A        }
7 l, a8 H3 p: z& [$ J9 T        caTCh (System.Exception ex)
; Y' h$ f7 d7 [5 H  ^        {        5 L$ U! g% s2 {9 ]- {
        }
3 |" C3 c/ w6 t1 v2 H        try
) `+ Z) W) M) ~7 X& f" |        {$ p1 o4 v& `" ~. y
            Line body2 = null;$ T3 x+ {  ^! \& h% E* n
            NXObject object0;+ F# H6 E7 F; g
            // Tag body_id = NXOpen.Tag.Null;0 g" d$ \0 I/ @3 H' A5 K0 p) G, N/ w
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
5 _2 H$ [% o9 w/ f            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。5 z+ y9 M: r7 e6 z7 e
            body2 = (Line)object0;
, \# v7 X3 a/ r- G; M) [* ^3 B            curves1[i] = body2;
! K& q) S! K% ~            if (i==0)
; y2 t+ E3 y/ p. _( x7 n            {0 S& |5 l( \7 |9 y0 A, v
                zx = body2;
* C: C2 A# s" `+ O9 ]* P8 U2 {' i                bj001 = 2;/ g5 M/ ?  P# t% {
            }' `% H/ D" _/ D2 w, r; C
        }( E, O  I6 @: i  m) u: C
        catch (System.Exception ex); k, g1 k+ D  M9 Z$ F
        {
9 _4 l' k+ O/ H. G' d6 X         ' v/ R* k1 U3 M9 b, a3 ]
        }
$ H; t7 c9 O1 z) {4 n5 H3 U4 G& I0 r5 o" Z
    }+ z+ I1 x" b7 O, i. E% `+ Q

! ?# @! a: `- v//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");5 |+ h7 J+ C& j' _6 k
//     curves1[0] = line1;' B6 @' V( n/ f
//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
" R9 C2 F/ X- g- K" y) f0 M//     curves1[1] = arc1;$ _0 h- D$ ?( _/ G1 i1 G, r. z& e
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
( h" a0 [2 P* R9 J* y* r) _//     curves1[2] = arc2;4 ~; H2 j6 J. u! I9 h1 ^
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
- L6 A4 I5 @& Z3 \3 G5 |6 u9 s+ v//     curves1[3] = line2;$ T$ U; O# p+ j2 l$ T
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");( S3 C8 ?! P- y
//     curves1[4] = arc3;1 x9 N0 C# T4 i8 N% {
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
2 L. a" Z2 `" t/ }& `0 \4 A//     curves1[5] = arc4;2 R$ D/ W; Q/ ^- V
    CurveDumbRule curveDumbRule1;  s5 i7 N- p4 |& S$ [0 `/ P% ^
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
: E9 d2 h/ s3 V" b   
# x( L  M6 p- P+ z+ Y    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);; c8 M8 v' N/ b% D# n- F
   
$ p+ h7 t! S+ N; F    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
4 ~' h' ~$ r# A3 j    rules1[0] = curveDumbRule1;0 K4 B# l$ a3 T+ E  K5 K
    NXObject nullNXObject = null;: @: C: W3 p/ I4 L* \
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);$ ^" _8 ]8 C3 v/ p, G
    if (bj001 == 1)
" t( o5 k* w" u' S1 j    {+ P6 b: A8 p, v! M) B
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
" G  e, x: F5 I+ w& x8 {7 N5 D: A# ~    }+ d& x/ o; @  o  ~  A8 x/ {( i
    if (bj001 == 2)5 c) ^& w) K' j6 y* @& O
    {; a3 ^0 G  j  Z# ~
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
2 P! o% `4 r9 u7 C    }
* ?3 \( y# p9 Z( z3 Z, q   
8 u* T' o: P; h* O# G! d4 J    theSession.DeleteUndoMark(markId3, null);+ b; k# `, G0 \* z$ o. h
    6 R' D9 k- q# q& g
    theSession.DeleteUndoMark(markId2, null);% m& s' ?/ T; x1 N
    * H  L% w% K" B2 b
    NXOpen.Session.UndoMarkId markId4;- S( Y: w: l( p
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");, @" _# R8 s( R/ j: k$ J/ W  b
    2 i$ q1 L$ G* H& M
    NXObject nXObject1;, Z# z7 q( ?( l) T* w
    nXObject1 = boundedPlaneBuilder1.Commit();
' L: W) ]# c6 a' H! z    . {  t5 ~& ~) l6 u" o) n) J, m% h# m
   
3 m) b( s9 _/ |6 H# c+ ]5 b; ^    DisplayModification displayModification1;; p/ y" z4 T/ S: c% q
    displayModification1 = theSession.DisplayManager.NewDisplayModification();2 g& r! R) F8 S; w, T
   
& E4 E3 o- j! h; Y' a    displayModification1.ApplyToAllFaces = false;0 g. L* a, z( c' P
    4 K+ j7 o# b5 x* k; w" C8 R* P
    displayModification1.SetNewGrid(0, 0);
$ z; x; C3 ~, e) l    ; p  l6 g% m& V0 S0 f' K
    displayModification1.PoleDisplayState = false;+ B% m% X8 i2 a; A9 M
   
1 r" ?9 F9 s0 w- @8 v    displayModification1.KnotDisplayState = false;
1 t4 @- p$ J2 B' U) y' S; @  M9 M5 Q   
: ~6 y0 w& a" f0 n3 g: L- o    DisplayableObject[] objects1 = new DisplayableObject[1];2 u/ c' P8 u* b1 L. e% b( b
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
% z# W, n* K% D* ?& Y' L9 \    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
: O, t, I  N. ?, h6 [( b# h+ D   
* ~; U; P1 y& a3 E$ B1 J6 ]        objects1[0] = face1;2 S3 u6 H& C% U; B
    displayModification1.Apply(objects1);% h" _' Y6 _+ W
    face1.Color = 32767;
; o6 j! E9 U/ ]7 g+ X: k' v   
1 B4 g5 Z+ O! r6 N& N& T0 K9 d    theSession.DeleteUndoMark(markId4, null);
, @5 a! |9 D% J2 b1 }      ~: k: e. I. ]4 @1 v4 ~1 i8 O
    theSession.SetUndoMarkName(markId1, "Bounded Plane");' l& t& Q: @2 t
    2 s, {; S2 F+ X, K- c; E6 G
    boundedPlaneBuilder1.Destroy();
' u8 ]) W( X% f8 ~) o   
) k1 m; M* j$ v# l3 z# K       /* if(fhyi==1){
8 z8 [  u9 c7 a! g+ @- e& R" y0 `    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
) x2 C/ g* y1 Z4 x" ^    if(fhyi==2){
1 M& q: c( f  P9 w    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}3 H/ O6 Q0 g+ [5 }
        */* b3 @6 n+ N* ?
    // ----------------------------------------------
5 \/ z1 u7 \* \6 ^2 i    //   菜单:刀具->操作记录->Stop Recording9 B( M! E! K/ i. z$ u9 q  t9 {4 ?
    // ----------------------------------------------) {5 D3 y/ k6 s3 M2 t1 G5 J
    2 i1 e+ j8 l) ]: C; ?
  }
. q& V& {4 g1 K9 N: F; G  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }! u& H. J: H+ }. h) f- p5 b/ a
}: f/ R+ e4 H$ S, A$ K
这是录制有界平面点选封闭曲线产生的日志4 O8 j- z* T( d1 _8 F
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
6 |# K1 ]+ I9 B5 ~ NXObject nXObject1;
: a+ R3 b% ]' z) f% J    nXObject1 = boundedPlaneBuilder1.Commit();7 y: [3 S  c. K/ w8 Y) F
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值9 A) }/ @' p& ?* s5 T' M  _

. X: i6 z2 T1 g) h% q6 A
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了