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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;0 b, _, X8 g7 u
using NXOpen;
$ i: v7 B. L% P$ P: D9 tusing System.Collections;. G% b1 h# ^. N% G5 c
using System.Management;7 l! T3 r% X0 P+ j7 p
using System.Management.Instrumentation;
  k9 v; a; i+ W% A7 B$ M6 u. o6 b1 Qusing System.Text.RegularExpressions;" l; G6 ]. N, G
using System.IO;; e' b/ o" J6 i! K) ~9 y
using System.Collections.Generic;
- l7 x4 N4 k/ K( Z( uusing System.ComponentModel;
  F' g1 x3 V! ~  l8 X/ kusing System.Data;5 [; h7 h* Z$ ]% Y3 T- w
using System.Drawing;2 j" ^  L/ V* z& Q; l4 ]
using System.Linq;
, C% P% v3 I" u/ I# |' `$ y: }$ Qusing System.Text;
+ d+ `" e( t+ ]- f  P% d( {using System.Windows.Forms;: J5 C7 `$ H* m
public class NXJournal555
$ R8 H6 W" Z) D3 l% g{9 o, F4 V; r4 E
    public static void Main555(Tag[] bj, int fhsl)
' \9 w5 m1 G1 E/ H4 }. z% N    {% X" }  u) g7 z9 T/ X
        / z- l7 ^0 P9 I! E
    Session theSession = Session.GetSession();% R0 D$ K: Q( K$ x3 ~5 E
    Part workPart = theSession.Parts.Work;5 o9 Y  ?  k9 w/ ]9 c  j
    Part displayPart = theSession.Parts.Display;) J' j  v, h( x% x
    // ----------------------------------------------
! m2 I% q1 g# s6 x1 R    //   菜单:镶块->曲面->Bounded Plane...
. R) T3 ^5 K3 c% @( N' j: z/ a    // ----------------------------------------------" x2 D3 R( g% s0 S# S( W! M) U
    NXOpen.Session.UndoMarkId markId1;8 [& B3 [, L' [% X* Q3 V0 g
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");6 T" g$ H3 V- y2 K
   
; v6 {' P  H6 {: b    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;* V' q/ }8 s. f1 r, J4 t5 J. O0 c5 X
   
# `3 t, c6 i9 V% j! M    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
7 R) s' ^: J& P8 N    {) ]' M( Y9 b* g) O0 g
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
; }* L. G" s: ]    }5 u$ a+ p, m1 D/ r/ L+ A! S! N
   
  ?# B5 V4 }! I. M# C    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;/ a. r) L: i/ m! l  Q
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
0 M* u1 i3 Y: c* g  s$ u1 d) C   
5 v, s; G  K% O: v) k3 ~( u    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");# t3 L! m3 a7 @% C1 O4 W
    1 P' A) }1 q4 j! u3 \
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
) V  _" e) B+ y$ S. h  k  R   
+ t+ A% y. @9 ]1 [1 I( M: K    NXOpen.Session.UndoMarkId markId2;
' o7 `: g+ H5 _3 ^+ n2 @    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
% y9 ?8 N& G) D' ?9 x2 V' p    3 t& j# D0 k3 D& D$ L
    NXOpen.Session.UndoMarkId markId3;, O" u6 A2 O/ @! i: [) j2 L
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);! g# \9 o5 A3 [& K3 k6 r9 _
    1 Y5 w' b; Z0 O8 n/ `# ]- a8 @( {. ]8 h: v
    Curve[] curves1 = new Curve[fhsl];
- v+ x, F. l3 a    Line zx = null; ;
& ~. q( k; ?0 |* t; J    Arc yh = null;7 Q# @& K  Q) T" a2 V1 ^' X
    int bj001 = 0;9 k% t: J0 g3 i/ v5 K- J, j
    for (int i = 0; i < fhsl;i++ )0 R, N; U1 U$ [% R% x( x  t* U/ m# n
    {: a/ ?2 w0 N# [  `* Y
        try3 c% D. J' A$ O/ _0 n( l
        {
. T+ R* B$ L6 ?! o            Arc body2 = null;
* g1 O- e6 G+ X0 M% w' c            NXObject object0;( Q; |5 M, i& ~# p
            // Tag body_id = NXOpen.Tag.Null;
) |( E- U( a% k8 g* Q            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
4 i- C1 i: z3 q5 |$ z            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
0 x6 O9 \* }- }            body2 = (Arc)object0;
. |* V, v0 V, C" n            curves1[i] = body2;
8 m4 P  H9 m7 H+ u8 j7 u) U            if (i==0)
. L5 \- E# o4 A2 z. Y' j            {
+ ?  E2 f" q7 d+ ~+ B                yh = body2;
3 |) p8 D7 D; M                bj001 = 1;
3 e% D5 y, }  F9 n& v% ~            }2 t# Q; D. y) C8 s$ ^2 c3 p/ X7 d1 B! }
& X+ _& e. O, d/ V' u6 Z
        }4 Q* T) e! K1 T6 ?3 i8 Z  e
        caTCh (System.Exception ex)' \9 s. r9 E1 O$ T' i
        {        2 n. v  S* J$ O
        }
6 j% r& c. M1 ]5 g  k        try
% A* i- G: g* H& W        {) f" W  x' \( S, K8 z
            Line body2 = null;
' O) C- @; X0 j* W8 M4 ]6 g2 h! A            NXObject object0;
6 Q6 C2 e( A8 B0 ~            // Tag body_id = NXOpen.Tag.Null;
3 \5 a# i6 P# N* M5 N: r' e            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
) D* X4 ^5 P  J) O3 b+ I            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
3 i% I, V: S$ Q/ ?2 _            body2 = (Line)object0;
% P! f% H# s" h* t/ y/ x# j            curves1[i] = body2;' ^& a" k- `7 Z' `1 k6 l# y
            if (i==0)$ e( C0 ~( z3 L1 {* O
            {8 U) M$ T8 ^7 B% i
                zx = body2;* M* s! z+ R+ h& `' W: ]+ N2 t0 R- d
                bj001 = 2;
; Q  h; }% \4 E9 i+ S            }
& R! w" U, S) B& z, N        }
+ V  N) Y  T$ g1 H) D/ W; s1 t! y7 H: S; x        catch (System.Exception ex)
- P- X1 U: z; E2 v        {- |; J" @! q" J# w
         
; O+ ?/ @: X  @. w  X        }
, S) y/ J  p+ I' [! C$ X5 y7 a# W$ m1 f3 }9 h% P7 z8 z
    }* @- m. r$ s# q0 r9 i3 u" @, q
5 a6 w' X  O* _5 o7 f
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");+ ?% s% B' ]  q3 ~5 s7 L
//     curves1[0] = line1;
! B5 u  ^6 a$ b* r% a//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
/ R( x/ P% T' o9 s//     curves1[1] = arc1;
* @1 Z7 V4 D' n( _3 }2 y//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");) g! n: }& o# f9 k7 t
//     curves1[2] = arc2;$ z* L) {# B/ e* F
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
& Z5 F) l9 Z5 }% K* _//     curves1[3] = line2;
6 z" N" p/ r- r# L//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
. q( K! ?8 b/ W! d0 L//     curves1[4] = arc3;
3 c0 D/ p% g( _% T//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");9 S& P" S4 S, B$ |) G+ D8 ^
//     curves1[5] = arc4;: i; j! M3 j. D* T& v4 v9 I
    CurveDumbRule curveDumbRule1;7 b- ?3 a  H% y. [9 I# u4 Q( r$ H
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);# C4 \& C6 M' H- H2 ~& O
    % B$ [/ H  h# j/ N8 `' |) i6 {
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);% V2 a! \# Y, [, Q& R9 c6 H- M
    9 A6 d! z7 V& p  h$ P8 c4 a
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
- R% c5 c0 w( f' @3 K    rules1[0] = curveDumbRule1;
  M* n& @% J4 a6 j$ Z& e    NXObject nullNXObject = null;- @! z9 i. t# G0 C- k
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);* W. s/ v* ~: K" o8 s
    if (bj001 == 1)  E! A( D6 D1 ^: U3 \8 `
    {" F: y4 J  }# U( o& p
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
6 p, r& c  N8 T7 a; F    }1 Z' m' z: |. F" i" ?, C
    if (bj001 == 2). c5 _! ~7 Z( X6 f& n" ?& c
    {
3 \5 o6 r, u4 r& x9 `3 E* O        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);) Y- D. |/ x1 R( E$ F# g
    }( Y5 `6 k- g" K$ y
    * |" V3 O5 g# U- m* P4 n( s% y
    theSession.DeleteUndoMark(markId3, null);6 j# t* x- L# t! Q
   
# v4 i/ E4 Q1 j; }    theSession.DeleteUndoMark(markId2, null);* B# S& K4 S' H% e1 e# {- F, X9 @9 _
   
2 h5 ^  U8 d( s  b- d    NXOpen.Session.UndoMarkId markId4;* u& b; f  q  A
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
$ D+ E; U, e- |, c6 ^1 [) r% K* ^    1 x2 [  P- _% P' ?9 O3 i
    NXObject nXObject1;
' M/ F- v, |3 L0 Q, L    nXObject1 = boundedPlaneBuilder1.Commit();, W- V9 Z$ c2 m3 _1 I- T
    3 k" n3 W/ V0 P' i9 `% D
   
& ]3 i, X& O, I    DisplayModification displayModification1;8 @$ n% ~0 m6 \) ?) ~* s
    displayModification1 = theSession.DisplayManager.NewDisplayModification();% t5 e! G( F4 h5 {
    5 J, L2 _# A# t- F( `0 @
    displayModification1.ApplyToAllFaces = false;0 J- M7 E- Y2 C: c5 A
    ) }1 J# Q8 C* v* ~3 x) e
    displayModification1.SetNewGrid(0, 0);( [* t) w' u5 N9 j8 S
   
. x6 h7 k4 {7 m    displayModification1.PoleDisplayState = false;6 }) H. \* E4 g% P' P( V
   
5 _+ N# h+ S! _- p3 p    displayModification1.KnotDisplayState = false;; r% l, m/ j$ u2 u% X
   
/ L% Z; y; U2 X/ ^) {    DisplayableObject[] objects1 = new DisplayableObject[1];
& C5 v; s  l; t) V4 i0 l/ b    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
  `5 k, u( p2 W9 Y* `- ~+ w% H4 N- v    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
# D9 l. B& J* c& F: Y   
+ g8 l$ I9 h6 t2 m7 b7 H6 H0 f        objects1[0] = face1;
2 ~6 I( F9 \6 E" O1 ^    displayModification1.Apply(objects1);5 i  K3 d' j9 N/ }5 c3 S, k$ c& v
    face1.Color = 32767;0 @1 G& H. N4 }; I. E+ ~+ i. k& S
   
, Q) _3 G; P6 ^( T) H. D    theSession.DeleteUndoMark(markId4, null);
' h) R8 Q7 [  j. Z" V   
8 f% {8 a3 c: E( A0 z7 m, `    theSession.SetUndoMarkName(markId1, "Bounded Plane");
4 d2 O! b' x( I% ~    1 A. R' k: K4 M4 k
    boundedPlaneBuilder1.Destroy();
1 |- a0 D0 l9 O/ p1 X$ Z! m    7 p$ s4 I, S5 A' E% W2 K
       /* if(fhyi==1){
0 ^% u5 `8 z. Q8 b* E    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
: \( d, N: Y3 x6 T    if(fhyi==2){3 x) Q$ q* j2 O: N1 `+ C3 g$ ?# K
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}7 h3 O- Y% S$ x4 y+ g
        */9 S' d9 _5 c1 {
    // ----------------------------------------------& o3 {" [% K  D$ |& @
    //   菜单:刀具->操作记录->Stop Recording
; A0 d! ?. y( y. o' }    // ----------------------------------------------$ }# r: ^# Q8 S/ b0 D2 |) ?( S4 \
    ( }) A. P) p2 L/ v
  }" V# P& B  _3 ?3 T/ N# g$ J5 b
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }3 @2 y. n$ Q+ I# s' E: ~
}
! c: L) F0 Q' v这是录制有界平面点选封闭曲线产生的日志# D  R* i7 _; o+ {, r4 n7 j# Y
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 9 u" n8 w, Z. l
NXObject nXObject1;! u! ^; Q+ P( C1 ~
    nXObject1 = boundedPlaneBuilder1.Commit();/ B0 t. O5 x! {1 ^4 r5 U: p
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值. e+ _* ~7 e9 T( \% l: M0 i
+ n( q+ }; F( k# P0 w; k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了