PLM之家PLMHome-工业软件与AI结合践行者

[二次开发源码] NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal

[复制链接]

2018-6-1 09:27:40 2466 0

admin 发表于 2018-6-1 09:27:40 |阅读模式

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
7 u" m" L! F; D4 X# j- o. J3 K& |- O/ |9 q9 s* H3 M
[mw_shl_code=csharp,true]using System;! V6 i6 E$ Q% c
using NXOpen;
# F; s% g; d, v8 h9 `! ~$ t" cusing NXOpen.UF;+ \5 f5 N- v, E6 x2 d1 J5 p
using NXOpen.Utilities;1 F/ N0 d# \  z
using NXOpen.CAM;
% f# P1 m; q# M  @using NXOpen.Assemblies;
' x. o1 x* f' y0 n9 t& C! X: H( P6 m
static class GetSubTypeToOperation4 f% L4 g5 i6 X3 L# ~8 l% g" ?9 |
{
" i" h0 s" e# v# g% g    static Session theSession;8 T. `. j. t1 c0 d, J
    static UFSession theUfSession;
9 `* Y) A* n3 w1 u    private static UI theUI;0 y! P  x( V! d; C

' t3 n7 V4 i4 x    public static void Main()
5 f) P" L  i1 t& v    {5 [$ \* ]. m* N) ^. D, I
        theSession = Session.GetSession();
* Q' ~( R7 C% c+ b& e1 k. n" |        theUfSession = UFSession.GetUFSession();  N7 B& q) ^  A+ G
        Part workPart = theSession.Parts.Work;" W3 _# U8 b4 S: u8 C+ X  k6 r8 e
        theUI = UI.GetUI();
, |2 g9 v- N) X5 I  S/ F7 h7 L1 t) T8 ^7 U6 b5 ~5 [. J
        if (workPart == null)
8 g1 q1 y5 ]+ Q3 x        {2 b4 x& q( |& I
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
3 G& l' X* l. W' O$ b  h            return;
6 n9 a( @! g+ H0 l6 D' H        }; r, ^" Q. i4 I7 p) l( O$ a) K  {

( ^; y& ]/ f7 J  H! I        theSession.EnableRedo(false);8 Z; r9 w3 G2 b  t6 g' h( M$ \) G# @

4 B4 y6 m. z2 E- N* e+ p        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();( ^! S# [, v( r: m
( c8 I  @* U% i$ g; t% a: A+ V: Y
        SystemInfo(theUfSession.Part, workPart);" T: _- c% ~1 r0 [+ {

" u5 P7 o6 J3 A  q        try
! b3 O6 v4 m; }) o; Z$ H- w6 n; d; G        {
0 h1 t: }) O; w" h            Tag[] operTag;
/ a" `5 m9 X: _2 m& W/ U1 N6 u+ {            Tag setupTag = Tag.Null;
0 L* R1 o+ w  P
' }( i0 b6 `) T- |3 g            int countObject = 0;9 `" Y) X0 X/ z8 Q2 @$ t7 \% `" n5 X

" q, p; m( H2 v  K8 l            theUfSession.Cam.InitSession();
: ^3 P3 [" t0 w) N+ F5 N* H, y: I            theUfSession.Setup.AskSetup(out setupTag);
$ v# D+ |  F0 S( |, J1 @" j8 v0 y+ R8 M
( Z7 N  ]& {+ [' d* q+ @            if (setupTag == Tag.Null)
  |" u$ l& Y* B- v+ {            {
# i6 L  M9 r; W8 ~" p                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
. @- x, ^) Y% G; W7 j$ e                return;. c5 C$ u1 D* j- k  t
            }
( b% f0 x# z! l. ^) [* U1 H0 E$ {+ T3 H
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);1 k' s3 e1 o( c1 M! J
( C4 ]5 j! I6 i, E
            if (countObject == 0)
5 H3 @2 e5 E( F! d8 \            {
& }$ _0 n, i+ F8 P% x* E; V: G) ]                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
! m9 Y# l; Z) T- \                return;
( R( T+ x  ~: _9 m. j0 @            }
5 |' W: f. z# ?8 {+ `. `3 A% H5 ?% Z. d
            for (int i = 0; i < countObject; i++)" R0 }' f) t9 O# C  a
            {# p# N+ F  K: L# K2 y+ s! ?
                int type, subType;1 f9 [8 u4 c, ?) O/ j4 L# b+ i

# M3 Y$ ^, F$ i) d) E  o7 t2 k                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);1 ^" q7 L1 B- t
9 Z  P  B$ L7 J2 _' o' q( t9 i  K
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
$ Y3 W  l2 n0 f
+ z! Z$ ~: m  m) }- l8 e                if (type == UFConstants.UF_machining_operation_type)
; \% e4 ~5 Z  |/ j; H                {
6 u' }% k& D! D                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));0 Z" U1 M' [1 \$ C6 J7 N( t8 t
; |% y2 Q. e9 X+ M2 [8 V6 `2 G/ |
                    GetOperationSubType(operation);
2 E) v7 }$ N: B! d- @6 C+ t8 O6 p, G7 D- e2 b6 I
                } /* if type */
$ z1 [3 D" B' K. M" D2 {            } /* for int i = 0 */
# {. i. q% g- q$ e8 J        }
/ Q- O' Q. h/ ]9 O0 q        caTCh (NXOpen.NXException ex)
5 _, H" ?7 a2 @5 Z' Y! |        {9 G) E4 Y# j# q, _
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
  R- J9 D* ^: g+ Q        }
8 i& U' M. U7 Y( ^4 s6 y: p    }7 ~9 q# x( W# `$ E/ O7 O

! C2 z) b* l0 z9 k4 }- X6 C3 ^3 ~$ f! G2 Q$ r  N7 A0 [$ C$ S
    /// <summary>
0 S' |  M# g# H. ]    /// Retrieve the Operation Subtype" f& X) O$ U  n5 J& K! ]7 q' y. F- D
    /// </summary>
: q: ]  Y0 I  I" n9 \* I& K# ~    /// <param name="operation">The Operation to Query</param>
. B& L# P' W/ A6 Q- o    /// <returns>Return the Subtype Operation</returns>
4 a. C1 F4 n6 d1 ^3 t    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
5 B) T1 D0 O, ^: `3 e; A    {
6 D% x1 e' N$ S$ x, C        if (operation == null) return -1;1 W* ?) ^) w0 b& D& a% l8 Y# x$ H

# m* Q  [: f$ C1 S- a/ Q* m/ {        int type = 0;
2 x4 S; d1 `7 T0 B2 H        int subType = 0;
7 r( |- o4 `( d; j
0 t6 X$ B" s; t        try
# \9 M6 s$ D0 v. J* T6 }/ _7 A9 O        {& R( z' H# o2 J& _1 Z4 j9 Q. _
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);! l3 ]0 @: k: u
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());3 f+ `. B5 @, p# d+ q2 o

. v& h" N; x- E8 d- S            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/% M' [& H) Q, x2 e! B+ b/ G
            switch (subType)
+ [- M& M5 u+ m; |* ^            {; t& V( ?: u1 i5 f: w- ^+ d- C
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
# P3 U- {2 a! j- i3 z% F/ [/ y                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
$ T. u$ F0 s% P9 D6 j                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */3 r; o3 c. `( n7 J- Z4 g; n. g
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation *// _8 u3 e& Q& `1 G9 B% Z
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */- u7 p9 @$ j2 D& o$ w% N; O
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */" G& {3 d7 g$ Q' U- `' w
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
4 |  N  y# e8 r" S' y; v; {9 ~                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */* O+ d' _6 X* x+ A
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */# u- J( J) C. V, @: F
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */8 V% P4 N1 ?( N+ d
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */+ k; z# s& h) ^4 p; H
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
8 M3 ^8 T$ S$ \+ ^! J: U                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */1 E+ K+ J4 n1 B
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */* t! n4 o! q4 X( ]1 s2 {
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */4 S" _5 n* U1 E& X* O
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */  E1 i  d3 C, x' O( d& i# r
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */8 s1 Z& I# i, K1 E9 q' c; I, j; D2 B
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */' X- u" V" t" K2 t/ x
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */4 j! K' [1 x/ S4 L7 D& B
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
: Z6 l  g+ e  Z, S                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */3 t3 N; d: V  h& `9 L
: W7 V. V: _2 z& t& g: f
                case UFConstants.UF_insp_tolerance_subtype:# ^$ h: P( }9 S; q6 u
                case UFConstants.UF_insp_path_subtype:& b( `3 ?. R( r% C/ {+ o; Z, X
                case UFConstants.UF_insp_output_subtype:" g0 i$ D0 k4 W$ ]
                case UFConstants.UF_insp_misc_subtype:
4 H* w& c' ?1 t$ d& \: t0 w0 k                case UFConstants.UF_insp_align_subtype:: g9 N$ Q% t- t+ r8 }  R) B
                case UFConstants.UF_insp_sensor_subtype:
+ ^2 e% o: S  d* B  t; [                case UFConstants.UF_insp_construct_subtype:
" a1 p5 ]* S& A9 N                case UFConstants.UF_insp_bounding_feature_subtype:9 g' {2 e) R5 C( F3 \+ @0 O6 H3 R/ O
                case UFConstants.UF_insp_feature_subtype:
) W& X1 q# i# t. i
/ y4 }2 ^3 d% M, C                case UFConstants.UF_mach_canned_cycle_subtype:
- Q( C" I. ]  h, p7 W
0 t/ U) W( d2 y                case UFConstants.UF_mach_laser_teachmode_subtype:# R# P( y# k5 U' L, P, d4 ], i. x

/ N! G1 w# n/ t- ]                case UFConstants.UF_mach_turn_roUGh_subtype:, M7 A5 D$ b" B
                case UFConstants.UF_mach_turn_finish_subtype:* w; @, t  t  j5 S( b6 [& d
                case UFConstants.UF_mach_turn_teachmode_subtype:
2 A! }) g, R7 `' ~' a                case UFConstants.UF_mach_turn_thread_subtype:* A; S! }' [7 I2 N* b5 ~9 g
                case UFConstants.UF_mach_turn_cdrill_subtype:. a2 W* A9 g4 g( B9 p6 `4 k1 R
                case UFConstants.UF_mach_turn_auxiliary_subtype:( S) R9 p0 a! }- ~. T3 h
                case UFConstants.UF_mach_turn_probing_subtype:
9 r, G% G  d+ E' Q& W* d: A                case UFConstants.UF_mach_turn_tool_probing_subtype:. G/ b2 Q& w& s5 r, i7 C
                case UFConstants.UF_mach_lathe_mc_subtype:& I2 ~8 y, Y3 N6 o5 d
                case UFConstants.UF_mach_lathe_ud_subtype:8 |4 n' G: K* k! ?2 `

5 g1 n: K( z6 [- l3 N. W" g1 c& H                case UFConstants.UF_mach_wedm_subtype:( j  x0 l8 @/ k2 p& l; S7 h* |
                case UFConstants.UF_mach_wedm_mc_subtype:
1 W# _) S' p) H                case UFConstants.UF_mach_wedm_ud_subtype:
6 s1 [, Q. \& E  \( W! P                case UFConstants.UF_mach_mass_edit_subtype:8 T# Z* e! B0 v0 ?
                    break;1 I4 H( S6 j0 z# s8 x
# o+ q/ P, s5 @1 J
                default:$ D* S( |  _( ~0 I( y, e$ s; a. ^
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");5 C3 o* _$ m  `) I
                    break;
$ d" |! K4 M# e( P9 J) X            }- G9 y' G0 Q4 X; E
        }" }9 L3 x+ f4 _
        catch (NXException nXException)
6 y6 K, J4 g; |3 y2 N0 p        {
) R/ V4 E4 [! z5 Y9 @. k, l            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());6 j5 h2 l1 R5 o' ]' }
            subType = -1;
' A# E" y4 x' O+ \        }
+ I& e& z# `1 b4 y0 |
( a7 F* O! \0 R1 t# {# ^% Q$ o        return subType;
6 r# i2 u; e0 x5 M" A    }
3 p9 `# m- f% c  p
4 M* ~8 l  r2 e4 b9 R7 V& Q* S    /// <summary>' `6 u/ L# o  e
    /// Display System Information
$ ^% Y7 j5 y* s+ ^. a/ _7 p& u( @1 F- a    /// </summary>4 k( \+ S  J7 I5 k0 S
    /// <param name="uFPart">The UFPart to Query</param>
* Y; ?4 G- o  x$ ~  Z    /// <param name="workPart">The Work Part to Query</param>
+ \' K: A6 |" G# i) c    static void SystemInfo(UFPart uFPart, Part workPart)8 d! n2 s/ w. J. ~. p. z7 _2 F, D
    {, k; a# }1 Q+ _' ~
        try# M9 S1 e" F0 |3 \
        {. R7 d+ f' t5 q* l! J; K7 O9 V
            SystemInfo sysInfo = default(SystemInfo);: a% e2 u8 R! @/ A7 c6 Z
            theUfSession.UF.AskSystemInfo(out sysInfo);! V) K5 o1 }" h2 r2 i

5 l. S3 z$ e4 S6 {+ s* A            string partName = string.Empty;3 Q1 B2 @- x; j! K( [0 {
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);5 X: {& j7 d' w+ z" W7 |
( {* B& V) Z! V0 T' w5 r1 j
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();- A2 l) p8 f4 c/ M' ^
            theSession.ListingWindow.WriteFullline("============================================================");6 ~9 i% B  F+ X$ z, q2 F  R
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
/ }) R5 N  f. h/ n0 f" `            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
! d& I* N$ _; u            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);8 j; S3 p9 H; e  y. D  R3 y5 V
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ m0 E- i1 [6 |. [( r3 D7 K
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
. Y1 A" C" M. _5 ~+ ]: C6 K. _        }% R/ t) h1 o. f' L# }  V, W/ E
        catch (NXException nXException)
3 C# y# ^0 x' h        {
: q: c/ w  V* _7 e) @            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());3 E: ]. f4 @8 X& t7 Q0 l2 X
        }
- J: r% c6 _& u# L# O" S    }4 c. n, a1 }3 m2 `- p, m
# F' z" P  B+ w2 K( o( P* I
    /// <summary>; h* r0 v0 C; S& v% {% Z
    /// Unload the Current Image
4 t, f5 g; j* ?/ ]  N: j    /// </summary>7 `, q; `6 G; ~( z& o. o3 y
    /// <param name="arg">String Send by NX</param>
; s8 C. u) c  @- r0 l% s( \    /// <returns>Unload Integer</returns>
& f" T; T4 m- ~: _/ i    public static int GetUnloadOption(string arg)
( F5 h  P1 W) a+ Q7 e0 p    {
( P3 W6 O, V! G# ?6 ?2 Z' P* {  D! {        /* Unloads the Image Immediately */
" Q" d2 ~4 n0 U8 [$ _( P/ h, h# }        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
8 ]  P2 A0 L2 Q: e: t# {+ @; a7 i5 ~
        /* Unloads the Image Explicitly, via an Unload Dialog */
2 i2 }0 [+ k1 O  y. u! |        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
' k' C1 s6 w! r9 L" q; x! _
9 L& `5 y0 ^# y! z/ _        /* Unloads the Image when the NX Session Terminates */  R- Z$ {( S9 Y9 G/ a
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);  |+ X; t( l6 h3 s% A
    }! n0 y& z# A8 K0 B2 a' t
}[/mw_shl_code]" ]4 C& B% z. |# T
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了