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

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;5 {, L& x, h" c' B! ?
using NXOpen;
1 ]" R# B8 N4 G- L, f0 ]using System.Collections;5 C0 N$ O- J4 l# {5 X9 x4 P. F: x
using System.Management;
8 G0 R7 i& X) n& |- j7 Tusing System.Management.Instrumentation;5 N6 Q, h4 [8 u$ }' `& ?
using System.Text.RegularExpressions;4 ]& k* P- K% Q1 l3 t7 O6 R) |7 N. Z, g
using System.IO;
7 E" `& m8 w$ Y: F* {  H) l7 F: _using System.Collections.Generic;
$ o: z% {6 s! K2 [using System.ComponentModel;' Y) l7 h. e/ s
using System.Data;; C, c! f! v, \1 \
using System.Drawing;
! _- o. ~- _" Jusing System.Linq;
% g) u' y8 e' c9 N: @7 n" I8 kusing System.Text;
% J0 n+ \9 `- O3 ~* [/ W6 x$ [using System.Windows.Forms;, _! J9 t" p5 G6 f+ e/ i
public class NXJournal555
) |; P% u" B/ n# h{0 x2 w0 K+ H8 A! Q/ q- ^9 u
    public static void Main555(Tag[] bj, int fhsl)
/ p% M+ _: A( h  p. B: Y: f" Y; h    {$ C) L7 {( V0 V) j/ m2 j  g4 Q
        ( r' D- a$ H, l, G' I+ n- Q* f
    Session theSession = Session.GetSession();, R0 c% a/ w! N  A
    Part workPart = theSession.Parts.Work;
0 ^- W0 S2 ^0 ^$ g5 |9 d- Y    Part displayPart = theSession.Parts.Display;
9 C8 @* X, p8 V$ N* s4 O; D$ }    // ----------------------------------------------. e9 s0 ^$ U5 S  d6 v
    //   菜单:镶块->曲面->Bounded Plane...
% L2 O4 T0 W, O3 r# l; e    // ----------------------------------------------
: T& C- j/ x  u2 Q    NXOpen.Session.UndoMarkId markId1;! v7 ^  s; V$ G# n
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
- E2 ^9 T; o' A; f+ k8 a   
6 M# z4 H2 `/ K* U6 L8 T6 V    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
0 Y! G9 }$ n$ q& [$ ^' i9 Q2 _9 A1 ]   
1 e! Y" G9 q) a& P9 f4 y: B    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
2 e  ~9 I0 y# ~& O6 M    {
; W& E* {' x1 m2 D" b, V        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
5 K( E: _% v( f3 D    }" H1 V, L6 A1 I! F/ D. t0 u, ?
    3 X! V) J/ t& N/ k1 E# D& ~5 O" r3 @8 S5 R
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
8 z" b7 D4 G" b$ |9 {$ G4 M8 [    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
2 Y3 J2 Q5 W( z, S& u1 Y   
0 M; _# {2 N, ~6 e; Q4 e    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
- ]6 t3 Z: _4 |* E6 N   
( X, Q9 C8 ^) C$ p5 @8 _    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);5 b7 z" K$ E9 e2 k; @: O* H
    $ K3 L5 w& p! N+ N6 A
    NXOpen.Session.UndoMarkId markId2;6 F1 ^! R' |$ _  @8 j
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
( E( ^' b2 g) i% m- {! s4 z0 u    . A- F3 N9 ?" P: M5 J; h8 X
    NXOpen.Session.UndoMarkId markId3;' Z1 b- k' z& M  E( D
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
" b7 a0 J& P) V- `  _% }5 V8 r   
; V3 V# x4 o8 G    Curve[] curves1 = new Curve[fhsl];
, h. \" _4 p3 b- A3 B* ?" X    Line zx = null; ;* v9 V% C5 h( C1 M* e) a8 g
    Arc yh = null;
- z7 _  t9 r' r, T' m7 e    int bj001 = 0;* \" n1 W1 Y, x8 F
    for (int i = 0; i < fhsl;i++ )5 n+ z) Y9 Y% ^9 S  P6 D
    {  w( k* y: _7 ?- e: f
        try
0 h: F+ B7 @, [/ G8 [        {% |* }+ Z7 m3 v$ q7 y
            Arc body2 = null;
6 B; j4 K1 j% q) m% T            NXObject object0;
: @* [  t2 q, x( F4 t            // Tag body_id = NXOpen.Tag.Null;
7 x/ A( B: P' H/ d5 I' q2 l            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
: @4 g( p$ m' V, a$ M5 C            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
' A4 h; x& s2 E; L            body2 = (Arc)object0;
; S7 [8 d+ A- @" E  V            curves1[i] = body2;
9 s; x% h: L: m$ A" y& ]            if (i==0)
: b6 ]" ?9 b( \4 p. g' e            {+ ]. D0 h' j  E/ `$ g( v
                yh = body2;0 y1 b" F8 X; Z1 o
                bj001 = 1;0 N$ ?5 R* w0 t: {2 m. D) M7 O
            }9 J+ V  t# a/ o- D/ R3 G/ g
$ N9 f- S6 f% M
        }' q$ \! h/ F0 ~1 Y$ A8 W
        caTCh (System.Exception ex)
. ~* n- |; h2 l, A4 d& }+ P        {        
6 C5 Y1 r1 a, I3 G3 d: Y        }2 p; V+ B* h2 X1 a4 X) |7 W
        try
& K4 d( [- i7 K9 j        {
: C0 t/ Z6 a" C) r  n" h            Line body2 = null;; k8 ?6 p! G3 }- U7 E3 f
            NXObject object0;6 Y5 ~. l# o- V( x  V4 W8 G
            // Tag body_id = NXOpen.Tag.Null;3 ^" K: J5 ^  i9 |: y
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
% k& K/ `4 u$ ~$ E5 ]- V            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。' t: [0 {& {2 b+ K9 J( ~
            body2 = (Line)object0;
5 E7 I' I. a, I            curves1[i] = body2;4 }4 n5 e* H6 w4 c8 H
            if (i==0)
7 w( o9 o0 R2 A! C  C            {5 ]: e" `2 G6 g! L4 V) K8 ?
                zx = body2;" h' z, y; J8 M$ ~: W9 u
                bj001 = 2;2 O: L  w, V* [! e4 X- R! I8 c7 v
            }
& E0 I2 Y+ j' }        }; ^3 N( g5 a" y8 L- _1 ]
        catch (System.Exception ex)
8 O: Z2 a6 D' e( Q' M        {
6 x: g- f, ^+ K2 e* v% Q         3 j$ l& ]3 w. j- S7 H. N( z
        }; y" U: w) A6 u: h, S

) Y+ Z1 T% P, r2 X/ b" q    }+ R$ t5 \4 t4 F# j$ k! H
8 W. {, M6 M" D' _$ T5 T
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
8 H: \* `$ G2 {- x7 P3 a4 w//     curves1[0] = line1;3 x/ t$ N! i/ i, m6 S
//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
5 z: i% K0 R8 A; L//     curves1[1] = arc1;4 x" W) a& M; y" I* @# F4 X4 O
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");+ i  r6 O4 S! i1 m+ z+ M
//     curves1[2] = arc2;) V0 d% b6 {: ]6 i' U
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
+ g3 O! P1 n# s4 u" W//     curves1[3] = line2;2 t7 `. J) q& {8 ?  x
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");3 o+ y9 m- F; B9 c5 ]" }; b
//     curves1[4] = arc3;6 r& e& f' q  F3 Z# M
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");; ?1 B6 c$ d1 M, k
//     curves1[5] = arc4;8 v7 _' ]9 @" A# m0 P0 j" |
    CurveDumbRule curveDumbRule1;
# ^5 S* {8 c* v2 Q    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
1 J# e, O3 k* c# d4 I    # c  ?# H0 o  R
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);2 S0 M6 `/ ~9 \4 Y2 Q
   
" G, j3 A4 Y" F- A* N, t    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];& `: ?2 Y3 ]& q& C2 o
    rules1[0] = curveDumbRule1;) K2 L4 D( ]2 }" @  I7 m1 O8 p
    NXObject nullNXObject = null;
/ J$ Z( s. U9 _2 r    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);# V9 W3 V1 ~; b& O# E* O$ ^
    if (bj001 == 1)4 ]& T5 Y* E- {* O
    {, s! B' _  ?! q6 d) M% G  m
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);% D/ X- m7 \+ g6 v! [
    }9 r, Y7 h# @9 Z, \$ p( s" w  B
    if (bj001 == 2)
' P; `' @1 ^# l    {
% K3 ~+ x) j$ ?) X, w+ H        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);7 X/ Q9 m3 N! C$ |  F1 O! o* V+ ^
    }
2 Q3 ~) `6 T4 ?   
! L0 o. ~  n- _. a. V& B5 T) H7 d    theSession.DeleteUndoMark(markId3, null);
; ~9 T( U3 g2 }7 n5 y' ~, N    ) G" M9 s2 m  m' a% P
    theSession.DeleteUndoMark(markId2, null);% [7 l; W! R4 I' o& d, p
    - h2 y" M. L) |2 V
    NXOpen.Session.UndoMarkId markId4;
1 }) A* u/ w) n9 x9 B9 I7 j    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");  ^: F- Q7 ^. O1 f" e% ]2 ]1 C
   
( C8 W! X, @" r  x2 G    NXObject nXObject1;
0 t- C6 x' D, k& r5 n: y    nXObject1 = boundedPlaneBuilder1.Commit();. N; G- ]; N9 U0 z; l
   
+ \) X4 d; L# x8 j- b+ n   
: y7 u# d2 ^8 ^& [    DisplayModification displayModification1;
6 `) |8 X3 e% ^    displayModification1 = theSession.DisplayManager.NewDisplayModification();  \  t) U' g" X1 L7 \3 @! |2 F
   
  J- E, f) E% O& }+ h, H6 k    displayModification1.ApplyToAllFaces = false;
" B  c! n& @1 F5 V, _3 X   
' l! A# |4 r0 d1 o! i    displayModification1.SetNewGrid(0, 0);
. ?1 h0 v& }" `3 L" I; ]) m      K, a5 K, Y3 v6 S
    displayModification1.PoleDisplayState = false;8 V, A, R; D# N- S+ {) v9 L
   
" y& B+ Y- r% a" x% d    displayModification1.KnotDisplayState = false;% g3 J9 D, j( f5 s8 S; S! k
   
: n9 M& q# Y5 ?+ H( r  r6 t; E# M    DisplayableObject[] objects1 = new DisplayableObject[1];- e2 Q  {( s/ r6 N0 s% f
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
+ P. X; j. r& j/ [8 I+ B    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
  Z( ]  ~' Z6 M   
) H& X% k) s9 N" R& d        objects1[0] = face1;; E1 |- C* h& w& k6 ^
    displayModification1.Apply(objects1);% c7 g& }7 k) T; o
    face1.Color = 32767;0 G9 g) J% T6 C0 q0 G
   
# r+ J3 L: P, }$ q. L/ J    theSession.DeleteUndoMark(markId4, null);
3 P9 P. A7 W$ s. y  `! s    ) L$ H' _7 H9 Y
    theSession.SetUndoMarkName(markId1, "Bounded Plane");
( B+ @" c  M6 s" A3 {# R    , ?* D) T0 k- {  P2 o& A3 r
    boundedPlaneBuilder1.Destroy();- y7 t+ H  k% \; ]/ a' o, Z8 m
    2 ~! y0 Z( T% U$ Y
       /* if(fhyi==1){+ F1 K; Z9 r3 v9 z3 r& r) ~% g4 A4 B
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
, O5 ^5 X8 i/ n+ K6 Z& {    if(fhyi==2){
0 R0 r! ?2 D/ e5 C    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
8 x$ q  s  N+ X        */6 D/ P  G% G- K
    // ----------------------------------------------: F3 @( A1 i+ [& a: ]* [
    //   菜单:刀具->操作记录->Stop Recording& L* n: @" E$ E& _0 x) ]& l/ v
    // ----------------------------------------------: L, W* n& {1 K( N
   
7 B- W& v- V: X$ |  }
% {0 @- x3 y/ \5 H. u2 O) x  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
. _; Q0 q8 r" v5 ?4 u9 A$ r}9 \* f) T% V: w& N
这是录制有界平面点选封闭曲线产生的日志
8 z% \5 K7 F6 z2 a* |我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
* ^* u& v) L: [! Z3 r, X8 u NXObject nXObject1;
$ w* U$ j3 D$ a' N7 e1 @' y    nXObject1 = boundedPlaneBuilder1.Commit();, g0 [; b* }  l. |' z9 \  q7 J
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值$ K# I! ]- }! ~+ z1 ]

" n( P; r, `& ]. N5 ]" [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了