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

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

smalfly11 楼主

2014-2-12 23:34:54

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

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

x
using System;
9 h& G4 X$ U; N2 S2 B9 \using NXOpen;
0 \4 o* ?6 G8 b$ Q. Qusing System.Collections;% Y; H% P. T0 v* c
using System.Management;
* k9 `: P. X5 A/ X/ R' ]$ M# x: o3 qusing System.Management.Instrumentation;
# R) h, I. f7 ^9 _using System.Text.RegularExpressions;
0 o0 u8 c6 H0 rusing System.IO;- Y. ]% ^4 J. O4 N8 g# r& T- R
using System.Collections.Generic;) b4 S) k' w& x# C9 p/ Y1 n' k
using System.ComponentModel;5 B7 f0 R1 F( f! }
using System.Data;
$ c3 O" {6 L% y; j9 V/ x" Ousing System.Drawing;
- {- U4 w3 F! T& cusing System.Linq;
6 V& G7 C! t( Z/ \. B" susing System.Text;7 E; H7 V* U' r# s3 u( ], t
using System.Windows.Forms;' v; a, F7 l" I
public class NXJournal555  B$ i! L. q0 F6 Q
{
+ e, b" `2 q: N# w4 h/ m    public static void Main555(Tag[] bj, int fhsl)
1 z$ K' V6 j( H# V- J6 Z0 D6 O" t    {- R- u+ D2 ]( H9 U  J
        + U6 Q, J* `$ t5 P
    Session theSession = Session.GetSession();
8 [% S* M+ j+ R3 ^    Part workPart = theSession.Parts.Work;1 h- j( R, E0 K/ M1 N$ ?* u  O
    Part displayPart = theSession.Parts.Display;+ L3 Y, Q. `: B  {* W# Q5 i
    // ----------------------------------------------) E) g! `2 B. @8 ~: `7 X* m- x6 z
    //   菜单:镶块->曲面->Bounded Plane...$ G  i1 @. C: t/ \1 a, b7 s- G
    // ----------------------------------------------
* j) e( v9 e, I9 X+ o2 H    NXOpen.Session.UndoMarkId markId1;
; e. D1 I7 w7 T: m( B$ k5 x: D2 d    markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "Start");
$ K# F2 z% v# b   
' P, n4 U( r0 f* c' x    NXOpen.Features.BoundedPlane nullFeatures_BoundedPlane = null;" f$ o; k. Y- `( D! e
    : Z* D, H# ]0 W/ H
    if ( !workPart.Preferences.Modeling.GetHistoryMode() )
; a" q! B5 H* U) q    {
- i0 e3 B3 v+ I! i+ M        throw new Exception("Create or edit of a Feature was recorded in History Mode but playback is in History-Free Mode.");
2 L' h! ^" X, n    }  G$ n( V3 A0 C( {9 G' i4 F
   
6 @# H1 R4 M6 K- j6 J! J8 j3 g    NXOpen.Features.BoundedPlaneBuilder boundedPlaneBuilder1;! ?  B! Y; S& x% m
    boundedPlaneBuilder1 = workPart.Features.CreateBoundedPlaneBuilder(nullFeatures_BoundedPlane);! S5 S3 \$ x- x
    0 O" l4 I! ]3 X: p
    theSession.SetUndoMarkName(markId1, "Bounded Plane 对话框");: l7 d0 x/ f& R' Z& _3 q6 K9 ?
   
$ g& B/ G* q$ C, u, Q    boundedPlaneBuilder1.BoundingCurves.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
% `* a" O6 ]0 M: d   
  i6 s8 y0 F, Y; ^( Q' U    NXOpen.Session.UndoMarkId markId2;+ r. W1 `0 n! e' h
    markId2 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "section mark");* v- _; M+ f8 m& n% f- W* N6 P
    9 }! |3 M( k  I9 N0 i* U5 G* c
    NXOpen.Session.UndoMarkId markId3;3 k8 g. `* {& o* H& I9 E9 x7 o
    markId3 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, null);
9 z! y) l' r5 r: w. C4 I3 N   
0 w9 E: @( U4 K% f    Curve[] curves1 = new Curve[fhsl];& [; U8 E! x' h+ K# W
    Line zx = null; ;
9 L: W4 C% g% _+ a4 {    Arc yh = null;) b" L' h: r1 }1 ^- [" r
    int bj001 = 0;* h# \6 t% m5 v9 g- J' \) i, W: D
    for (int i = 0; i < fhsl;i++ ). ]' v' ?3 K' P+ w) h; Q
    {
) o4 ?& r& V$ k7 G, D5 h        try
# h: f+ v, r" A9 o- i9 U        {
" P( p# P7 d$ a# E            Arc body2 = null;8 _8 K* M, \6 k
            NXObject object0;9 @" @# v  y4 V# P9 v
            // Tag body_id = NXOpen.Tag.Null;: ^& C* `2 P6 t; [( V) E
            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.5 [/ G2 u; W* e5 J7 Z
            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。) Z1 ?9 F  ]7 Q6 J+ p/ A. r
            body2 = (Arc)object0;$ ?. J: _. f& w7 o4 G
            curves1[i] = body2;# u* F- Z+ Z$ P1 s" W6 ~
            if (i==0)1 P0 g6 E+ A% [" F3 {3 b3 V
            {
( d, k/ ~: q' `+ g) n2 i                yh = body2;
; \9 S& f4 f- f, d" P9 l                bj001 = 1;
: x. M* P' {6 O; U# W            }, Q9 I! ?/ s) o& p1 g9 S
  ~3 P) q" V) M7 N; ~$ T, s
        }
5 i9 k. C, C& B( Q8 C% U9 e        caTCh (System.Exception ex)
# o) U4 |! b9 K! p4 ~        {        
  v. z& k) N7 f8 r% O3 x3 A        }! w; ^8 U; s/ m4 j! z' f4 x
        try
9 `0 h6 y: P  C* e. X% O4 Q. Z        {
. Y2 u3 l1 M7 A: u! z. L$ ~5 N4 @            Line body2 = null;
6 S6 r  H; y+ d7 ~" S1 W$ w6 |            NXObject object0;
, |4 A/ @, L: h( }            // Tag body_id = NXOpen.Tag.Null;
# B$ f) c+ S: P: U5 v            //theUFSession.Modl.AskFeatBody(bj[0], out body_id);//把特征的tag放入到body的tag.
; Z. e$ x) {$ h& k3 x            object0 = (NXObject)NXOpen.Utilities.NXObjectManager.Get(bj[i]); //把tag转为body。3 `- X% h, G; p
            body2 = (Line)object0;
( x, _+ X3 M$ x9 j" b" @            curves1[i] = body2;
- s& _- h' l* C/ a* M            if (i==0)
0 P2 s, G3 u7 l( Y2 t0 S            {8 I/ s: t" L1 d  `! \
                zx = body2;
0 g, s  d1 q- a. [2 a: n7 Y7 b9 E                bj001 = 2;* r" o9 w5 }! O' o/ ^8 d
            }
' X2 \: t  p3 r8 J/ S        }3 ^& E: k$ n% f1 [3 p3 o* R
        catch (System.Exception ex)
+ I8 @8 f% D. K" j5 K        {; T  H3 ]7 P" K! C: h( R
         " O! u4 h3 K* x! P
        }
8 X' J9 x9 F5 l8 y) Y; w  E9 E6 Q; K6 k- E* h* f" e& p5 q' o. V
    }
7 s# l) a$ X( i0 c, `8 C! d- r$ w; ^  t) G  D: `* j' \
//     Line line1 = (Line)workPart.Lines.FindObject("HANDLE R-7608");
  P4 U8 v5 R- \3 w3 O//     curves1[0] = line1;
' v8 D& v/ N9 N# L* r2 v* O$ u//     Arc arc1 = (Arc)workPart.Arcs.FindObject("HANDLE R-7621");$ u# x6 T; L3 W
//     curves1[1] = arc1;
6 O5 }( K. O4 b9 _//     Arc arc2 = (Arc)workPart.Arcs.FindObject("HANDLE R-7614");
- W# V% a' w: m& B" Y4 c//     curves1[2] = arc2;( E0 l+ G$ Z2 ^
//     Line line2 = (Line)workPart.Lines.FindObject("HANDLE R-7611");
5 U  E3 X' G1 P4 R4 H//     curves1[3] = line2;. D  h# r7 ?. H% C7 f
//     Arc arc3 = (Arc)workPart.Arcs.FindObject("HANDLE R-7618");
+ {' ]& o& i" q  I3 m, C//     curves1[4] = arc3;& \9 Q7 H/ K3 X1 c
//     Arc arc4 = (Arc)workPart.Arcs.FindObject("HANDLE R-7604");
# [/ ?7 M' U  P: Z) S; ^//     curves1[5] = arc4;5 C" w9 j$ d2 S+ d
    CurveDumbRule curveDumbRule1;' z  |" Z, D8 L7 q
    curveDumbRule1 = workPart.ScRuleFactory.CreateRuleCurveDumb(curves1);
) o* z8 B9 x3 b- y6 r1 c" O: g# L* A    8 Q, a! X9 L" x+ v
    boundedPlaneBuilder1.BoundingCurves.AllowSelfIntersection(true);
! ]: r1 d5 l: @" m3 U4 V% Z6 d& w    6 K0 D( o7 \& J* V6 q8 ?$ x4 S
    SelectionIntentRule[] rules1 = new SelectionIntentRule[1];: q$ Z9 W2 r+ @% _. @# R
    rules1[0] = curveDumbRule1;
& u, ]  W# M. s- A+ ?- n    NXObject nullNXObject = null;
! z7 ~# B# @% i7 ^    Point3d helpPoint1 = new Point3d(0.0, 0.0, 0.0);
0 }5 V) X& |3 A4 ]0 X    if (bj001 == 1): d: N5 K: H% S6 M8 y, e
    {
* b5 @; l! _7 A- T        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, yh, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);3 A( U* o/ O: N4 y
    }
5 R+ M0 |. W; o7 \* `    if (bj001 == 2)  B8 h  h; U) S
    {" Y# u! U5 l' J! c. a
        boundedPlaneBuilder1.BoundingCurves.AddToSection(rules1, zx, nullNXObject, nullNXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
! _9 Y7 s9 [3 R; B" l! _    }
1 R# y7 P* U' b7 [- X! a    . S3 m4 d& Q2 K6 o
    theSession.DeleteUndoMark(markId3, null);
0 i8 O* N0 I& A, Y7 A   
$ E0 y$ M2 R# A; u: b% S    theSession.DeleteUndoMark(markId2, null);
$ S; I+ Z( i" I  F0 o7 C1 m    ! {5 M1 j  V, c5 j0 B8 i1 v7 {7 e  R% k
    NXOpen.Session.UndoMarkId markId4;8 V1 N' q' n- [$ T& S9 ?& t
    markId4 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Invisible, "Bounded Plane");
0 E# N3 L" p) p# e+ {) b   
) J, G$ Z  j( [' _1 r* H& k- b- U5 i    NXObject nXObject1;
6 B7 Z% h- C' m) A    nXObject1 = boundedPlaneBuilder1.Commit();4 ]9 e* S$ m0 J! p
   
) a4 o+ k5 _0 K) ~8 h& r+ K   
' t- }! F( }: I+ L    DisplayModification displayModification1;0 V) j$ x) P# P& a  u- q! ?- [' u5 c
    displayModification1 = theSession.DisplayManager.NewDisplayModification();& A) L' x' M, H! ]: l6 R6 d8 V* f3 R7 G
   
6 d# U+ F3 F, R9 a5 `4 Q% `4 p    displayModification1.ApplyToAllFaces = false;* B8 U; e) H2 L1 [
   
9 H0 X3 u3 q/ m$ c5 q  y2 G    displayModification1.SetNewGrid(0, 0);
% H9 o  |2 o4 e$ S    3 W' ]# X9 |$ X% I* s
    displayModification1.PoleDisplayState = false;( Z% X% r2 M  Y9 F
   
: O9 G& _7 |& Q* ]6 q    displayModification1.KnotDisplayState = false;7 y1 `! X: f! f" c+ g6 g- m
    # g% B# F  u/ r3 I6 j) w: Q8 L
    DisplayableObject[] objects1 = new DisplayableObject[1];
2 [/ T5 X! p1 W' O    NXOpen.Features.BoundedPlane boundedPlane1 = (NXOpen.Features.BoundedPlane)nXObject1;/ k+ }; m" Y) s* F- s
    Face face1 = (Face)boundedPlane1.FindObject("FACE 10001 {(0,0,0) BOUNDED_PLANE(20)}");
/ I. i# T3 G/ y) G5 c/ Z& z8 e) a    * Y9 S6 t1 X- p
        objects1[0] = face1;
) `8 N7 k7 x3 h0 m9 m+ [    displayModification1.Apply(objects1);5 [) \% s, E( i2 q! J
    face1.Color = 32767;
. s/ I! {1 J5 Q- h* Z    1 H+ w; |. Z' m* H2 \0 n( E
    theSession.DeleteUndoMark(markId4, null);
' D, l% c0 F& h+ Z0 L    $ b5 Y/ O* i8 y% t; K* d) B
    theSession.SetUndoMarkName(markId1, "Bounded Plane");
6 Z+ }4 F% A4 a' |) P    # g2 V; y& s1 L8 \( z6 z7 h
    boundedPlaneBuilder1.Destroy();' _0 s) w( a' z
    1 x9 S$ i$ T: B
       /* if(fhyi==1){
: H8 @' [6 i" E9 ]/ J/ h9 ~    NX8_Open_CS_Wizard1.CodeString.yfht1 = face33;}
8 `5 F  M% l+ P% b; u    if(fhyi==2){0 k7 K, b9 b2 |5 E+ I. d8 {% p
    NX8_Open_CS_Wizard1.CodeString.yfht2 = face33;}
: l' R) X# I! Y+ {' r& l: D        */
0 m) _8 x: U: x7 Y" O    // ----------------------------------------------
6 w3 |# E, I5 F" k/ s    //   菜单:刀具->操作记录->Stop Recording
, p3 K; f  F, e! Q6 T* y1 y    // ----------------------------------------------/ N6 X) V4 s9 {% K# L" T
    , K" K7 R" \  W, \
  }
" H0 X7 @  r% G: c- H$ K( I  public static int GetUnloadOption(string dummy) { return (int)Session.LibraryUnloadOption.Immediately; }/ \) u2 d( d2 L2 b( N/ l5 _
}; P5 |4 L7 Y" D- H  |$ r& [" c& H
这是录制有界平面点选封闭曲线产生的日志# e# D: X7 k! i
我用自己算的的TAG[]转换成NXObject再转Body存入了它自己创建的curves1[i] 数组 结果画出平面了
7 o% _; o0 [, R* |9 ~  {1 K NXObject nXObject1;/ {) W% k3 Q- ]6 R9 u2 z  R: ]+ C" U6 {
    nXObject1 = boundedPlaneBuilder1.Commit();1 W4 N; N% J2 e
但在这段下面加上 Body face33;face33=(Body)nXObject1 时就出错 生成的文件不会往下走 我本意是想让它返回一个记录生成平面的Body值  用于以后缝合用 该怎么改才能让这个函数返回值
% Z& y0 l4 C9 i4 N, N# H3 o; _; `" G  v+ p0 ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了