PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;* Q( a; J+ ~& [. V3 n! R7 K
using NXOpen;7 I( J- ]# x/ R/ y0 D
using System.Collections;
0 H# u. y2 [6 _using System.Management;$ Y; m6 }# k1 w+ y8 ^' c
using System.Management.Instrumentation;
% }0 b1 x  P; F- ]+ Y$ O0 O3 wusing System.Text.RegularExpressions;
. g  H7 C3 g2 l+ gusing System.IO;- D: @1 S$ p5 R- x# ~! C: p
using System.Collections.Generic;
0 H* `* j! z1 D( X) wusing System.ComponentModel;! w- P6 `! h% A) P
using System.Data;
$ |1 _  n+ m5 x) G/ Qusing System.Drawing;
" t0 V5 ~% k( V) d/ V0 X# Yusing System.Linq;
2 _/ P! L" V  u2 F: B  P) xusing System.Text;3 D. j7 u7 s. D& h
using System.Windows.Forms;$ p4 v3 e% P. a$ O/ m
public class NXJournal555
. g& n) f: h- h* C{
: e6 E2 T1 e" a( O" {$ r, \% i    public static void Main555(Tag[] bj, int fhsl)
& ?: r6 p6 a; w  M    {9 D, K; l0 e: e' o3 G4 n. J
        
0 ~4 t6 A. e7 [' \! r$ n  A    Session theSession = Session.GetSession();6 [% k" S% M( m7 Q
    Part workPart = theSession.Parts.Work;6 @+ h/ X4 D5 i# \- L
    Part displayPart = theSession.Parts.Display;$ L0 Z7 t. n; g1 y2 S/ I, N
    // ----------------------------------------------
8 H5 r6 I! k3 F9 i" E, V    //   菜单:镶块->曲面->Bounded Plane...2 P" ?! V4 `- k
    // ----------------------------------------------  x5 N' X4 r5 [  |5 v
    NXOpen.Session.UndoMarkId markId1;7 [, W- p$ ~7 Z; I' E
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");5 k8 l9 [% z4 r+ s, `7 ~3 M) v) r
   
; A0 ?. M2 o* Z4 y8 L) g- R/ ^- C    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
0 M7 J1 p7 m% i" H   
  m& k% f5 \: i9 b; k. ?    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
5 o) k; _' D' i3 o' c" l- L    {
2 M, d" K( t+ \* R3 l        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
2 k8 n% h# K! ]+ q3 c8 J. G. t    }
9 E3 \. A7 l: W" X( K2 O4 A7 J$ ?- Q    & V8 c4 S' ?! a; Q5 `( b! l4 ~9 Y
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;% B8 N8 O+ b. V8 H; V
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);% {8 p7 E0 S4 w, J; [9 u5 q2 A4 @
    8 s$ j" P  u# f
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");) m% k* D- x4 b
    5 |0 |  A# `. A. i
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);/ P9 L& W5 I8 Q! s8 N2 ]
    - ^+ @% w7 y! O, {7 P( Z
    NXOpen.Session.UndoMarkId markId2;
6 F1 F4 S: M6 w$ T    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");# V5 {6 t, M) g& I+ q2 g# s
   
3 m( W( f9 u7 a4 s    NXOpen.Session.UndoMarkId markId3;2 k1 `* N/ L' L! v( G
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
1 C! S5 v. f: o    / g" |4 p" N, {& c# Q
    Curve[] curves1 = new Curve[fhsl];
" b! Q. ^; D0 o# X+ f    Line zx = null; ;
9 ]9 h) ?! R0 P. d  g( W; b  c8 _, g6 H    Arc yh = null;) T# x- G0 Y% s$ F& F3 n( `; |
    int bj001 = 0;
1 g: f5 k2 g& U* y4 `    for (int i = 0; i < fhsl;i++ )7 E! L8 h; i3 G. C7 D
    {
1 Q$ k* m6 w7 |& r        try
: K3 e4 N# J  c" E        {
1 C6 G6 |* @  f% r2 X            Arc body2 = null;
6 T; Q3 S! C7 S6 l) e  G: M# m            NXObject object0;
/ H. R4 E5 T0 W4 @* F5 ~: h* I6 j" L            // Tag body_id = NXOpen.Tag.Null;' T$ z# p# a# c" o/ P+ \; f
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
' p, y; ?2 B( N6 @' d            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
8 f6 l3 V& v4 l# P0 i6 b            body2 = (Arc)object0;5 P  ~' \2 Q8 r/ I7 {* S+ ~! A
            curves1[i] = body2;5 a, Q5 s. S' _
            if (i==0)& [# \& j: }' q4 y! T/ \# w
            {
: U+ y- w4 q$ `$ b3 v                yh = body2;6 F4 G4 i% B$ ^. \+ t$ p! w2 B
                bj001 = 1;
, E( N  n3 R3 X' z4 Y            }( I7 z3 Z! X4 w9 n' n

1 \8 R, x$ Y- T* D! s2 c% s+ `        }9 t/ k5 |6 ^# B0 D
        caTCh (System.Exception ex). V/ w' \1 F; U1 c. J; ~  @! N
        {          r2 y6 S9 w% n) i( v$ e
        }
  z* h1 @/ A7 `  H' G        try
6 i9 C" `' ]1 i/ ^: C# ^        {
) m% \# S! g9 X" \- V( r            Line body2 = null;& `3 J4 V0 ]4 v
            NXObject object0;) V  M% z) u5 R# H% F# m
            // Tag body_id = NXOpen.Tag.Null;
9 z6 H& z* T! C7 T* S, X/ i8 f            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
. o; p' q% r+ l+ Z+ b! l            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
1 x$ A4 @! P5 }+ g' {# ]            body2 = (Line)object0;
4 C8 m& x6 }7 J            curves1[i] = body2;
& I/ a, J8 b5 x3 P            if (i==0)
4 C0 _, h* P7 h4 F            {/ i; G9 z* K# P* |2 Q0 Y
                zx = body2;
0 K2 o7 B" h9 n1 ^  w* A8 o  [+ l                bj001 = 2;  w$ {6 }! m$ ~6 A
            }2 T5 v5 O! H5 g& A5 ~8 l
        }" K9 w" ?4 Y  t, L6 E
        catch (System.Exception ex)7 k/ v( k' N0 }
        {+ o2 X' F+ D. V- i. N5 f( l
         6 j9 S/ f& r% V, ^% K' K" Z
        }$ s+ b) M. h% y7 V: L* `9 H- {

9 m* k' U1 ~( s$ y8 C    }, L2 t! g8 m/ m5 @
, g- b8 z) M$ n9 K
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");% \. h1 a. f) k! ^) |5 h8 O
//     curves1[0] = line1;+ _; t6 E( _: n7 J' z1 B& x; c* Y
//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");7 U- C  u( a1 {+ `2 x
//     curves1[1] = arc1;! o0 `2 S! c1 i8 C/ e
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");6 D4 x! B, o2 H8 X8 `" l
//     curves1[2] = arc2;
) N" `9 s8 B- Y0 _//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
$ i! V: ^, r% a/ v1 g) y//     curves1[3] = line2;
% _2 F. r6 X2 {( w# }//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
- F7 Z& h4 c8 |5 ]5 {//     curves1[4] = arc3;
9 n' m% n1 P/ t, V' _//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
5 t3 M1 f) l* @" P//     curves1[5] = arc4;
" u; k( ?/ k5 g2 Y    CurveDumbRule curveDumbRule1;9 r0 f# Z2 c& X+ G( V
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);  A5 K+ ?* q. x5 |3 P
   
  x& r# Z5 A. l6 `9 c- E6 i1 @1 g    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);8 R; a% |) X2 ^" `" [9 j
   
6 a- z9 n! Q; x# H2 K, H    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];8 u( _" a' b7 n
    rules1[0] = curveDumbRule1;3 S1 \* @: J' O
    NXObject nullNXObject = null;
: }) k3 z4 N: B( e! w    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);! e' i+ [- G  K
    if (bj001 == 1)0 L8 {, a. Z% o3 k7 v
    {
; D* D) e" o% t        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);& c. |4 x4 m; \% _
    }
. I! j# f+ e* O5 d3 `6 D    if (bj001 == 2)8 H8 {" F+ H6 K' n9 z
    {
" i- |  P0 @- N" f        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
  V6 J  v' e( t    }
5 I, G/ a* u+ L2 Y    : L8 l& d, S/ k( ~" g
    theSession.DeleteUndoMark(markId3, null);
" K% {- U0 j# B/ a# _9 y3 E    0 S# f  B7 a  t5 r
    theSession.DeleteUndoMark(markId2, null);  h: X/ T% z! m7 }* x8 `
   
- k# E" p1 I* p! a- v6 i    NXOpen.Session.UndoMarkId markId4;$ f( i0 H; p0 b% ^1 w$ D* p
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");2 M0 X- n+ Q& F6 ?
    8 V5 r8 c% Y! q. [
    NXObject nXObject1;
& D2 }) Z( N3 {8 i1 s# `) x    nXObject1 = boundedPlaneBuilder1.Commit();6 k% I: M: n) a& o5 }
    & X- O, ?6 M' g5 q
   
! m) {' w! \- ?; `, x( o4 U    DisplayModification displayModification1;) K6 O# f& N8 M
    displayModification1 = theSession.DisplayManager.NewDisplayModification();0 x7 e' O' Y0 f3 F* i# ]- W
    + k( p5 \: g" T* j/ y- h0 F
    displayModification1.ApplyToAllFaces = false;, ~8 U# k+ S$ [  s( n) z
   
8 |" d+ P/ L" e    displayModification1.SetNewGrid(0, 0);+ v8 ^) _! p' J! K5 P3 n$ F
   
* t' M2 \/ u9 q! A    displayModification1.PoleDisplayState = false;/ E0 \1 ~5 P5 R. f) r7 w5 l- L  U
   
" Z# {( ~# H9 a, I4 E    displayModification1.KnotDisplayState = false;
# O$ P+ n4 K& F/ D: c, @' h% }* D    & f% f. I0 |" a) r" _8 n
    DisplayableObject[] objects1 = new DisplayableObject[1];
3 Q) M9 N3 Y9 ]1 d$ K    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
& H/ n1 W, t! _+ k    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
" L8 L/ w/ {% k   
$ A3 }- @% h# A) S        objects1[0] = face1;; }. q" ^; M4 g
    displayModification1.Apply(objects1);
& N+ B! k3 G( J5 H. v- }* e    face1.Color = 32767;6 w, ?# j# f* m! u! }1 Q# _1 F( q" y
    * E( g; |8 U/ i, z7 N, k5 W
    theSession.DeleteUndoMark(markId4, null);7 G6 i) t+ p2 a5 f$ X2 `6 }& k
   
0 l8 F- O- K: Z- B$ N% _$ y- z    theSession.SetUndoMarkName(markId1, "Bounded Plane");
4 m5 L+ O& Z, Q1 l& o    ! H6 }) O. ~" ], E
    boundedPlaneBuilder1.Destroy();% Q! w4 n% L: w  }- i! C
    $ z" g  n8 P& M" j: f
       /* if(fhyi==1){4 w& `8 a' L( C
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
/ O! @3 u! y; }& X/ X; f5 n    if(fhyi==2){
: v" w7 B9 }0 |- s    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
3 L3 S2 k% P( S9 m5 r5 [$ U; a        */
1 A2 v* G% H" D    // ----------------------------------------------
; }; D5 z9 b" F& ]    //   菜单:刀具->操作记录->Stop Recording
9 C5 `# r. R) o8 q+ U    // ----------------------------------------------
  }  S& z( H2 L3 h) U2 F4 p* w% z   
/ q+ O7 p0 X) A8 E  }$ `# ?7 M( ^: g- K
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
4 J: j  O( k+ \8 O' `}
: C5 _0 _( G. ]5 F' Q这是录制有界平面点选封闭曲线产生的日志
+ k# ~+ v0 z  \我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 1 q& H7 @- p! t
NXObject nXObject1;
. p4 @( j# I" P! _    nXObject1 = boundedPlaneBuilder1.Commit();4 H$ l" j" B! f
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值: F3 G! S! O- b0 e" U& S6 k

, m9 l" \; `- q; }, l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了