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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
6 N- \' U7 X! ~using NXOpen;
5 b4 D8 U- F) {using System.Collections;
* i7 K. A6 n8 N5 m: Y- y2 cusing System.Management;
( E: a8 z: _% i; Nusing System.Management.Instrumentation;
( y8 c# X+ y- `3 l* Zusing System.Text.RegularExpressions;' Y. C0 z. Q) |6 P' k8 z1 }
using System.IO;$ _3 g0 v. r3 }! N" `) m
using System.Collections.Generic;
/ F# n+ `- k1 ^% j8 pusing System.ComponentModel;
/ E5 \+ d) c1 J- ^using System.Data;7 w  J! q! A3 a8 s; ?: t
using System.Drawing;% r0 r$ `# q' e  _( S
using System.Linq;. C1 \* e9 T0 r7 P8 C% X
using System.Text;
  i7 i0 u9 ^- i8 I  K4 E' \* Eusing System.Windows.Forms;' w. ~' U8 M; h0 A/ H  _+ u
public class NXJournal555
" b1 |: a! D& O- U! \3 u{  O3 K" y; L8 h2 R2 ^
    public static void Main555(Tag[] bj, int fhsl)$ s" ]3 R6 \' Z
    {
6 m3 O" h0 y& J# Z5 r# a        
8 ^0 ~6 q0 G3 z" I    Session theSession = Session.GetSession();: @+ p0 K& Y4 N5 R( g
    Part workPart = theSession.Parts.Work;3 i$ B4 V5 B% Y' \4 P( P
    Part displayPart = theSession.Parts.Display;
. m, f6 L  i9 ]    // ----------------------------------------------
2 ^! j1 I3 R8 c( Y2 V. ^7 v1 R    //   菜单:镶块->曲面->Bounded Plane...
6 V- T- T- r8 L$ z* g, n% F2 m    // ----------------------------------------------5 ?; ^1 Z7 E- D+ i! t
    NXOpen.Session.UndoMarkId markId1;9 g5 R" H7 w) q9 [5 I
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
; l: f, K' h% [( m    , K- V9 p. g. {/ Y1 p; u# z3 \
    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;2 g/ F5 L1 n2 Z8 J$ b
    * [0 ~4 a+ a/ I- c9 o
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
6 n" ^3 u; P+ T8 B' a  A/ i    {
5 u# i- A! W! m$ e        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
- ?9 X# Z0 _, f& z# k( a8 y/ t    }5 I  T8 \) `! I2 m
   
; r6 O7 l" H" n    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
$ g: k2 F1 y4 e9 B4 C* f    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
7 ]0 K/ O4 c1 d6 l5 A6 b    " [2 T, ~. M8 w* O8 _
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");( R. }) O2 B- q
   
# H: G# y( X$ h. z, C; J! F    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
# [& e6 E* l: d. E% d+ C, G    ; v: o* [7 ]: T- P
    NXOpen.Session.UndoMarkId markId2;2 O+ c! C( L: I5 m, U& @, m* ~8 g8 Q
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");6 V3 b7 F  D; x
    1 g, R$ G, M; f& W
    NXOpen.Session.UndoMarkId markId3;
6 ?6 j- c8 W1 \2 b) K; x3 }    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
! @( F+ ~% g0 y4 F% J   
. w  `3 Z" O8 o7 c& B    Curve[] curves1 = new Curve[fhsl];
; B3 w. t3 ~8 s/ t3 [6 `    Line zx = null; ;4 s# |8 S, q4 P4 H! y
    Arc yh = null;
" b" ?. V4 S: h    int bj001 = 0;; L( Y/ }2 [6 @3 Q3 L
    for (int i = 0; i < fhsl;i++ )% q- u+ o+ w; i8 K( C; @
    {  e- \( @! N# e" G
        try+ Z6 g, {$ J, |5 d; w
        {
" t$ E$ G0 T9 w; M& z5 t            Arc body2 = null;
) Y2 H5 C) _5 W( P! R& c            NXObject object0;; w5 ]" w8 W0 y) Q5 v  I
            // Tag body_id = NXOpen.Tag.Null;
- x& w! z- J# S( c  H            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
3 g" }/ A6 P3 F0 E/ E4 p3 i            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。, L1 g" ^* m. W- ]/ {5 X
            body2 = (Arc)object0;
5 P# w% o9 Q( |4 B4 Z/ t) X            curves1[i] = body2;7 }# q; l) H% p: c, X
            if (i==0)
/ X: _5 r: L8 ^4 s: u) q/ \- U2 c            {
5 n$ O( Y0 s8 Y: I2 a                yh = body2;
) V! f4 ~5 J- g! h  U; m; @7 S                bj001 = 1;. k/ m1 y3 R# @/ T( |0 n) ^. l* s! a- y
            }" H& o4 ^6 Z4 C: l7 [- _

+ z' x( J6 N- @* g4 Z        }
1 E. F" P7 b1 `: H0 W        caTCh (System.Exception ex)
4 X- c) N) P, }5 k9 Y: A! a        {        
. U. j' c# T; l$ t. x. J( m        }' l3 f( v4 b$ R! n* e
        try
* _' ?: T- I9 j        {
$ d) p* u/ e8 l. q8 {* l            Line body2 = null;
! A5 n6 F% N9 j( D  a            NXObject object0;2 a0 L% c% h' E) m' Q; q
            // Tag body_id = NXOpen.Tag.Null;
4 K' t- f# d' ]+ V  |1 \1 m            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.0 C3 ?1 w1 Z& f" Q9 y
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。& K1 O" M4 J: b. [
            body2 = (Line)object0;
6 e- a6 l( e, f& t0 P            curves1[i] = body2;
  X! P6 F2 f/ _; Q' J            if (i==0)
2 }! m/ @( }1 y8 q            {3 d. N5 l# L# g0 C2 X; O+ R! W
                zx = body2;
( Z+ N) c* O4 W* g9 b                bj001 = 2;* V' n4 b1 \8 w3 j2 g
            }5 b2 G0 Y3 U6 Q2 j4 M
        }
8 t' B4 P+ A" g* J8 j4 ?9 b. x        catch (System.Exception ex)8 C0 `& Y( T0 I% C9 ^* B
        {
; B1 b) U* r, R: |6 e' _( o         1 [8 I( T  J+ D5 S' }
        }8 H1 |  K5 C: Y, X/ r

7 S  p, A  d( L    }6 ^% W) ?5 b7 |9 n; x
0 y5 f  K, Y9 X9 I0 g% `, @
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
/ n$ C% b$ Z# y//     curves1[0] = line1;
/ P% z  R- D0 ]1 h5 ]//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");) O& F, e$ i; V$ `3 T4 y
//     curves1[1] = arc1;. `& D, t4 Q* t
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");- D8 d8 S; ?  |' a& [# G" _
//     curves1[2] = arc2;
! I+ t1 V2 T" }. ~1 T  Y//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
* Y4 ]  B; ?* |//     curves1[3] = line2;
6 J" N! C6 s) T( h: g6 t5 u. |. `//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
2 ]$ E+ T* ^7 w* W* Z1 T5 X# u//     curves1[4] = arc3;. h+ J4 k! \* c4 ^- T
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
& j, G/ ]4 ~/ f* C. z//     curves1[5] = arc4;
& Z4 a; {/ x1 r8 _6 q' g% W    CurveDumbRule curveDumbRule1;0 j7 o9 `3 E# d/ Q) I0 \" t( P' m7 n8 t
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);1 P- h0 q% z2 [- {) s- B5 M: E5 F
   
/ V' d: k& V8 z1 K    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
9 D: j, f! E8 r4 {! r3 Z9 f    1 n* P! Y2 I: k# C: x  v
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
% |# t) `! }/ B+ J" \: G' R' C    rules1[0] = curveDumbRule1;% ~# s. v0 c0 I0 k
    NXObject nullNXObject = null;
4 V  {9 ?2 p2 i0 h4 L  H    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);- Q8 V. E9 [  v7 ]
    if (bj001 == 1)
5 ^$ X/ c" D* Z6 L    {5 J9 C0 x: W4 A% _/ s% _3 |
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
# A4 X2 \# }$ w  ]9 Y5 D3 h    }' b# V9 O- k2 A4 ?% V1 M
    if (bj001 == 2)
0 c! D" Y5 |# I* K    {2 T  i* ^3 b, @- u7 T0 G5 m
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);( N5 _4 q% \( \9 ~
    }
7 M  u2 X, v7 C4 t% ]   
' u$ [+ a" U" f1 D5 {    theSession.DeleteUndoMark(markId3, null);
% z2 i# |4 R: }5 A/ }    " i# U( `/ }5 F2 a8 o
    theSession.DeleteUndoMark(markId2, null);
5 ]0 O! i7 V! l2 s   
2 S6 G" X" x- t/ }& n    NXOpen.Session.UndoMarkId markId4;
' O0 [% B. T- @2 _    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
! u5 @& ]: b' N  p    , ]+ T+ M+ G+ T
    NXObject nXObject1;
" F6 `; h" n0 M9 Z$ s( j    nXObject1 = boundedPlaneBuilder1.Commit();
) b& N" f( D1 q9 E* T% a    7 n3 W8 C9 A8 ]0 \8 G% \
    8 D" q5 y* Y/ R# {6 q
    DisplayModification displayModification1;( a5 K  E" p: G) a5 o6 L% u
    displayModification1 = theSession.DisplayManager.NewDisplayModification();) P" g* B4 }2 U% u/ s
   
0 ^  G$ G; |/ f- F    displayModification1.ApplyToAllFaces = false;
6 W1 g- [9 @% a- I3 x9 X    ( M5 C. {5 E0 r, {) n
    displayModification1.SetNewGrid(0, 0);
8 l6 N. b  [  K& _* w   
* k% @0 T0 S! w$ h, ^1 K5 F    displayModification1.PoleDisplayState = false;) a- O0 m0 `* I9 b: J
    4 L& A$ |, _% @$ W$ b. Z
    displayModification1.KnotDisplayState = false;
1 f2 D: J: v) p9 [. _0 `   
# E5 o* e8 y1 w: q. v% K8 n+ G$ d    DisplayableObject[] objects1 = new DisplayableObject[1];
, \, n, f0 {, H    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
- j' {$ B* j2 N0 X9 a- C. Z    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");, |0 v; l. E  J9 n/ Q% p6 W1 a
   
% D; K! j3 F) U0 ^+ C2 P        objects1[0] = face1;
5 D9 `' |; u: v8 x9 m& d    displayModification1.Apply(objects1);# K4 B' b9 T3 i+ W! i
    face1.Color = 32767;! S8 A. r, x/ S1 [; s& g
   
7 g6 e. R# i8 A    theSession.DeleteUndoMark(markId4, null);
( N: M- O1 E% @1 h, [+ K  M# x5 j   
; n: G; ?; \$ }) f0 Z" A: E/ z% j    theSession.SetUndoMarkName(markId1, "Bounded Plane");1 @* G! N1 i; C4 {0 r' {3 L/ z' G, s
   
( ]  Q) L- l! Z+ i( ?* T    boundedPlaneBuilder1.Destroy();+ A8 Z( j- ^0 `$ M7 t& s
   
. [  R/ \8 Y; @9 ~( V  o2 u+ l       /* if(fhyi==1){
8 G% C5 Z. r, |    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
4 @6 X/ e! y+ z  c( @2 `0 ]    if(fhyi==2){& D" u9 {. N4 y
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
4 n. o! |& i* M0 y        */
2 ~4 q; {3 e' t, c2 u# H  A    // ----------------------------------------------8 b0 u0 ^0 O6 ?5 ?- X2 R7 N7 e/ j
    //   菜单:刀具->操作记录->Stop Recording
" [( S1 y: A% _2 b    // ----------------------------------------------7 _3 [7 J* X+ A. T+ J/ }3 x$ |7 |  O
   
" ]) y, f' ^) Y$ s2 \. K  @  }
3 f* Z' m& q& T7 o  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }" @2 U, E9 m) P/ O
}8 v  `8 _+ V8 C, ~- ^9 F
这是录制有界平面点选封闭曲线产生的日志. F2 r! d0 U7 O+ C) p
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 6 C& p# Y/ a" S$ J, e% F+ _+ J
NXObject nXObject1;' Y, L* B! N5 _( F! H) V9 |1 b3 P# d2 Z
    nXObject1 = boundedPlaneBuilder1.Commit();" Q5 c' W; s, ^3 E
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值( e4 Y; C5 G. N* h' O; G: W" f
2 \0 i# a4 V, K4 j( X
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了