PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
2 K6 [0 a; s% L% \  q% n# r5 Zusing NXOpen;
) ]. v$ P! |7 M2 jusing System.Collections;
3 V) D% t: ]$ V: Jusing System.Management;7 |) }, s3 J; \, n! F" ~. ]
using System.Management.Instrumentation;
& m% i! \$ J( [+ \, j; {6 k) V' Busing System.Text.RegularExpressions;' V3 I; k2 K3 y) K# T3 N! E
using System.IO;
+ H5 M' Y4 y  K9 Qusing System.Collections.Generic;5 \$ t. g# j3 S5 p& a  }7 f) O
using System.ComponentModel;
( t; X7 X, ?0 v' {' c" }' Jusing System.Data;
+ I( O5 h% S7 w; ?3 Ausing System.Drawing;
, X) R* L4 k2 ?2 h! busing System.Linq;
# u, u( x  K. }" l% {* d3 W7 v1 Uusing System.Text;* N) R) I' T& b9 j/ r
using System.Windows.Forms;6 {2 P7 w: Q( ~# }4 @
public class NXJournal555
$ K9 u7 K" V/ c# I9 Z3 T$ N" k{
/ i- `* n, H7 P/ p: ^8 G# g0 B    public static void Main555(Tag[] bj, int fhsl)0 C* Z! b7 [8 P# \9 D* g' ?
    {7 D& z" `/ s- M- w8 o& H# M
        3 d  |4 h9 W, D9 `
    Session theSession = Session.GetSession();
* m) T! J* @/ a$ I( {4 n# H    Part workPart = theSession.Parts.Work;1 d& |  e3 I/ q& e! u  B0 z
    Part displayPart = theSession.Parts.Display;
" l0 Y' [& G5 S& {$ a' s2 K    // ----------------------------------------------& r0 C* y, Q4 x1 _' ^" Z
    //   菜单:镶块->曲面->Bounded Plane...
7 I/ J5 N+ M8 Z    // ----------------------------------------------
# N( L: w: f& W: Z4 l( V: P" c    NXOpen.Session.UndoMarkId markId1;$ z$ I: A+ X0 z( D# L
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");; `9 ]& i1 ]+ C
   
* c! Y/ B: t5 G. V, h8 |# Q. f, D, X. G    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;% V; V/ V5 s4 @% K) {3 ~2 b
   
0 ?5 B8 b7 a7 s  x9 _    if ( !workPart.Preferences.Modeling.GetHistoryMode() )3 I' g, R, A. ^. l" Q: j
    {
& u4 j. c) @6 d6 n- d( M        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
$ b8 O; V( L, C0 _* N1 K    }
. ~& o" X0 h; E: \" B* n    7 b/ [6 @5 N: K
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
0 s. Z0 J1 P+ X. B2 ]/ h7 F, y( Y    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);, e! s' }( F  G# |9 j
   
! ~/ x$ m: k2 w# C    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
  k9 w3 b3 c) c! H% z1 S    6 S- ^9 k6 K. z* y: x; S8 l! {4 x
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);5 d0 P- G" u% U" D, W5 \" t
    & E# [7 O1 Q+ |5 }$ l8 M7 E
    NXOpen.Session.UndoMarkId markId2;
5 k3 B9 @% H' E; n; \# s4 d    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");! K9 w" K" d$ Q
   
7 y3 r# _) Y2 X! d4 s8 X1 C    NXOpen.Session.UndoMarkId markId3;% }- z- h3 v8 z' w+ H
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
7 S1 F1 o/ n7 M& |* h   
0 W2 @* `) v- W& `    Curve[] curves1 = new Curve[fhsl];9 L9 v. a+ M/ N( b% b* ]4 n
    Line zx = null; ;* [8 s- d- ?" Q, I3 u
    Arc yh = null;
8 e0 w- j5 I8 ^( g' l5 K+ S2 T    int bj001 = 0;1 s7 |# r% d; B
    for (int i = 0; i < fhsl;i++ ): _7 a1 i* N$ N3 J" e7 B6 z  P
    {1 G  {4 F& b! v! e. G! N1 N- G
        try* v. d, F) A3 C; r
        {( L8 b3 n2 ]9 Q9 _! ?' E
            Arc body2 = null;# l; s8 z3 \: @$ m/ Z7 u  \
            NXObject object0;$ q# r3 n; g# Y- J8 Y; C
            // Tag body_id = NXOpen.Tag.Null;+ Z/ m" U  N, u7 t8 t0 ~
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag./ \* v9 }8 d1 U* K. J- M. K" @$ }
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。0 a, A( T( I. R; C3 a6 y" h
            body2 = (Arc)object0;
8 _/ _8 v1 m$ D( p; X            curves1[i] = body2;
- Y) `3 P& V4 z- r0 X2 b            if (i==0)
5 @4 X6 \" I# k: x            {3 v- c3 ^; H, [! l. T
                yh = body2;! H! C' `) T( B* f4 A
                bj001 = 1;
6 V# l/ n  M! R7 b- D+ H            }
4 c! D9 t- y9 y- b; M0 t% ]
$ U; t6 V0 k; S% L: t0 h8 s4 I) N0 d* @        }* i) J# X. J( q* Y: x" m* U
        caTCh (System.Exception ex)
$ O1 b% |( F- e. M6 q4 B        {        ; g$ Z8 I) q- o
        }# }" c9 n5 r' P( J  L# L
        try
, q/ q  d) C5 j" y. }4 ]; k+ A        {! Q1 x2 Q9 P- {4 T: D0 K
            Line body2 = null;5 _! }. g/ J9 F8 H4 A2 }
            NXObject object0;
' U9 ^5 Y( k" k% V% X            // Tag body_id = NXOpen.Tag.Null;- K; \8 f- \- f2 S
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.* H' v0 y' a( q% x; M6 b* ~
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
- T: ^7 V+ g& i+ ~& |  r- n  q            body2 = (Line)object0;9 ?/ ^; p' U5 U6 ~1 T5 Y: y
            curves1[i] = body2;
/ ^1 z5 w/ |8 v/ s' t, X9 T5 F, ~            if (i==0)
, j2 h% Q4 q  B' [1 t9 g            {8 r1 z/ N' B+ ^, l
                zx = body2;1 z7 I1 K& ~& T+ Z. D3 @3 k8 x
                bj001 = 2;) d" c5 p; e, f/ k! m& c
            }
  T( F  B( ^1 k! W& z; h2 @/ M        }
" D4 F8 O: ^, k# T* Z        catch (System.Exception ex)
( d' Q% |# S' t- d, {- @        {
; ]% F; Z5 k5 D         
8 Z" {) E3 B) |- m2 t        }! S/ H( `7 t0 T* `9 A! A

1 ?+ Z& j5 w+ P& k$ D- F    }, k5 t1 }, `3 ]  W
: _* I. G9 s# I9 Z9 q# P; r
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");! v! p/ `. \0 a% q2 g4 H! a
//     curves1[0] = line1;
2 u9 U) Z; o5 l9 J2 u. ~7 Q//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
4 V( d5 a* D- G/ Y  x( B0 ?4 h  v//     curves1[1] = arc1;
% z- o$ ?) g. h6 M//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");( D7 [6 a! m% V
//     curves1[2] = arc2;6 j' I/ i5 |' f9 v& V
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
. S) W% m0 I4 F7 ?4 t0 K3 T3 [//     curves1[3] = line2;
- c+ V9 s) e9 B& ?6 i//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");1 W$ l" u; ], h
//     curves1[4] = arc3;
; O) G5 Z  n9 E//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
6 U, N& l; L5 `+ f//     curves1[5] = arc4;
% X' ^( X4 T! ^$ i* N    CurveDumbRule curveDumbRule1;
5 U$ E7 `; ~* g5 E    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);* V4 G, U# y1 u: I& N( d) A0 d
   
' e: [0 R5 j" U3 o- D( G. Z    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);2 @# \' H- M7 ]' A& ^8 k
   
3 T3 b! N8 g& c. E    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];4 r, ^1 C  e, b# e' D: i
    rules1[0] = curveDumbRule1;
. D" v! t. r" R/ |( i    NXObject nullNXObject = null;! w/ Q- x4 F. T5 ]1 O
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);
" ~7 ~# }- R8 R* Y: c7 N9 q    if (bj001 == 1)
) j. q' P0 Q9 p% ]3 x  r    {/ O4 @5 F, m) T" w: V+ k; g
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);+ k: a" K5 X) r5 h* f' a2 Y6 {4 X
    }
: D8 p1 c* k' H, Z) d    if (bj001 == 2)9 }$ S( ?% s  m5 v9 h" P. G
    {1 f- l% r! R' o8 `( N& `
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);8 w% r4 \' B1 `! a' U* w
    }
, v9 D3 _" d4 w, F0 f7 f; n: o      j. m* H( v. X) x' v
    theSession.DeleteUndoMark(markId3, null);
. ~. k7 q  a- Y7 S: I5 \, d    3 P9 {# v5 b5 f* z5 Z
    theSession.DeleteUndoMark(markId2, null);$ ~2 n6 X$ Q+ R0 L
   
( j# j0 O! D6 d$ h- A    NXOpen.Session.UndoMarkId markId4;  P; P. Z: r' r# V; I/ u
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");* ?  C( M# `5 Y9 K7 A, G# Z
   
6 b( {3 k3 S. l3 ^* D    NXObject nXObject1;
* I9 q: [; a7 h, I7 Y+ Z8 R    nXObject1 = boundedPlaneBuilder1.Commit();! i7 Z( ~8 a: L& [8 o
   
" p( ]0 t+ c& O0 L   
( B4 x4 S; f/ t$ l; c6 c  ~: l    DisplayModification displayModification1;
$ c5 B. m* s( c, v; C. }    displayModification1 = theSession.DisplayManager.NewDisplayModification();
: c9 r' ~* i  V* j, L& [    2 z: e7 [1 Q7 [/ A, l
    displayModification1.ApplyToAllFaces = false;9 t! h6 `% ~0 o
    / `4 h8 C# H% {, N
    displayModification1.SetNewGrid(0, 0);+ V) N+ C2 c9 D' |( d
    - V. d; r- w& }+ g, @; }
    displayModification1.PoleDisplayState = false;
% m- W; R, L5 }  X! X+ C$ O+ X. S    % [4 O# c2 K3 a" b7 Z
    displayModification1.KnotDisplayState = false;6 t7 @3 W; O" K8 S' b3 I0 v
   
/ P  t4 q. _# m9 t5 M- t% p3 F    DisplayableObject[] objects1 = new DisplayableObject[1];
, J9 q. K) k% \( M    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;" Y" I, C/ L! h: _' V
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");0 j6 u+ Y" ^  Z& i; k+ c
   
8 V( ^, b# }& q% {        objects1[0] = face1;& J; Z0 \" e9 H4 N. s3 ]3 l
    displayModification1.Apply(objects1);# C- v' C& k* Z3 F
    face1.Color = 32767;
; t+ o' V  i' }    : W3 G+ L% B: Y" P- b2 i( p
    theSession.DeleteUndoMark(markId4, null);* U: X0 K% K0 o
    5 S' s7 j! N9 ?( N
    theSession.SetUndoMarkName(markId1, "Bounded Plane");2 m3 s9 ~# W: ?
   
" M- ]% O/ I" J; _  l8 @) a    boundedPlaneBuilder1.Destroy();
/ Q& O- ~1 ~. H9 @' J" S   
5 f& K  s4 f( N7 j6 ?       /* if(fhyi==1){
. y/ r+ ~7 y4 U$ v* U5 q    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
( Q2 S# C4 |& Y    if(fhyi==2){0 B8 ^/ r8 L9 y/ z8 c
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
# M, ]2 ~! N; D        */
3 `# t, G% w6 T- S/ D1 V    // ----------------------------------------------
9 W$ K" {+ |& P    //   菜单:刀具->操作记录->Stop Recording
1 N1 S5 D8 x% _0 _& Z! @    // ----------------------------------------------0 B: [% y7 [  _3 O
   
8 B( h4 |' V. k9 X0 ]0 }* L5 w( C  }# [0 h; u5 d; B$ T6 B
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }" c! x, h) ]- }& o
}! b) N. A7 ]# D) y$ C8 I& L
这是录制有界平面点选封闭曲线产生的日志  W+ }1 R5 M9 Z  u5 X+ L, @- i: S
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 5 p. y: l' E4 _1 a% p$ ?
NXObject nXObject1;
( V3 ~& d1 S. N  P/ J' n/ H    nXObject1 = boundedPlaneBuilder1.Commit();
3 [9 O+ n; V5 @2 t, O+ H8 M但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值( ^) H% k9 t. g

( f+ q! ^+ [% K3 m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了