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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
, J% C4 ]3 |1 ~( ?using NXOpen;
  k8 m% ]0 g. w6 gusing System.Collections;
$ ]" ^0 B; Y% ^0 ?  ?using System.Management;
. }; E# ?+ D( |. Pusing System.Management.Instrumentation;
; S; l' `) Y& y* J- {; _$ iusing System.Text.RegularExpressions;
2 T8 g6 ]4 P, z$ p  o- G( iusing System.IO;
3 V7 t0 v. G  Z1 wusing System.Collections.Generic;5 K& ^" z; f" ?' H: _: d' l
using System.ComponentModel;
! a0 u. ]: [/ y1 C$ W: ?$ o+ husing System.Data;* T/ V6 A3 k' S* L, J
using System.Drawing;! I% o/ d& _# b! S' c4 b( z& O8 M: R
using System.Linq;
: M- ^/ p8 {- `, n$ X) v6 r. k1 \" gusing System.Text;
5 T! Y  D, v# _' }, g" n- Rusing System.Windows.Forms;4 S( [2 v$ _. K8 l) N
public class NXJournal5551 B6 m" |0 n/ o; }$ B( Q6 O" T. D
{/ z: l4 s& s2 q& L4 k3 K
    public static void Main555(Tag[] bj, int fhsl)
( r5 a3 w9 N4 Z3 [- L    {
  }+ E$ ?8 n! R4 b' K        , W4 V- F9 _- h0 l
    Session theSession = Session.GetSession();
6 I) ~  I8 `* r( Y# t- t2 _    Part workPart = theSession.Parts.Work;% W+ q* {9 y- p
    Part displayPart = theSession.Parts.Display;
$ Y( i* ~$ \( _8 e! J: V# b9 }    // ----------------------------------------------
, M+ O/ I9 m% X% T    //   菜单:镶块->曲面->Bounded Plane.... H4 Q  `* R! r( a
    // ----------------------------------------------
4 ?( z/ M% i9 ?# N1 x. |: e, m    NXOpen.Session.UndoMarkId markId1;# v/ G  K0 ?3 X+ W7 h) |. y: {
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");& v: p1 d% E- X1 H6 k! m  m
   
! N; g: ]$ Y/ D7 v, Z% E    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
; Q, L" B+ l: K   
4 [6 d2 n' L& W    if ( !workPart.Preferences.Modeling.GetHistoryMode() )8 l3 t0 O# T/ ^2 d3 y- s. D8 ?: J
    {
$ f3 @# k: p* q7 ^( Z+ h1 Q        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
# ]" F5 i; m* W5 J# _2 ?    }
+ X; |7 r9 a' n9 L; \! r* @! K    : M3 D. E! F8 q) U& G
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;6 U: S8 {5 t  H$ S! ]& o
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
. q% J" C* \( v- z) M& G) h   
. H2 @. u9 N2 C. b" z8 S' c' }    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");( r- v7 t1 J' R* x
   
# V" I6 D& y# E/ V    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
5 }2 \0 [0 N( V# C    : a- M! E( R6 n8 k
    NXOpen.Session.UndoMarkId markId2;
, n2 F5 P# \: v( k, b    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");% r4 y  }& F* [4 M0 o4 C2 x
    " Q- e0 N+ W  j' k1 c
    NXOpen.Session.UndoMarkId markId3;
8 J* w* F0 x' N# l" b    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
/ u7 V% M9 d' u5 ]0 T4 C7 p- S& |    4 W* i+ k" d. [
    Curve[] curves1 = new Curve[fhsl];
  _! M- u- r9 V7 `  f9 y    Line zx = null; ;
* I# R# b) a3 R  p7 f; A    Arc yh = null;, f3 @) L2 ^+ b  y6 a
    int bj001 = 0;/ z, @2 S5 i, V& p
    for (int i = 0; i < fhsl;i++ )& `" G! M; Y; \! Y, i2 {
    {* h2 K! k( L8 `1 M- z
        try4 o9 r& h5 p6 H
        {4 g/ p6 Z1 x; o6 @2 p" B, _
            Arc body2 = null;
3 I; \) R' T, b  q, ~; L/ D            NXObject object0;
5 l' m- y9 M6 W: S9 K            // Tag body_id = NXOpen.Tag.Null;) B* v4 s+ x  O
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.6 ^, r: I8 P; M. a: S
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
5 @- `4 G7 s5 b, n3 {. |            body2 = (Arc)object0;
3 G% b: |' j0 e$ C            curves1[i] = body2;
, I8 G; @- V' R7 G, k5 {4 J            if (i==0)
0 p2 |' c( D. J, M) B            {
$ ?6 d) m# D+ R5 G' e                yh = body2;
& P) D9 j2 z+ n7 b                bj001 = 1;
7 u6 e2 h4 Z& F6 p            }
+ i  p: l8 Y' [+ s& L
7 I% T, l" M5 i( v7 A        }
4 E2 c- }, T" m# @- {        caTCh (System.Exception ex)
+ S9 e- n  v+ [& U0 Z- n9 ~5 i        {        
8 H* K' p6 x' H! y, y0 L  @        }
& c  x8 R" |; O3 y4 d        try
, K, E: F& d, O+ G        {
) U8 [  \% w9 I" z3 B" ^            Line body2 = null;' k" F3 G  J. W3 l
            NXObject object0;
% y+ ]9 ^) s3 f' e0 n* N& ]3 n            // Tag body_id = NXOpen.Tag.Null;
( {2 m7 U) x! {+ J8 Q            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.. k+ ^- X# C. s( b- X( u" _
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
" t+ O8 M" g! k. l            body2 = (Line)object0;& c$ m, H8 y6 U4 l
            curves1[i] = body2;
5 {$ E, ~3 }, M, u; V' a            if (i==0)
( m& d) a* f1 G7 }            {
$ J1 y) t6 R( {+ J                zx = body2;" n. h1 Z$ R. n
                bj001 = 2;
2 b, a, h4 f) t  v; o8 H            }6 p$ t  V  D" _$ Z5 x" R
        }
5 A+ E* I2 t1 D7 l2 j% a        catch (System.Exception ex)1 h% W! e0 O0 Z+ W7 E
        {; h' n! X9 _2 V
         
) ?0 C$ \* {+ D- `        }
0 d4 M7 b( k' Z, |4 C) N, k0 E! f7 g0 L6 @' @( _) U" z
    }
5 n$ l- |) M- R- I( }; w  S
; W* k3 P2 E- m- E# k  \# O//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");8 ?" j! {: m5 q( ~
//     curves1[0] = line1;
3 h4 `: X1 ~/ Q) X( e8 F; q//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
% N& q, Y( M0 [" p//     curves1[1] = arc1;
6 p2 g+ `4 P. D# K0 ?//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
: b" ^" ?3 ?* |- R//     curves1[2] = arc2;- C2 Z- k0 x7 z) X! O* ]- \
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");+ R5 J9 l& O, d7 z
//     curves1[3] = line2;, `, a9 k3 q$ w0 G. h" N
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
" C, T( _7 C1 K9 L//     curves1[4] = arc3;
6 U! D: G$ {0 {# {, V" H; t//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");; G! J( @/ T* R. U
//     curves1[5] = arc4;
" u1 A& f2 G: U    CurveDumbRule curveDumbRule1;' S! R1 O6 Y0 q7 U! G& B$ F
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);! d( j1 T# v% }, O: ^
   
$ a( B4 H1 n5 I    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);3 B$ c% \  A5 |: d0 ?7 `8 D
   
, [" w  O. c' Q# Y. r+ i* `    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];" ~; H9 M$ S/ O; L
    rules1[0] = curveDumbRule1;" H) I0 h/ f2 B) t3 @9 m+ v
    NXObject nullNXObject = null;
& U/ I& y8 S% E: _+ z    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);* S& a4 M2 L8 y& u3 M# E
    if (bj001 == 1)
% [3 G1 _4 ^+ h! x) ?    {
, J  D4 z' J  U/ [1 e        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
) N; ~! l5 O) \9 q( A    }
- k- K9 X4 u: l# [0 o( X4 m    if (bj001 == 2)1 n% A  ~+ I7 N2 _! v- |" Z
    {2 k& I2 R) r* W, K
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
( w2 v$ N1 T1 }9 e, I- ~: C" v    }
2 k/ ]# U) }  b7 M4 J3 ^! q      Z: a4 c' H) a# ~8 C. i% w
    theSession.DeleteUndoMark(markId3, null);
; M- }4 l2 |+ G7 l* r   
  d8 p. M* d& p+ }2 x) f* A& L' u% ]: R    theSession.DeleteUndoMark(markId2, null);
- t& p4 c6 R) g   
) M6 \' b8 t, @    NXOpen.Session.UndoMarkId markId4;! U, y! N0 l/ f1 q+ J* E
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
3 K7 w8 @" {" h/ d7 V7 |* w   
" h  {7 P$ w* `& L3 |0 O8 ^+ k    NXObject nXObject1;
/ O& S' L8 [4 z2 Q8 U1 ^    nXObject1 = boundedPlaneBuilder1.Commit();
  |5 b7 V) [, q4 N2 N   
' Z- k! z  {+ v. o; t   
; P: l2 i4 c0 r; @) p+ w3 V    DisplayModification displayModification1;$ [3 _& k$ S! i8 w- p' N0 ^
    displayModification1 = theSession.DisplayManager.NewDisplayModification();
" y, p" a- [% j7 q   
' g; n/ D: v5 s% j2 R3 O, ]# x    displayModification1.ApplyToAllFaces = false;
" F9 @" ~* {3 }( @" s- u   
6 \2 R0 ?0 `9 L9 y; ]    displayModification1.SetNewGrid(0, 0);
/ d  o+ S/ v/ h   
. ]+ u* I1 V9 b5 {. [2 y    displayModification1.PoleDisplayState = false;8 L. q/ y4 q' u. d
    1 b+ E) O1 }( R) X; I
    displayModification1.KnotDisplayState = false;
+ z% `1 d: k% H( X. g( @, k- }    . @9 Z7 T9 Y% k8 G  L' F
    DisplayableObject[] objects1 = new DisplayableObject[1];
0 I6 c0 w4 y3 q; ?* p( v# C    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
3 P% W- }+ N2 U6 f) ~# D    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
9 y- t2 A& |. K" J+ K    8 Q7 U+ I& N9 Q+ y+ @
        objects1[0] = face1;
/ d/ ^- d+ x' y: Q    displayModification1.Apply(objects1);
# s" q4 M) B: R9 h3 m* K3 d    face1.Color = 32767;6 c2 m1 k) q6 d- r- ]' T7 c2 V
    1 L: x1 C& F& r$ ~1 W( o
    theSession.DeleteUndoMark(markId4, null);
! P7 W% v3 z3 V- Y& |! j   
3 i/ V8 C) F! P5 ^3 V    theSession.SetUndoMarkName(markId1, "Bounded Plane");* W2 p, J$ L( q& G
   
: `. Z! L1 l% z7 l( A& A- q1 k    boundedPlaneBuilder1.Destroy();
+ Y- ^9 U& E7 D# h   
+ u8 V% @5 q7 S3 B' c9 m- D       /* if(fhyi==1){
" n  k) @  ?8 _4 f5 C; |    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}, C# v6 n4 |% |# a# B7 V
    if(fhyi==2){% \4 W+ q4 g% P) J' N( q4 W
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
- T8 F5 C: Z" m3 }, ]- R. Q        */  b; d4 x: H, ^6 o( i; V
    // ----------------------------------------------
# w- @/ l6 h! I% i" c% V8 A" O: l* I1 m    //   菜单:刀具->操作记录->Stop Recording
2 ]# \2 I  U, g. E+ {    // ----------------------------------------------
+ ^$ E7 x7 N# D$ t# z" g* z  ^9 U   
2 o6 m2 I& J, y$ \7 b0 T' Z  }
2 g( I, n4 E) a+ [' }. z- F  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
6 V9 Q- Y: S! R6 k3 D# C}5 V* l0 o- J! k" y0 Z4 e
这是录制有界平面点选封闭曲线产生的日志1 I+ d1 f: p  T7 w3 n- Q& l
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
( B( A7 w  h9 z/ k: | NXObject nXObject1;
6 c6 S) ]8 E) Z- K# Y) R    nXObject1 = boundedPlaneBuilder1.Commit();, e* ~$ x% M& w
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值3 g/ T/ k: N9 e$ ]& i. T/ l
7 N' n9 K. d: `4 k2 z
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了