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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
9 e- W( q9 P9 ]7 _& n4 jusing NXOpen;
: X; G( x+ q/ \5 I9 }using System.Collections;' R2 G# g- D+ [% |
using System.Management;
+ ^" _4 a1 p" j$ `/ G! _using System.Management.Instrumentation;
) q, l4 D8 |+ g$ M" eusing System.Text.RegularExpressions;
! u! D  l2 V9 _: M' d7 X/ H; Ousing System.IO;! r; ~; i2 b+ m" I
using System.Collections.Generic;
0 H6 d9 k5 H1 C) I0 {5 W" Uusing System.ComponentModel;
- m8 \2 b& p6 J* Pusing System.Data;
* C, J0 q0 g/ N7 u6 g) Z4 i+ d0 ]using System.Drawing;
& k# }: P  t9 ?1 Lusing System.Linq;
7 N' M. L+ M0 s6 q: I, W$ [using System.Text;
9 x+ O6 g7 b1 Cusing System.Windows.Forms;
) p- Z, D* l, [2 y& vpublic class NXJournal5555 V# Q0 R" l# q4 ]
{
8 j/ v2 M2 t$ g8 r; H7 Y& r: n0 H+ }    public static void Main555(Tag[] bj, int fhsl)! |) L# n. d( C
    {
0 r3 M% b5 p9 z( a        $ L4 \) q3 ]9 H
    Session theSession = Session.GetSession();4 Y& B! S1 n- y5 ]# W
    Part workPart = theSession.Parts.Work;
9 x% h/ w0 N) r' m% m6 T$ ~2 [+ {    Part displayPart = theSession.Parts.Display;
2 }1 O7 b; i( ]7 w3 p    // ----------------------------------------------
( f- S: c6 V! e' d& V3 J    //   菜单:镶块->曲面->Bounded Plane...) |$ b) P, Q' V" @; D, Z# k  C! J
    // ----------------------------------------------
3 x2 B; f/ j. E+ l! f( b    NXOpen.Session.UndoMarkId markId1;1 h% P$ ~$ _( E8 e
    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
7 ~; V5 O5 h5 L2 L/ ?. s; }    " r6 q( I& ~# \% o0 h, S, S! o4 C7 \
    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;7 i; W+ z& I+ S
   
2 ?( v& u- e  P& d    if ( !workPart.Preferences.Modeling.GetHistoryMode() )1 T! K  Y0 C) O# @  X
    {% l; F+ ?# T) H/ ~5 X
        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");) |$ s% T; u# I2 d4 M% Q7 T
    }
! W  [: Z! H7 J$ f' x' w7 \   
. d( M& ~" G( |5 U: Y- `    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;
+ c' M& h9 W- ~8 k& L. `* B    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);# i: ~8 ^- ]3 O1 ?- \7 C
    % |: {) e% D- @/ f
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");
3 {8 G5 [  W! V( a1 {   
( n6 q+ O7 p3 p& M( L    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
/ }8 Z5 m; Y; ?. [6 U5 m# {( T   
% z2 a% o; W0 G0 Z6 b    NXOpen.Session.UndoMarkId markId2;  A  Y+ [8 J9 h. v) m# B
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");
+ [0 i1 b5 j  g% r' ?   
, p+ e  i1 Q, t# s& S    NXOpen.Session.UndoMarkId markId3;# O9 X- F' _4 W6 s$ u' Q9 L
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
/ Q5 i4 z- T( Q    2 M9 n1 T  b% a$ I' d+ C
    Curve[] curves1 = new Curve[fhsl];% \" {; O: k/ L( y+ p) Z* M
    Line zx = null; ;5 Z# \# }* F6 O* l6 w2 r3 A
    Arc yh = null;) Z% t7 n1 g; o" x
    int bj001 = 0;/ K+ N! S1 l2 \5 o" H
    for (int i = 0; i < fhsl;i++ )% w' c% o2 L' \/ B8 W
    {5 k- x3 }" ^" i- e/ [! d8 m' T# w
        try& D! Y1 @- Z' K8 F
        {: J  O6 d: p6 g2 w. F9 Q; f
            Arc body2 = null;5 R. ^. U2 I3 p' r8 l
            NXObject object0;
1 K% F, P2 c. U2 [  {% N            // Tag body_id = NXOpen.Tag.Null;# l% S9 ~$ r3 b' P( L7 T
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
: w/ w5 _$ q, b; G            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。* O  A# I0 I( a6 \
            body2 = (Arc)object0;2 u* e% C* ]: b" ^
            curves1[i] = body2;! F( f. g+ W6 v7 b: S% _
            if (i==0)
( [- U; b+ S5 \* j! X  w            {: Z6 l; a; S* ?; m+ I
                yh = body2;' o5 x: V6 @, N1 d2 J2 T
                bj001 = 1;4 G5 m- B$ L8 I
            }
  S9 B$ p! F" N" W) n7 j5 [- N! s9 c4 j1 \( q$ `8 z" B
        }* C; w6 |# t; Y7 |. F$ r9 w
        caTCh (System.Exception ex)
/ y( @$ r$ i/ |) i/ W, l        {        ( v0 V4 m" S: R/ ~
        }
/ t* c' h$ }' w, p! B9 V2 u        try
* y6 j7 `1 N, {( H& H        {7 L( Q% \; P4 y
            Line body2 = null;3 g9 _2 @) w( y4 z4 b, z
            NXObject object0;
7 N# G7 _' h: P            // Tag body_id = NXOpen.Tag.Null;
0 {9 K# X* n/ d4 q            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.2 N: v% M1 I/ o) x* l. \% d' }
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。
1 T5 T3 n9 ]: O7 D5 ]            body2 = (Line)object0;5 p% K8 @6 c% K5 y2 S7 D4 c3 A# x
            curves1[i] = body2;' ^* X5 n8 P7 [
            if (i==0)
9 E8 _. R+ G" I; h' E3 U1 r" P& D0 W            {
$ C. M1 o0 u) z% L                zx = body2;
/ k- F% {0 l; f% L; f                bj001 = 2;2 h; V; b: E2 `9 Q5 y. y, ?
            }
! |" m: L! ?9 l/ I+ A        }! T. Q: \3 i+ x# u' @, v
        catch (System.Exception ex)
/ q, \% H. g' c- y4 E( t8 b. e# f        {- @$ D7 ~, o5 G9 x6 w
         
4 _* C. N1 M5 j& G        }
1 p5 y: h* c& B! H) ~1 M. L: R; Q
    }8 m5 ?1 ~* R4 K$ `  ?- G
; z8 O+ r  ]. b
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");6 r" _! U8 x7 P+ A' P; H/ V
//     curves1[0] = line1;
' l6 b3 f  e$ o( q6 L6 a//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");
3 U1 o" E- ~6 I+ b5 ~6 I//     curves1[1] = arc1;5 }8 G, e1 S; T6 u; `  P
//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
; w& J; H; F; E) P: P# z# B//     curves1[2] = arc2;4 R$ s( L5 k+ C* b- A
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");9 i% H+ L7 Q3 |
//     curves1[3] = line2;
1 V% }. k+ W6 t. w4 V' L' S//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");) V. ^8 j. ~# W+ b3 H
//     curves1[4] = arc3;
/ Z9 E1 U0 B: t/ s# V//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
# {& j; O: u; [' V1 ?/ c9 b( b//     curves1[5] = arc4;
" ?6 r# c  ^0 H2 q0 Y4 `! ^2 W, {    CurveDumbRule curveDumbRule1;
$ E- d) n' ~% ^* W& k; i% ~% A    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
) U; M& b1 z  @; q   
6 z3 y8 P3 W8 J    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);8 |4 d3 C9 P5 n% }. D% k. T
   
, b+ n* l' V6 ]) C2 p2 T% u/ ^2 X    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];
# {9 O. g) _- X% s3 |: P  Z0 {    rules1[0] = curveDumbRule1;
" m2 n' c! B" C* o* N    NXObject nullNXObject = null;
7 |& w/ Q1 Z( [0 R5 C- h" ]    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);
. v; Q+ [( D; T    if (bj001 == 1)4 t$ Q( Q* V, ]9 i8 d
    {
( n  ^, M4 N. Z9 f; F8 T1 b        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
! y+ l6 Z& e6 D( }, X    }
/ w# M7 u) j* @5 H& P1 H    if (bj001 == 2)7 z' ?% O$ r. {5 a" }. D. Y: ~
    {0 ^/ Q: J! P! t0 d. C
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);& H. v  S0 ^0 T( _4 ]0 ?
    }; O# O& i& w4 ~% Y1 n* L# u
    6 p7 ^. ~  _' _4 l! n/ c
    theSession.DeleteUndoMark(markId3, null);7 M+ ^; p7 m- q
    7 ?) C* P) v5 E: ^  b0 Q  J& u! m
    theSession.DeleteUndoMark(markId2, null);- {$ ~6 b, A6 U
   
0 [( @3 p$ s! A( x& D3 U- \* C    NXOpen.Session.UndoMarkId markId4;8 ?  \1 @( _8 d
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
9 s: R" a; [, Y8 }/ ~5 O& J   
7 S2 w4 I1 y5 E2 l9 D! [    NXObject nXObject1;
) _, H$ \. t+ `    nXObject1 = boundedPlaneBuilder1.Commit();: A2 m2 A5 t1 \
   
6 e3 r' J# W! R1 X( n" _    7 Z  G# H" u" K# c) R9 v* \* Y
    DisplayModification displayModification1;
& m# \) B* |: G, C& s. |" z# o& M    displayModification1 = theSession.DisplayManager.NewDisplayModification();
$ m- _3 ^# S% n" Y, b   
0 n7 V& G$ T! V& X    displayModification1.ApplyToAllFaces = false;
! M$ ?. o2 g0 @8 j2 I; ^    . i$ Z! `; h. K: \/ i" D, T
    displayModification1.SetNewGrid(0, 0);/ L' g& u* i% Q3 r: U
    + ~% r( {8 ]$ B0 g1 Z6 U2 c
    displayModification1.PoleDisplayState = false;* l9 Q3 q/ t! [! `+ Q% c; J, Y+ X! G; u5 N
    ) k, ^" U; _9 A
    displayModification1.KnotDisplayState = false;
+ E; c7 Y+ p1 L1 s1 ^5 S4 |6 b5 J) N    0 c( |/ A6 `* u2 D7 e  z& M
    DisplayableObject[] objects1 = new DisplayableObject[1];
7 J# k. @" @! [" m3 R    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;
, p7 P! O; D' s8 R    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
- ]$ {# o6 e' g0 G    * C; @1 f( t( x' V- z4 `) v4 X# N% A! J
        objects1[0] = face1;
2 j) E  c. I7 P    displayModification1.Apply(objects1);! {  P" b4 V4 K% ~7 \4 ~
    face1.Color = 32767;
/ A- p% \' Y9 P( l   
) s) q  P* d4 j9 P) M2 u/ j    theSession.DeleteUndoMark(markId4, null);
; w/ w3 `, l3 B0 ^7 K) W% Z   
$ `- p, W+ F8 ~2 n. p0 q- g    theSession.SetUndoMarkName(markId1, "Bounded Plane");5 @7 Q# M. m: A
   
" B( T; c) U; ?$ g" G    boundedPlaneBuilder1.Destroy();8 k  p# h$ y& A
   
9 P4 y) N4 r/ `8 j       /* if(fhyi==1){  U$ a: C& ?7 I! H( T, Z
    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}7 B/ q! z4 d  ^1 e; U. N3 Y
    if(fhyi==2){
/ @; N/ f) X. W7 E    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}& d$ r- s! W3 E, w" @5 }
        */( w9 D9 q* v/ a% z5 j! J
    // ----------------------------------------------3 P" [$ ]$ h4 d1 Q# J3 q* a8 s
    //   菜单:刀具->操作记录->Stop Recording  n. W7 V: o" L3 t. U; y, X
    // ----------------------------------------------4 _4 }& z7 h3 m: t
    1 y: M* n1 J1 S8 w
  }
4 I- _2 `" S! J  q  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }' L; y7 q, b8 X1 x; k9 V% v# c
}" k. z/ q# a% q% c6 N: R
这是录制有界平面点选封闭曲线产生的日志: o# Z% V! `  v% K8 F8 ]$ C
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
+ |. ]% v; ^( Y* b4 a) [2 H  \ NXObject nXObject1;
7 e1 e+ j  y8 w; Y    nXObject1 = boundedPlaneBuilder1.Commit();0 q: w! Z  G* D" A8 L  q! s
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
  r5 H' o7 |0 `& a, [! O7 V. P+ G8 `4 p
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了