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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;$ y7 }: Y; D, {
using NXOpen;3 Y) `+ P$ {6 m0 O, J. B
using System.Collections;, D; @8 \% j: a* F" J# G# t
using System.Management;
1 O; j$ A7 Z- u: W  T( p9 xusing System.Management.Instrumentation;
* p2 \* ~6 d3 i9 r1 O! Z3 G* d' o( xusing System.Text.RegularExpressions;3 ~7 G9 X* g" c/ T$ q
using System.IO;
+ h  @4 l/ K( h  yusing System.Collections.Generic;  |$ E0 V  q$ b- C! \; v
using System.ComponentModel;
  a4 F# o, G+ J/ Nusing System.Data;
1 D* _7 n' e9 p3 u/ A3 dusing System.Drawing;* C! _0 o3 J" {$ i- Z
using System.Linq;
+ Z" j3 m0 }* J2 B) ausing System.Text;
5 h( ]8 `  K& Uusing System.Windows.Forms;8 A" V2 s  b' ?  U
public class NXJournal555: i# Y+ ^$ n3 e" i( t
{8 V5 w: T# q9 W" r, I! p" a- [
    public static void Main555(Tag[] bj, int fhsl). R$ r& I0 s% ]# m) `
    {
5 v- U7 M0 A6 D1 |; d- {# a4 l% l! ?3 c        
  I) }: {& M, O& b% ^* \$ v9 k    Session theSession = Session.GetSession();
7 L( o+ b9 e1 T! {8 Z8 o( Q$ o    Part workPart = theSession.Parts.Work;
6 D/ r  N3 _# G5 Q1 v( F- G    Part displayPart = theSession.Parts.Display;( m" M& i2 K% z" g! ]4 q/ q: X
    // ----------------------------------------------
# T. D3 N6 k5 X" L+ v4 ]    //   菜单:镶块->曲面->Bounded Plane...
  S% j9 o; E4 B7 G7 G1 M6 S! R    // ----------------------------------------------
5 |# N+ X; k6 U5 M" F+ O    NXOpen.Session.UndoMarkId markId1;
$ l( C1 y5 _" f1 w    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");; {2 ]6 r. w1 w. _! k7 E" F
   
7 `* u; C# Z- E7 c/ _. \0 z( `    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;
# r, J# q. v$ a' P    % m# O* @0 e6 g, [
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
' L, y" H0 m* G0 M" P0 O% L    {( q) ~# a" V2 Y1 H: K& }  j* `
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
& f& n' n; ~5 ?( \( O  U    }9 A1 c& O- y! q3 I8 m
    0 J1 m( [* @, X7 P; H& R5 T/ B
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
8 K. z! j8 Q: U' B. E1 e6 C6 X    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);: f& z% j: o" R, v1 h* f" ]+ U
   
& p+ U' q* T; P2 W    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");' ?% g  [& H/ c
   
* Z) b8 @1 V" N$ o; l$ c! U8 a    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
* t9 J: V! H. r# j   
: ^9 M  L& R# y0 u    NXOpen.Session.UndoMarkId markId2;
$ P$ j* M9 |4 E* M( {) j/ A) F    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");6 w: \- [/ ^# `. S, {! q1 W
   
3 T7 K. B& H! W( X    NXOpen.Session.UndoMarkId markId3;9 |. z8 H1 R) N8 I& n
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);) f! l3 b0 a2 r- }4 w
    ' z7 S1 G4 a$ Z1 b) L
    Curve[] curves1 = new Curve[fhsl];
/ Y( u" M2 q- N' d/ R/ M    Line zx = null; ;* K5 x* D( _9 t
    Arc yh = null;
+ ?, h4 J. c: N% X- |    int bj001 = 0;
4 u& Y/ V& h7 Y% H6 S2 d1 N    for (int i = 0; i < fhsl;i++ )( i; Q* L7 s& B3 [+ ~- @; d2 _
    {
# P# b4 Q2 Y* L        try
& v/ Y5 x  O/ G8 s/ i1 l9 o# K        {
0 v, x# u& W  X# h. t4 T" Y$ X            Arc body2 = null;/ V  e9 F" O4 i5 }: |" H) A
            NXObject object0;
: y. _. v2 q" N0 R            // Tag body_id = NXOpen.Tag.Null;
4 m. x: p. c) A9 T            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
* e8 R8 f- o1 N$ Y            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。, \7 Q; X+ u9 ~% T$ I  o
            body2 = (Arc)object0;* o* d0 j% `& {# ~: m- p
            curves1[i] = body2;: G+ H* w0 y$ ?( H, Z  D9 S
            if (i==0)1 _4 G2 k3 M5 B. L3 j: A6 e
            {
, [4 j! `; L0 ?& v) t. Y2 v                yh = body2;5 ]+ o( v9 J1 Y  m% @# _: p
                bj001 = 1;
' V' O: M. J0 h/ Z            }) A! g) u4 O0 u3 y; v$ a! U

% w3 ^. j" F9 R        }
) H) j; R3 e6 d( S        caTCh (System.Exception ex)
+ d9 R* _  e! O+ O1 {1 A1 \  |        {        $ M/ z" `! [- A+ ^$ |2 g% }
        }
& T; I* ?2 B* l8 N- }, y7 H        try
" C1 O+ W1 H3 j5 W" K7 P  s; ~4 ]        {8 Z! ]4 U( ~) j9 S
            Line body2 = null;
$ b* Y% W- ~* `- L# @6 q            NXObject object0;
7 R$ [- L9 b. \6 n2 o            // Tag body_id = NXOpen.Tag.Null;
1 Q' _! D* A7 u3 N, J; ~* {! V            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
! B. i4 D* o7 W. s            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。* [: B4 R3 n2 Y
            body2 = (Line)object0;
. N; ]; e+ {, _$ S            curves1[i] = body2;0 u+ @/ `. [/ |
            if (i==0)
  o& ~  k8 Y  z$ D            {+ F7 D( t" V: W2 Y4 ^8 |0 m# A
                zx = body2;1 N7 B+ q+ Q0 }' A! [, s& C
                bj001 = 2;2 E. j7 H7 l- q- J; P3 k
            }7 S. U* C: d1 k: ^
        }, p0 N1 i2 g! \  ]  k
        catch (System.Exception ex)/ x" O- ^. t) T) X  S2 ^
        {2 m; ]. H9 Y2 F
         
0 I( _$ d. n9 u        }: [" R0 ~8 j* v$ X
  d$ D7 U2 Q  K
    }
7 T6 q- r# L: R6 A4 E  @3 @) U7 y% M" v1 Y8 M
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");, u0 a" ?! t, w4 u/ h* X0 q
//     curves1[0] = line1;6 c. _1 T* @/ b; I: [' D$ }
//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
! j& @+ ]" U1 o& a: W//     curves1[1] = arc1;
6 p5 V" T. s3 {0 h9 w) E//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
- p( t6 f, \& ~; {& j//     curves1[2] = arc2;
1 A9 j( E1 X( B4 T* ?//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");- }- {  q. S; S# L- A4 j
//     curves1[3] = line2;2 u# V( T! V( N: \6 u9 [
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
. {3 W* V8 t% t7 e' g  s5 W//     curves1[4] = arc3;" d, k0 M9 U! d! J& l! p
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
" H/ ]! y& n7 R" v, T# x//     curves1[5] = arc4;/ j3 o; D  U* s' `/ A  r- y" Y
    CurveDumbRule curveDumbRule1;
2 A* [: z( ~4 |3 W- ]    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);6 K5 w: n( d$ t/ F+ K
    / u2 N( T" p1 V
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);6 s, r. M& i) R/ s. T/ f
   
; ]( J3 e1 x+ x3 _/ W    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];* X+ Q# w0 Y! {( U* z
    rules1[0] = curveDumbRule1;6 e" J$ R/ V# a$ O4 L0 B8 X& v
    NXObject nullNXObject = null;; t  ]$ p# r$ o0 J' _
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);
+ N& c1 s* \# d2 M# ~) [8 G+ s6 ~    if (bj001 == 1)
) L9 W5 h- f. ~) L! Z    {( p/ [3 k: R/ `8 G& @4 i- F- N- x+ F
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
# Z% X# v3 L1 V2 x    }
, g- W5 f! j% E' @# z' W    if (bj001 == 2)
1 F; m8 c; o+ \8 G1 P7 X    {. c" m+ K* t4 [; `7 X/ u7 I
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);) T# |: Q1 T: T8 s8 l1 F( }
    }
$ l* n- A$ a7 ^2 p0 c( G  b    2 @; Z5 K! J4 H1 }/ P
    theSession.DeleteUndoMark(markId3, null);
- D, a% f# {7 i# \% v3 q4 k9 k. G& V   
' D( l* |, u, U! |" Y$ i; w% Y! C    theSession.DeleteUndoMark(markId2, null);
) Y, c' n, r6 v: O# m$ x' U! n$ z! `   
3 H5 K! n- h7 X. ?: q    NXOpen.Session.UndoMarkId markId4;
# _0 J; ~" t: X    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
" Q- P" [- b8 g8 L$ i    ; Y9 J+ K8 L% m; y; K- |2 b
    NXObject nXObject1;2 z  W, ^8 @; m& T  D
    nXObject1 = boundedPlaneBuilder1.Commit();' w, i+ N; X, L
    / m+ r  b2 \/ U* l1 _
    : @6 K" J5 R, q2 ?- X, P# v5 \
    DisplayModification displayModification1;; K5 _1 M# e' t# G7 F% }
    displayModification1 = theSession.DisplayManager.NewDisplayModification();2 ^$ X' @' ]( S; X) E( o7 O
    / F2 t9 R1 }/ H; c; `! ?
    displayModification1.ApplyToAllFaces = false;. j3 u$ H1 K8 J" c1 p  E9 H
   
3 D; `: Y( T4 E/ @/ ~0 z& s    displayModification1.SetNewGrid(0, 0);% r. h) z5 N  w/ P  m% m, z
   
. m! b9 C3 z7 r# O& M    displayModification1.PoleDisplayState = false;
9 J, _3 F  b& I- j    % b) M5 G0 j$ _2 _% V3 L
    displayModification1.KnotDisplayState = false;
9 j2 q  y1 c, }7 [6 u$ m   
6 F; w. t6 R# q    DisplayableObject[] objects1 = new DisplayableObject[1];8 v# K. t9 M& H7 u
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;2 W9 X/ x0 {+ \- y
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");% V3 H3 Q1 N* S6 c' T/ ]
   
" ^0 r( R4 z) g/ f+ o( {- [  @        objects1[0] = face1;) W8 f8 F4 m* B4 s2 n
    displayModification1.Apply(objects1);8 S5 U! X% H) U1 h! g
    face1.Color = 32767;! k3 n" L4 U% Q$ ]
   
+ @8 }- ?% ?3 H$ a+ L9 \* e    theSession.DeleteUndoMark(markId4, null);8 r0 G2 h% v4 i; }7 y5 k4 O
   
. w( I& ?* A: G; c    theSession.SetUndoMarkName(markId1, "Bounded Plane");4 N, x4 u; u& f% {7 z0 W0 {
   
( U' \$ ]* L( U# h    boundedPlaneBuilder1.Destroy();- z# H  p- |& [& w$ e, }
   
: V% D$ A' f4 m( M       /* if(fhyi==1){
- |% ]* D+ w1 e! V8 |    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
% W* _# T1 L3 L# h' c    if(fhyi==2){
: N2 j+ L4 w% {+ i, N- n    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
# [6 f$ E! b7 P( y+ x) R# ~        */! g' }' S$ p5 d. Q/ e
    // ----------------------------------------------
9 @" i" \% W: F4 y    //   菜单:刀具->操作记录->Stop Recording
6 U0 g3 F% F; W# q: {$ K    // ----------------------------------------------5 I2 @1 X$ P$ J9 {
    # o, w: _. ]5 p" a/ q& e
  }
) d3 ^: ^; O/ E$ [6 q6 H8 s) O$ l  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }* v" |( }9 s; @4 d9 z1 ?5 l4 i
}  m* x9 X* r8 S/ X. G* p7 E
这是录制有界平面点选封闭曲线产生的日志
4 d8 N. l7 I# m* r我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 7 Z! A. l8 J& x  |- ~' H% t8 O7 J
NXObject nXObject1;5 |8 q( i. k; x, S* d. p# T
    nXObject1 = boundedPlaneBuilder1.Commit();
* T% a' K5 B; i( j& M- k0 [  K. d但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
% F, Y. R6 x, J" E+ |. v; [  O8 d" e3 L* m$ Z9 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二次开发专题模块培训报名开始啦

    我知道了