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 5068 1

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;& _4 E  X7 I( p- R
using NXOpen;1 d4 [( z# o+ `, b
using System.Collections;; T% K/ u% B0 Z/ L! m7 S$ B
using System.Management;, Y6 U3 m. H, s! Q- J
using System.Management.Instrumentation;
6 n- f' p( _4 V+ M7 }, u* H# Kusing System.Text.RegularExpressions;2 M' q( W+ y+ p/ l( F, A
using System.IO;/ {3 w" S8 D+ T" a, z' o
using System.Collections.Generic;
) u8 W& Y  A' f% Tusing System.ComponentModel;
7 S' |0 X! `' Z0 J3 p9 u% cusing System.Data;
' ^+ S7 D1 M: R. z) |" k3 Lusing System.Drawing;; R/ [# ^2 L* ]" B1 U5 g7 Q9 @
using System.Linq;* P) j4 Q# \; g0 C% Y
using System.Text;4 Y. }/ S8 E; o# l( w+ G/ m
using System.Windows.Forms;
/ Y, B: q+ D* Y! k4 rpublic class NXJournal555
, R* @7 D1 t; d% \{, H1 k: y8 t. b) u
    public static void Main555(Tag[] bj, int fhsl)
# I' c, S/ }) W. z* d* i$ I    {
! o7 G, ^4 t9 @        3 Q" a1 I& [* N; ], o
    Session theSession = Session.GetSession();
  s7 g+ s0 t( T+ g# b1 U    Part workPart = theSession.Parts.Work;
2 H4 k( P2 W/ j# U9 |    Part displayPart = theSession.Parts.Display;8 u& r3 e2 p( ~
    // ----------------------------------------------
1 G( n2 J" @5 o  b. I# ]    //   菜单:镶块->曲面->Bounded Plane...
+ N% G1 B7 r" w) n% |+ h    // ----------------------------------------------
6 J" C# P; X: `1 M' v    NXOpen.Session.UndoMarkId markId1;& h  i, x0 T4 s
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");: q4 t: @! M% t5 u  c# l
   
7 n1 ^/ I3 k4 b8 I# M% Z! G    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
/ w# l- w1 Q2 o7 a) c! d! @+ ]5 @0 c    / P  z3 d; X9 G9 z
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
0 Z% k  ]7 K# {% l8 y9 f    {/ R( z7 _/ p' _$ J  `6 a
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");% k; S) I& e- H
    }
- A/ a0 i3 @3 U8 v5 F   
3 `8 o! l0 y/ \# L" K    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;9 t( _$ \5 G8 ^4 k
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);. \& k  v6 q+ e2 h2 a* g7 J
    * V9 ^) b& J7 s+ Z7 i
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
# \& p( |; W& M% W$ [: f3 U% _    " R5 f! ^( t5 P. h3 [6 D
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
  W% M) p5 n9 X1 w8 w6 F' U   
+ n0 J# f% C4 J& \: Y    NXOpen.Session.UndoMarkId markId2;
$ l7 ^0 t) e, O2 ~9 t& z0 i    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
+ A. J0 f$ C* |- m/ m    ) v, A3 u5 _: |" x  ~  a
    NXOpen.Session.UndoMarkId markId3;
/ a' L0 j8 V# a+ m4 l6 J8 A    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);$ [7 P! h6 h8 t: `
    * J: Z5 x( N2 e" M/ z5 k2 w
    Curve[] curves1 = new Curve[fhsl];" G$ H- N9 Y* D9 P
    Line zx = null; ;7 H  R$ K. O0 L
    Arc yh = null;0 I* T* U/ z8 ]. a9 ~5 O
    int bj001 = 0;0 {: h7 z6 y9 I, L+ G" N  R2 g
    for (int i = 0; i < fhsl;i++ )( H: |! b- f" I/ M+ q
    {
; L) g! p7 r( w) q        try
$ k' }% G) Z; X7 Z& N        {3 |  ~" h4 U, m+ c: z8 s; ~
            Arc body2 = null;) x: Z+ P  P- I
            NXObject object0;
: y' K) M+ _& r            // Tag body_id = NXOpen.Tag.Null;& m1 o/ n* {- K1 o8 A7 W( M6 K
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.1 }* Z! G8 j: F: n
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。& l8 j8 v. L- y3 m
            body2 = (Arc)object0;! X2 a9 }/ c6 \/ b2 U( E: _
            curves1[i] = body2;% @4 b. H- M$ s6 S
            if (i==0)
( n, _/ q% k* w; h% B1 ]! v            {  |% M" p6 Z2 F: {' ~3 s& z8 ~
                yh = body2;
- _: V" J" I: R' ^8 P1 t                bj001 = 1;
/ R  E6 Y  v" N' Y/ j" ~0 F            }4 r2 {3 ?$ A2 k: r

. d9 U7 V) ^% m) ^        }  w2 ?0 D# q3 H8 c+ |6 h7 _
        caTCh (System.Exception ex)+ g5 L# q! J" S- A* v7 E1 N
        {        2 @9 R) b' K; W# S
        }
% R$ b5 S) }) w6 a* m1 T' s        try
) Z4 r/ ^/ ^! ~        {9 y. m/ V" d2 U6 ^& \  Q, S$ J
            Line body2 = null;
  c0 H5 {: V6 l& i, n, K            NXObject object0;( w% B1 {  E6 T* r2 T  D
            // Tag body_id = NXOpen.Tag.Null;
, h$ S, d7 q5 L' k6 ]! o            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
8 q/ v0 ~  e- f( F, y            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
" n: A6 X! I  z8 E2 y            body2 = (Line)object0;
9 w1 {+ V5 Y$ i2 H! X            curves1[i] = body2;
" T$ a( C$ _/ ?! p+ X: G7 T            if (i==0)
* L: ?" ~$ N7 M            {
% A# k2 u7 a  @7 u  _                zx = body2;$ e/ T% @5 X! q7 p$ p& r
                bj001 = 2;
. |/ w! t$ _* `6 V' f8 G7 d            }
! \# h4 ]( u: c9 \9 U1 M        }. O4 p. v/ q8 Y. W9 Q# M
        catch (System.Exception ex); |) E' X- I& P1 k& V$ D# ]- Z8 M
        {
9 \2 v; b: S. f% X# K4 d         2 E0 W# n7 d+ R& g7 \, s5 X! y
        }! t1 T! }/ Q$ E. n
/ o& n& r3 ?4 h; d2 R+ H6 O$ [
    }
% K) `0 i: a& L/ `! R  j: r4 i1 U* ~9 i1 W9 t
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
! L2 _! d3 u4 C$ [//     curves1[0] = line1;
: t4 t+ H( s, z# A4 y//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");0 n$ ^; o( Q. W' h- p
//     curves1[1] = arc1;
% [- P8 \1 a0 P7 z+ a//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
9 h' }/ A6 o2 j: X4 o3 w//     curves1[2] = arc2;
, _$ k. z. l) C//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");+ w# @6 g% t9 d6 u5 V1 }+ E: H) M
//     curves1[3] = line2;
8 e; g/ M+ h  s; X- G0 Y* M//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");3 u' Y# q9 R; f8 ]5 ^' a  z/ h
//     curves1[4] = arc3;3 U' c; {- {3 J
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");( \4 D1 A9 [, j! E
//     curves1[5] = arc4;+ [! |  Q: [( o5 u# v; j
    CurveDumbRule curveDumbRule1;
7 R" U  F7 [8 s$ v- W2 a    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);6 R0 \, r6 T' S7 F# t
   
1 ~0 d! k  w- X    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);8 Z" g, d4 s2 L' ^
   
- L( |+ C. f( Q/ I+ S: w, ?" y* y    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
; e/ _3 l$ p4 o+ S  f    rules1[0] = curveDumbRule1;
0 |# C" s5 ]8 ~; _, C9 ]+ F/ d    NXObject nullNXObject = null;7 r2 E' I' V  C% m
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);9 q. f4 z; @5 r* m5 J
    if (bj001 == 1)
+ ]% y& r8 o' }# G; D( z! ~; Y! Q    {- J0 Q/ M. {/ l& y+ t; a$ g
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);/ p. p2 C# R- H4 l: E* D5 |
    }! E% _! r. a) b) j/ c$ \8 F/ O# f
    if (bj001 == 2)
* g' l5 I: I2 T" A* l    {
; t" k) J. o/ |3 Q        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
/ [! C& r/ h1 a    }6 C6 B! t# s( X( C9 k0 g6 Z$ [
    ) S/ D, a* t! |0 ^3 Q2 H
    theSession.DeleteUndoMark(markId3, null);4 b& Q# E" }4 @( w
   
5 O1 a' h3 }* a( V6 V4 \    theSession.DeleteUndoMark(markId2, null);% }) P1 E& K' }6 o3 ~
    2 f; E" n$ J% B0 K# R3 W; y# [3 A* r
    NXOpen.Session.UndoMarkId markId4;
3 E/ M* d2 I) ?+ |$ b( r2 D    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");& ^; I4 a  }' `
    $ W5 y$ ^2 Y2 R; m
    NXObject nXObject1;! T0 [3 a' n3 d$ l- Q/ J
    nXObject1 = boundedPlaneBuilder1.Commit();2 l3 M& O1 x2 Y  t" `; a
   
" s9 Q. S3 Q& y! G& Y% G3 S    + q6 x0 J. |! t8 u6 r3 a4 l
    DisplayModification displayModification1;, {$ T0 |  T/ q  x+ O' _8 d6 `
    displayModification1 = theSession.DisplayManager.NewDisplayModification();
. u+ z: X  g8 Q; m+ }' v    5 s- l+ e1 H6 r
    displayModification1.ApplyToAllFaces = false;" g" s4 S5 d' y3 ]- M6 ~4 ^
    0 _; e" J5 L7 S. ~1 F7 _7 b$ P
    displayModification1.SetNewGrid(0, 0);
$ n3 H. c6 j* {    # k2 e- {: a( ]! @/ F( R/ p& ]
    displayModification1.PoleDisplayState = false;
# e' T! U7 a! V: y+ _   
2 p9 I1 g: Q3 K% O: C    displayModification1.KnotDisplayState = false;
2 s- n4 N5 V0 H   
; j' e) o+ x8 r6 ?2 n4 V1 C2 l$ q0 O    DisplayableObject[] objects1 = new DisplayableObject[1];! l# O" j5 g! s2 m- I3 R- p
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
; E/ P. m4 j; D; r. u8 X2 r6 Z. H- r    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");* @1 D  t7 g, S" A( _# N1 P/ r, N
   
6 Z0 u& u7 {7 R- @. ~! G        objects1[0] = face1;1 k. y1 c9 s4 R* V
    displayModification1.Apply(objects1);. H% f) P. A. E0 b, f2 D
    face1.Color = 32767;5 K4 I7 R  A& r( s
   
- _0 w& G8 b# D9 z. R! l    theSession.DeleteUndoMark(markId4, null);
& Q6 u2 z- b, h( d3 p   
" h: D) K4 l, W. U4 ]    theSession.SetUndoMarkName(markId1, "Bounded Plane");
) M) t% R" j' m$ O; i1 ?) _    ' c+ Y( p! o8 p% L6 G+ k
    boundedPlaneBuilder1.Destroy();
7 C- e7 g+ C2 |0 M) J2 s3 l  W   
4 |( ?: \% i( ~. m       /* if(fhyi==1){- I. p, y  H# z' V
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
. N) Y# o" _9 O3 O    if(fhyi==2){
6 t9 x. ], n- Q8 }" ~, w2 f    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
- Z! n9 ^' |6 u7 J        */; O- ]. J( d- T0 G8 ^) s" u
    // ----------------------------------------------
# U2 P3 x& c: j1 _$ |; [5 U* A    //   菜单:刀具->操作记录->Stop Recording
  }- X. X# t0 V& d9 J; @    // ----------------------------------------------
2 {, g) F. @  z   
& t/ S( z. @  D8 g  }
3 ^2 x2 ]! i1 M* M$ \( h  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
8 }% z8 O5 X0 K6 J1 Y" ]}
- e8 @1 W  ?4 [$ J( ~7 N这是录制有界平面点选封闭曲线产生的日志5 ]/ `( Z) X' F: E
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了   K% w5 \( u2 X6 p" a2 t" w* y
NXObject nXObject1;! X9 M: F3 b8 x0 f( _, l6 k2 |
    nXObject1 = boundedPlaneBuilder1.Commit();  i4 W5 ?2 Z3 u/ Q
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
* G! N$ S. s/ v2 n/ {6 i* P2 O
7 X" o, G3 D, f7 p) R5 j
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了