PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[求助] UG录的日志文件有界平面怎么返回Body

[复制链接]

2017-9-15 10:49:42 5236 1

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
+ w/ K5 E0 G/ R, j8 F& A  L+ y8 R0 pusing NXOpen;! R6 S2 T2 r3 S0 p4 e. I) j* y" b
using System.Collections;4 W" c0 S+ M; C  C5 j
using System.Management;+ D6 N/ D& x. M! }3 r# @7 ?) x2 \
using System.Management.Instrumentation;
. ?0 g6 {! Z3 N7 L2 Yusing System.Text.RegularExpressions;: w9 c6 `) I- u5 E8 W/ @  t2 \
using System.IO;
$ F; }' [/ J( I, O% \7 Xusing System.Collections.Generic;
; U# R" L0 X$ W7 Musing System.ComponentModel;9 K  z( [3 R& j9 R
using System.Data;
7 L3 K9 s) f3 X! `2 Y  fusing System.Drawing;
. W3 [9 ]. W  `using System.Linq;  Q$ c: l6 u% H7 P  S* A2 w9 ^
using System.Text;
& ?6 P" z& ]) \using System.Windows.Forms;. @, _  s: A, O% Z5 C& U
public class NXJournal5550 C- g6 a3 e+ ?6 P) I
{: U! t2 W4 m' {/ Q% K
    public static void Main555(Tag[] bj, int fhsl); A+ `# F6 R6 s4 s) u: S; @! \
    {
# _3 K- F8 ~: x$ [& H) R        
( E/ Z4 q$ O) I7 ]3 v! l    Session theSession = Session.GetSession();
& ]& |, h) E. a4 Q" g    Part workPart = theSession.Parts.Work;' G! w1 z) C6 p% R" _$ Z' a
    Part displayPart = theSession.Parts.Display;
7 s+ |- Y, J' X# w' v; L    // ----------------------------------------------
3 F* `% ^& ^8 t" Q* t    //   菜单:镶块->曲面->Bounded Plane...
# L" I/ F7 \' s% m' M( G2 Z' P    // ----------------------------------------------
3 p0 d- q. C5 q; o/ g  o    NXOpen.Session.UndoMarkId markId1;
( h2 f. Y* w( M) R% M    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
$ B, c$ Q& u& |0 F   
6 H2 r) g* p' K% M4 O# o# U" d2 P0 I    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;- Z7 a0 w9 b% D
    & M& V9 g7 T% }. B) X4 w9 Q
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
" e7 e5 d' ^1 u2 J  u* f    {! c/ N/ H% s! c1 k' @
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");/ E# B( I! x) E% \  G
    }% f! N" }% L. [6 q8 S, s; @; T  B
    / @/ `, j9 {4 z% `4 F4 j6 t
    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
$ b9 k$ O9 }8 q' X; y1 l5 x    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);
1 M" ?9 L( C2 D/ c& Y/ h   
! d5 [+ I( T% O3 E# [0 L2 ^    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
- m$ {- Y+ `& ~   
! U+ T8 w4 o5 W7 J8 L    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);' q+ C- x3 N3 L3 E- f  P) P
    $ J& X4 Y$ q" R% U4 x; r
    NXOpen.Session.UndoMarkId markId2;
! g3 h0 Q5 w) Y7 K' T8 i    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");1 K( \; Q# o2 X1 `% }; O! H6 k; p
    4 n3 ]' L# i" @; p* G& d
    NXOpen.Session.UndoMarkId markId3;" w% U6 Z( ~9 ]/ o* L, q# v- k
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
9 x6 I- @* c/ y. u0 Q   
+ a& I2 C* V, e3 t    Curve[] curves1 = new Curve[fhsl];. ?9 U) n3 N1 ^' B6 u9 m# }' H
    Line zx = null; ;' q8 j: U; [& ^' U7 [
    Arc yh = null;3 f9 b6 d! p' h1 L
    int bj001 = 0;6 `/ C* m. K1 ^4 y+ ]
    for (int i = 0; i < fhsl;i++ )3 Y  W& U4 t: O$ b  B+ T9 y
    {
! v+ @) S4 J7 d$ |, d. W6 k        try
6 T, n* Q0 t+ ?9 _" ?( b/ Z        {
4 k; L+ A0 X: h: `1 Q; i( M            Arc body2 = null;9 W- d- I3 R  R
            NXObject object0;; z- K: U2 s* n* ?
            // Tag body_id = NXOpen.Tag.Null;/ t- I8 ]4 z8 U( b
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.$ ~$ y! S: J: i
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。1 [6 U4 Q/ u' m+ I+ p- E3 Y
            body2 = (Arc)object0;
- D; L3 p* d4 v7 Q, ]; z- a            curves1[i] = body2;0 b( x" W& U2 v) K
            if (i==0)
9 j  g: y/ i$ M; c; ?& W& h! M) W            {
6 X) N% m: ?8 k  n0 g                yh = body2;
( K- D+ k7 S5 k3 K/ `                bj001 = 1;
) H3 O# A, q  O# j5 {( L0 x+ p: P            }
) D  S; E6 m5 b# X6 H+ y( {. Z: [+ q" F7 Z: ]
        }5 f$ |! H7 H1 u
        caTCh (System.Exception ex); G& t5 ]/ H% U  i
        {        
' Q% v' U$ k% m, v        }( u6 N/ r- \1 N
        try8 Z. F- ?; w' F5 ]9 `) g" c" P* c
        {# H7 I4 \) W" [, Y* p
            Line body2 = null;' p: K/ w. x7 ?
            NXObject object0;
. N" ?4 A8 u( A" {2 W4 x            // Tag body_id = NXOpen.Tag.Null;
6 ?$ D- g7 c. z! A            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
) I+ j; v# ~4 |+ w) M7 v. f            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
9 x% m5 J5 p- s+ m/ C- d            body2 = (Line)object0;
2 B" u4 z4 q# U/ o! G" F4 L            curves1[i] = body2;) Y  a, L% ]: o- g6 i3 Q" p
            if (i==0)
2 W* {" q( H0 c$ p            {' H: @$ S) K! S& G' R$ ]* J
                zx = body2;: y9 z+ t" S3 l! e
                bj001 = 2;! t. x5 r% u7 o; G  F
            }
1 V& |: P; _8 o5 @) D        }, t2 O9 y  o0 B' u) \
        catch (System.Exception ex)  @5 ~# z8 }1 N/ r9 \) q' X
        {. O" L  H% A- K2 J1 I8 \: U
         ; k& c- d( [) \% R% y* v$ j
        }8 ~7 T/ m1 c0 [
6 b0 ^* v- g7 o4 m, Q' J, U+ t
    }
5 \  |1 B7 ?  K
$ v1 E2 }  G% ]4 Y//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
+ S0 U% {; {: T* b//     curves1[0] = line1;
; g# N2 d* ^2 m, y' ~: z//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
# |0 J0 ?* H8 M: b4 p' y+ a% X//     curves1[1] = arc1;+ ?; N7 d; Y, w
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");5 ]; e1 o4 k  S* J
//     curves1[2] = arc2;/ u! T& o( d: V4 P7 ?
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");0 i% d" l; A. E) J
//     curves1[3] = line2;2 F! D! {1 g4 l  e
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");" q: d8 D1 l" j8 I4 b* ~8 Q6 t, n
//     curves1[4] = arc3;7 T3 [  g+ J6 P5 X$ S
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
7 ~6 R9 B/ v- v5 H//     curves1[5] = arc4;8 W! X% B& L9 g, Q& {/ \: g
    CurveDumbRule curveDumbRule1;# t: N! K' ]. ?( S9 @: O: Q
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
' Z% S" J& \- l9 O" p' a    ( h& ]" t' P$ C
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
6 N+ A. U- `! p$ g/ N0 g6 z" S; O    # D1 y2 v9 X% |: `7 c. f
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
5 o2 ^, _0 z4 A    rules1[0] = curveDumbRule1;# t! D3 `2 W8 V1 G+ q4 W# O+ m8 B: q2 A
    NXObject nullNXObject = null;
/ \) x+ `( r8 r* u    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);$ [7 S+ W6 ~, h# ]5 x- ]2 C
    if (bj001 == 1)
, Z% V$ W. q) O- z+ R8 U# g: G" K    {  R+ ~. u# \4 z
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
# {, N9 ^1 K& {# A8 V8 q/ d4 g3 Z    }
- m. ?4 N( z6 t9 f2 t8 {, e! H' ?    if (bj001 == 2)
7 i( K* _- ]8 {    {
0 H4 a* T0 K" H: D0 p  {5 r        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
2 I2 |' d; \; d! g/ j0 O    }
+ L* V, G- ~: t$ F, G% [  V# s  ^   
, I9 k8 j# |  D3 ~" A2 L' }    theSession.DeleteUndoMark(markId3, null);
) `+ F7 t0 @8 z7 z    7 k9 v0 a/ ~( F9 h8 V0 I, q1 Q
    theSession.DeleteUndoMark(markId2, null);
$ P& L' F, Y$ e+ ?4 y, K+ r    " K) _; `9 O) h4 S2 L% u( S
    NXOpen.Session.UndoMarkId markId4;
7 S3 }; c5 ~/ _+ c$ B+ B    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
& v. Y7 Y, D- H$ p! V$ L    + W  b+ ?" I7 n2 Q9 [5 n0 f
    NXObject nXObject1;, W9 N& f+ a' b  u% Y
    nXObject1 = boundedPlaneBuilder1.Commit();$ [9 M2 y1 }- g
    3 x: F) b$ f, v3 B9 l
    - o6 p# H1 a. v# G  h" A9 }
    DisplayModification displayModification1;$ v$ N' m* d, m. x/ x# I
    displayModification1 = theSession.DisplayManager.NewDisplayModification();# i% H% }6 M" V. ?. u
   
0 l3 _# ?" t. m: W$ g1 i: }  j    displayModification1.ApplyToAllFaces = false;
: j. A8 l2 m6 `4 P    " l& q3 ?; l& C3 M  T6 }
    displayModification1.SetNewGrid(0, 0);
/ A! f8 q8 _7 O9 `  `! m/ r( Q    % u$ w, J8 m: |# Q; Y: r
    displayModification1.PoleDisplayState = false;
4 l, p! @' P2 ]6 b2 }   
8 X' b# p: ]7 d, C7 R    displayModification1.KnotDisplayState = false;. z, U  q. O! p2 n7 G
   
5 }4 h' T( b$ T5 u7 @' P6 z    DisplayableObject[] objects1 = new DisplayableObject[1];( b8 q! V% Y$ T. q- t
    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
7 S8 D( s3 a' s0 P$ f    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
; d2 \2 c  l) N5 R5 K& W1 o& e    9 _* |' R6 N0 P( n5 t5 Q  j
        objects1[0] = face1;
, ]" p9 `" t5 J6 m- V    displayModification1.Apply(objects1);
, }- N3 Q2 I& H# `    face1.Color = 32767;9 W' @5 T% k. g' D
   
. R9 T, i) g$ I) h+ h$ Z    theSession.DeleteUndoMark(markId4, null);! K, G* \: o' g( B+ t2 Z
    ; R7 f' @4 G" G8 t" j, H/ B
    theSession.SetUndoMarkName(markId1, "Bounded Plane");' i& u$ M1 C* k/ J1 t
    * j* A+ B6 F8 |( a$ m8 p4 l* c  a
    boundedPlaneBuilder1.Destroy();, O7 v3 g7 g. A  s  U( U
    * V1 o  E3 F  k9 \4 C5 S
       /* if(fhyi==1){
( J/ u+ P- B* H0 q3 P7 r    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
# ^) b' L% v: |5 y; d( Y    if(fhyi==2){
5 m0 x5 }2 Q; j6 K. _, |( b    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
3 O8 _! w- m4 Q( `2 l5 q        */
! X+ m5 c8 t$ ~' [3 @0 w    // ----------------------------------------------
# m7 f: o- |5 V  C& x6 O) u    //   菜单:刀具->操作记录->Stop Recording
7 i6 f- J' f2 F- p' R    // ----------------------------------------------
) v. ^6 }5 D# B- K- y. K: x    : C' o" u% A+ O8 o- [
  }3 i. L* P. i! M1 C# F- {1 e
  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }
4 n3 \; w  u  Y. T: Q' a}
1 l3 N; W" X! R/ |: Q; w6 X0 y* T这是录制有界平面点选封闭曲线产生的日志: s3 N5 f+ m) F. p5 r
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了 ) B$ t2 c4 g  d9 ?, w
NXObject nXObject1;( R( J! p8 `1 i/ \( a
    nXObject1 = boundedPlaneBuilder1.Commit();$ H& ?; v% F1 \0 a6 x
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
) }- U6 ?9 T! U' o( Z- N0 A% C1 I% A: a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了