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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
- y- ]9 G5 z  ^7 D" h/ musing NXOpen;7 t+ H( M! X* n2 k: }
using System.Collections;7 S% g9 E+ h( x, h9 O
using System.Management;6 U; y9 u& T, {
using System.Management.Instrumentation;# ]; f& F: t. X. M7 `4 r8 S7 A# w$ o
using System.Text.RegularExpressions;
1 {) P% \0 G* b3 O2 G) b! o4 Xusing System.IO;7 ~% z7 U; C8 [
using System.Collections.Generic;
6 j) f" g5 ]4 B, K" A& @) ]using System.ComponentModel;3 S& w, }5 U9 F, ?' |/ |9 h) G
using System.Data;- `) w, {- _. L. c/ Y6 x
using System.Drawing;
  ]: E+ [# H' E& `. Gusing System.Linq;  U. i. H& g. t7 I# {
using System.Text;( Z2 s4 x  ^# G' ^+ l" `
using System.Windows.Forms;  H2 J% l: \4 ^+ F& z! s, K1 r
public class NXJournal555' J1 B3 Y) m: t
{/ W7 i. W9 m+ ?9 e3 [
    public static void Main555(Tag[] bj, int fhsl)
3 a$ O. L7 |' @1 e$ L    {
  I+ t5 r- v1 g4 [! c% [4 l5 O        ; U: H- o6 b2 H; ~1 J; _
    Session theSession = Session.GetSession();! ~1 K% \6 X/ F, `  m7 g2 V0 E
    Part workPart = theSession.Parts.Work;
- Y5 X& n! d: t4 ^' P2 T$ i, \8 j! A9 V    Part displayPart = theSession.Parts.Display;. W9 K6 @  {% X. X0 F5 j% \
    // ----------------------------------------------% F; C$ C9 E3 _. Q0 _
    //   菜单:镶块->曲面->Bounded Plane.... f% ~/ q! w2 Z9 m1 S. v4 F2 }+ r
    // ----------------------------------------------
6 u5 K1 C7 M5 H( n% x/ k( J    NXOpen.Session.UndoMarkId markId1;7 [& h  |- d' y& E, l: a
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
! _5 @* ]* L2 j" R7 H   
& x( h. }5 D7 d  v6 I    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;) h3 x: g  b" J& _; k( ]: O
    % F# S$ C7 D: j4 k
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
0 M# H8 Z. |6 M    {) ?- t$ D6 V- V
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
7 O$ Q& g1 g1 P% R2 x9 d+ c    }
& P: w) G( w$ \0 r6 n    1 C  t- H; c# j4 k( E# l7 Q
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
% |+ f+ O! A7 n& R/ U: I- n% Y+ |    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
2 k8 S% W' H  g+ i0 l1 L   
/ m. s; O$ n& U5 r' d8 N; a" D$ P; K, {    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");( k: W% ~# B( s# z+ a
    7 V3 {' e4 |4 V9 {
    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
  k3 ~  ]2 z+ x. H: R7 {   
0 J: `3 R( W" \. m    NXOpen.Session.UndoMarkId markId2;9 _; j9 g: G" \1 O. o/ H+ }
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
7 R0 _+ t4 q& Z. d& q/ v0 G   
5 \3 ]" K" w5 u* B    NXOpen.Session.UndoMarkId markId3;% l4 Y* Z6 l" p  Z2 p; M
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
* ?' d1 e$ A. ?8 u" {   
# D. m% \* U" ^/ ~    Curve[] curves1 = new Curve[fhsl];
! k, p0 s$ S5 x$ z    Line zx = null; ;
- F8 r$ E$ g- c) U! d    Arc yh = null;
. k5 X: A: ]- K1 T: X    int bj001 = 0;
* ~; c( c! W& G3 T0 Q; o' F3 y) P0 R0 K    for (int i = 0; i < fhsl;i++ )
! G+ j/ k: R- B4 Q9 a- X    {3 L$ u# z+ T7 S
        try
& _+ P: N5 S" M) c        {  Z. o- e5 F0 |  |" }, p
            Arc body2 = null;, @/ r# @% S5 p
            NXObject object0;
& Q0 V% C0 X' |! \+ \            // Tag body_id = NXOpen.Tag.Null;( ?1 S8 j: P1 ~' W1 |
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.& }9 A1 N4 b2 n7 d5 K  H! b
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。5 T) O7 k/ I2 w. O8 }% e: ~% n  Y5 c
            body2 = (Arc)object0;
' Q6 v- L. L  y2 A9 v+ J5 G1 L            curves1[i] = body2;* c% Y9 D1 \- ]" g
            if (i==0)* H7 l0 z2 z1 T  ~( ?8 i1 k6 S
            {
+ ~9 E( a$ c6 H7 J0 i* G  ?' c                yh = body2;
0 \5 a: k' F. O: P8 U! i0 V                bj001 = 1;
- K" b0 J  d- J4 o5 R* [. K9 `            }
7 _) g6 V5 e2 v$ x0 [) U$ b
  y% r) b. R0 z( P) ]        }
* s8 Q! I1 Z1 n        caTCh (System.Exception ex)- d5 E7 G' b0 }: f  w
        {        $ T: G' T9 H9 K; E3 i( Z* z' h
        }9 V! i; _' ^; L, ~! H% u
        try: \2 E) p4 k& ^8 M& C  p
        {6 s) j: x! ~2 j( e9 O1 N: C
            Line body2 = null;1 }+ @. F/ y! p. R
            NXObject object0;" E. i+ j+ h) e) V$ t/ X
            // Tag body_id = NXOpen.Tag.Null;
1 [9 C8 B( v% ^  @            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
* X/ ~2 y" a' @& t+ n7 z) e            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。( e5 F$ M( @5 `1 y$ b( r& H
            body2 = (Line)object0;( y3 r) d( U" @& K
            curves1[i] = body2;
9 ~2 v  O) |1 L7 \" ~  o6 k* ]& Y% B            if (i==0)
' O3 f- z- s0 i+ W3 }            {7 [) X% q0 Q6 O* d* g
                zx = body2;3 Z" Q& O5 h% g
                bj001 = 2;5 i5 U  {) R0 n, p( _3 t
            }
$ y4 `' ]# N6 [5 @6 h3 Q        }
$ Z1 G7 L! E) L. D9 ^5 I# ~7 L        catch (System.Exception ex)- X- E0 v) ^3 q% w- o% ?
        {
8 j& b5 l. G4 |! B& H1 [* i         
) w% @. @6 I% R7 @4 M, x9 r0 p        }
4 X! e4 L8 e, c5 _; j. \! b$ h( |/ U) |% K* e+ c! B
    }
/ C% V# w3 o8 ~- n0 A+ {! i; _  e# k: A8 r
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
) N+ f5 t2 w% Y: f. g- t//     curves1[0] = line1;
; \. g7 F* w) I7 V//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");0 W" i! r' s9 U
//     curves1[1] = arc1;: O1 d! X3 U+ h' P
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");: o  u3 U+ ?6 o7 W: n) a- Q; Y
//     curves1[2] = arc2;7 r+ ?: u* y$ S3 n' n
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");- P/ M: E/ m2 o
//     curves1[3] = line2;* n. M, y6 \( _# ~/ d6 ^
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
* I2 N4 ~  h. Z6 \9 p//     curves1[4] = arc3;
4 B8 y, c- f" n; Y' C//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");7 n& O+ K% Z% d2 p; S; z. n
//     curves1[5] = arc4;
2 f* j, ]) S5 l  z    CurveDumbRule curveDumbRule1;
0 U, ]" _$ q9 b6 t    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);8 o7 p& M4 v5 {; B( f( `) `8 a0 t+ v
   
5 \! m" i7 D% B# f; Z    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
% X# S4 S% O8 q# A& ^; G   
8 i6 y/ w+ d3 C& S    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];* O8 N# `8 e: T
    rules1[0] = curveDumbRule1;
; a- n+ y' c, H+ Z% X/ I) C. Z    NXObject nullNXObject = null;. S* T# Y4 [. Y7 y
    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);' o( o! i8 J- a; X4 b
    if (bj001 == 1), t# G  O. p2 P6 ~: I9 |; F$ ^7 ?
    {
& _, {* H9 L: D        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
( {7 d+ i2 ]- V3 [    }
$ u9 a) W+ R$ O- @" B    if (bj001 == 2)
) H6 }& i6 K& ^. |! z* R    {
# ~. J+ N2 T! q9 X6 d. m" H        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
: q/ A) z' I. s( W5 |    }
  w5 p2 z  o$ g, _7 c  S    4 A6 p4 F' }! _
    theSession.DeleteUndoMark(markId3, null);
# K$ s; \: \1 R) I- \, y* H    ( E2 k- M2 ^' c3 D- ^& s& y& ^
    theSession.DeleteUndoMark(markId2, null);
3 q7 f# }0 }$ U; C   
3 ~& S) l' v, O' K& p    NXOpen.Session.UndoMarkId markId4;* i7 h  f: k2 x
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");2 f- S6 T1 ~4 @, B
   
4 x3 l  Q* F: Q8 t    NXObject nXObject1;
5 Z2 X0 V5 L' |. P7 v( l  W$ m    nXObject1 = boundedPlaneBuilder1.Commit();- j1 A) D( W( M
    + }8 z: R7 U' h4 r" u
   
& p0 D, A2 D* M2 }4 E$ D    DisplayModification displayModification1;. A/ e1 E9 G% ~# b( N6 q8 O# x
    displayModification1 = theSession.DisplayManager.NewDisplayModification();5 {: k# l( ]* X; F% l+ n: o, R
    " W% B* h5 d  c
    displayModification1.ApplyToAllFaces = false;- \3 H* s/ B& x; u
   
# h2 P; i6 F8 ]. `    displayModification1.SetNewGrid(0, 0);
* {: D! |3 ?" B  J( f6 o    ' ?7 Q& @# Z& v5 \
    displayModification1.PoleDisplayState = false;2 _; X: a) [; x- u% X; i) d
   
( H9 C  v- T4 A! v# y7 [    displayModification1.KnotDisplayState = false;
! V: f  ]: X  r3 c7 `   
1 ~3 q: F. m1 e' i8 ^& @9 s    DisplayableObject[] objects1 = new DisplayableObject[1];, J& ^) w/ I# J  y8 |7 ^
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;8 y5 Z( f" O2 b  z5 s; V+ ^% g8 v
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
0 |% ^. C0 X) `7 _1 p' t/ F8 P" L9 r    # L6 {- }3 F9 G* J! k, K
        objects1[0] = face1;
+ r8 W) w1 H2 i4 o    displayModification1.Apply(objects1);
' W6 a/ Y$ b  I$ d% n. L  m3 Y: X    face1.Color = 32767;
* k9 p/ S3 K" u9 I/ e   
1 ^: T' l8 u' V9 T" G    theSession.DeleteUndoMark(markId4, null);: F" X* H  O& u/ Y$ H
    9 S& A2 ?; k( a# T% I4 A1 @
    theSession.SetUndoMarkName(markId1, "Bounded Plane");8 z& o/ h  b- N: e; ^+ m4 o
    & B8 q! u0 y8 h3 ^0 G7 u, Q
    boundedPlaneBuilder1.Destroy();
4 d8 O; J% x  O. I3 H   
! `/ J7 ?/ P0 m- j1 N7 x' j/ T       /* if(fhyi==1){
7 J8 U( A/ J' Y; z9 R7 z" b. D    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
# V4 n$ S4 n6 M+ `* p& u% q  S    if(fhyi==2){
" W' S, Z8 e; S7 X4 r/ C& l0 B7 M0 H    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}& V' a& m* p8 N+ B
        */
- f/ o/ q' u5 W) k$ u$ [    // ----------------------------------------------0 t! N- o# h& p* ~  A
    //   菜单:刀具->操作记录->Stop Recording
5 M5 Q7 t$ \2 E2 E: w; y, L/ Q    // ----------------------------------------------9 Z+ J6 b- c- `6 z
   
% R+ q# b$ s6 V( w! x1 ]0 u  }. w- |) z3 O2 B7 p4 s0 V) W5 u
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }" m8 H+ |# ~) E
}
3 _, I+ I7 _7 E2 p" t+ q  F$ W这是录制有界平面点选封闭曲线产生的日志/ X' g; O# M8 ^" K( V5 x0 G. W2 T+ z
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
: U. c! E0 q' \$ S; G NXObject nXObject1;/ A/ ~" s) h. J3 R9 S! f
    nXObject1 = boundedPlaneBuilder1.Commit();" K3 q: |# U/ P2 @& m- Z3 Y" t
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值) E+ Y$ m$ x/ n# F

" h% t" m; L1 p( c9 O0 ^0 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了