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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
( [6 J/ d, A# H$ j( v* O0 G* N/ c' J1 B1 P) [- t
[mw_shl_code=csharp,true]using System;
+ S" E# F# W1 musing NXOpen;# E( c9 ?: d2 w: I, J6 E6 y
using NXOpen.UF;
; L& D/ k3 l, L0 l8 n; C5 fusing NXOpen.Utilities;3 P! N6 x+ d9 Y- {
using NXOpen.CAM;
( N. K; E- ?% c1 nusing NXOpen.Assemblies;, k" F8 N) A8 g; r: }' G
$ P/ ?5 ~" m% {5 ]* _
static class GetSubTypeToOperation
- C9 {" z4 N: ?( d{
* p2 M! y& h. _% L) N  _    static Session theSession;
9 K# {* P8 I- O* v/ W$ F- Z; G    static UFSession theUfSession;
7 U7 B. w# b* w& I) S0 H, H  N    private static UI theUI;
3 g: M7 ?( N: i' S& c) S, q) B7 n# u1 |% M- Z% I; t
    public static void Main()
/ R  D+ D* E# f+ M    {
( E! v3 g6 d% v  _# t        theSession = Session.GetSession();
- F  e9 Q6 K! S) [# Q        theUfSession = UFSession.GetUFSession();
) n- w6 R. b+ D8 r; ^. d        Part workPart = theSession.Parts.Work;
" U0 T6 g4 v, r        theUI = UI.GetUI();
' p) r( f( b% x5 ^% M3 o# p0 @+ T/ R7 w6 i7 D
        if (workPart == null)
) l9 {. B3 N$ A& a        {
" A% N; G4 |# M2 Y            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");; l  N- f" P; f* |; C7 K
            return;2 J5 v, ]1 K: @, g+ y9 `
        }+ g5 t1 r/ D0 a4 U

( i1 J8 q1 A3 j  k$ ^        theSession.EnableRedo(false);
0 N* B1 a5 j* K" h
) [5 A; y0 C2 r. F5 s' O. j        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
# T' \% |) w2 [
, P, Y) G3 {+ z8 U6 v6 x  ]7 ]        SystemInfo(theUfSession.Part, workPart);1 v, Y# e9 ~$ o2 g4 ]% `) [' M& H

5 s6 I' k7 I4 i) m$ r- N/ e" q: E0 @        try7 J& k5 S" ~  ^8 V0 [8 Z
        {7 e# X' ~$ f0 M, j! I) ]8 H
            Tag[] operTag;
5 x6 e8 u9 v; K* L9 Q            Tag setupTag = Tag.Null;
! H. g$ t1 q6 G6 A) J# F( E$ J4 ]" z! G) _
            int countObject = 0;5 C8 h) o( p2 ~2 O2 C2 O/ b
1 [6 Q: x, x: r# |/ ?+ ?
            theUfSession.Cam.InitSession();
8 b, r, N/ {3 B  m9 g            theUfSession.Setup.AskSetup(out setupTag);4 |" T; U+ q& [: _" X) ~. q

9 k; ]3 ~. N0 T            if (setupTag == Tag.Null)
3 B5 i8 B# H9 u/ V' [3 c7 }            {
9 I0 A% [% S- `( j+ r5 ^( c                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
: m4 T1 a# ]9 t' v, D+ {                return;1 O3 q) T$ L) i
            }+ e( v- Z5 [) X! E+ N3 z' n
% r+ ^, a. `' p$ Y1 ^5 q6 x
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
+ s% m1 m7 a+ d+ S( U- v
, p; K+ Z% _3 C) g            if (countObject == 0)( X3 ?/ `8 V0 Z6 v& n7 |4 {" v2 t
            {3 W- T! c8 a2 ~+ H: T
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");8 Z) V% q3 d- j5 d  [
                return;
; O$ Q+ a4 c  Y3 o7 Q. k            }$ N0 R1 v$ j, ~5 D. v

0 g1 q$ ^4 E3 l7 M. ?            for (int i = 0; i < countObject; i++)% a6 S8 I/ l0 y; Y$ v6 N
            {
$ p# @4 A  D- d; @                int type, subType;
8 X4 e# G8 Z* e3 v8 K' d- A8 L4 \* W* g. K9 T4 D5 y! c& s' H
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
) P6 ?7 X( `+ m5 m" F: y1 v& v. P' a- ?8 s! T- M/ ]  ^
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
: Y7 S% L% x( a" s- e# V" k' V& a- o8 }+ w: ?) [; X3 [! ?
                if (type == UFConstants.UF_machining_operation_type)6 m+ z6 C9 L4 q& @% u
                {% l9 Y1 V- _# j$ y* j. z
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));. x! @3 q* A7 u1 d) b* o

' Y5 O, D- [+ |# O+ m                    GetOperationSubType(operation);
; m* q& J) p( v2 b9 p& m, K0 d
7 s/ k# M: h% h" t' h                } /* if type */
- }; S* {7 @4 S/ J8 I            } /* for int i = 0 */4 A# c/ A( _7 B. Q( V9 h
        }
& L6 M; e3 E' `8 U        caTCh (NXOpen.NXException ex), K/ L3 }0 V- M
        {
/ Z' Y; W; Q  T, Q1 d' e1 k            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
  {. F- ]6 l' P7 J: W, w3 d: Q        }
+ Q1 D2 ]7 t, P* b/ s9 z$ x1 D) q    }
! [6 e4 _  ]" b
1 m2 Q, U0 G# V. k+ O2 U
+ n7 @5 ?% g  l  K" ^" `. |    /// <summary>
8 r) A% d9 e8 `% m4 C& |+ G0 u    /// Retrieve the Operation Subtype" m5 D) l8 C( a) Y5 A
    /// </summary>
" \- o# M" j: C, F+ ^9 z& I3 ~    /// <param name="operation">The Operation to Query</param>, T$ e1 T8 S6 L. R' |- T  o3 V2 A
    /// <returns>Return the Subtype Operation</returns>. m: l% \9 C: w' t  r1 e7 N
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
2 J: V- S# }$ d- L: G' w% t    {
% `2 U0 W, ~, }, I1 S! a" w2 C        if (operation == null) return -1;
4 Y. b3 s0 E& S) z+ x: ~# f
* Y7 f, J) t* |" P        int type = 0;
8 a  [' z0 ^0 k        int subType = 0;
) n& ?, D& ]! Z
; y/ j( p8 a/ N$ \# H# B5 v        try" V! s0 z2 q, N; l& |
        {5 _& j0 D) n- j+ B1 V4 Y- P2 C
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);3 v$ |. h. _9 p
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
4 w- g! {/ R2 B0 r7 Z6 J0 D+ R2 p! k+ v/ e/ F4 K+ Q7 f% `
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/9 j2 a2 O2 X: K
            switch (subType)# A6 d8 V; G% n2 w+ x' L
            {8 P5 L- d' g$ |
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */% E, K& t3 L; n) @
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */7 {- L# K% _* `) i$ I9 b+ e7 f7 l( f
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
" v  v$ n3 y$ `& a4 m                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */& D0 i, x% P8 K2 k6 k) N
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
" I! d1 \2 y$ a: ?4 b                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
( q9 w8 A& A) D2 I! L  ~9 ^                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
0 X5 j$ h$ o7 D, c- \8 y, b# G                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation *// ], c6 i5 L- b; ~$ x
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
8 K8 ~: \* U4 O: j                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
! L" B" O( J) M* I3 B                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */. d9 a+ Q6 `/ `' j
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis *// E  N2 ]9 y& {- e& ]! R2 M+ t
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */; R# A. g- h" \# e: N
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */8 \$ i# }' T' O* u) S
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle *// q) A5 z% {0 q8 H9 Y6 @4 n
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */+ p% c6 N6 [+ T5 ^: |4 p! C
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */. z' B+ c5 l2 [( @
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
9 Q  E$ R" L1 c& l' m                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
6 o' F* B* a9 P/ J3 \8 O                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
$ p4 Y% m9 U& \4 X3 v2 q0 `                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
& L, V" [9 ?7 H! e7 u
2 p, t. o5 r7 x" P- x+ ~                case UFConstants.UF_insp_tolerance_subtype:% s$ s* B( {! _/ j
                case UFConstants.UF_insp_path_subtype:
; t" q0 d9 Q& l: E) h; k                case UFConstants.UF_insp_output_subtype:8 Q/ F! x# y$ k; I1 I, L
                case UFConstants.UF_insp_misc_subtype:/ Q4 J1 ^8 ~" h0 Y- D
                case UFConstants.UF_insp_align_subtype:
% ?; }4 W' S1 X                case UFConstants.UF_insp_sensor_subtype:) w5 J9 y' G+ O
                case UFConstants.UF_insp_construct_subtype:  T. e% r. \0 y" {+ `) ^8 t- s  A
                case UFConstants.UF_insp_bounding_feature_subtype:
! v+ Y: [9 Z& N: g9 J: y                case UFConstants.UF_insp_feature_subtype:
4 E) s( G/ q/ T, y/ s. I. w
( I+ ?4 j0 j* L4 q0 a% O+ t  @. p                case UFConstants.UF_mach_canned_cycle_subtype:: W3 }" B0 `  Y8 h; M6 ~
% ]5 a/ f6 K1 B  b
                case UFConstants.UF_mach_laser_teachmode_subtype:
; Y) E7 S- R! Q5 B
7 ~9 P, J/ }1 P1 ~                case UFConstants.UF_mach_turn_roUGh_subtype:1 m6 ^' B0 Y2 z7 {  c+ @7 F
                case UFConstants.UF_mach_turn_finish_subtype:
8 Z3 ]* }/ R# q- u8 d                case UFConstants.UF_mach_turn_teachmode_subtype:- f  S* v& @( w/ D1 j1 C9 r
                case UFConstants.UF_mach_turn_thread_subtype:
- K5 b9 ~5 `1 X$ E  t. U                case UFConstants.UF_mach_turn_cdrill_subtype:
* @- Q' Y3 v3 Q& V                case UFConstants.UF_mach_turn_auxiliary_subtype:- r) j9 x3 X, l, A4 x% m
                case UFConstants.UF_mach_turn_probing_subtype:
$ Q4 ^: A: a  `# `2 l                case UFConstants.UF_mach_turn_tool_probing_subtype:
! [. D. l' P: l8 a2 j                case UFConstants.UF_mach_lathe_mc_subtype:
6 j! t" }( _4 l6 D! ]/ V5 E2 s" v                case UFConstants.UF_mach_lathe_ud_subtype:
# a" [4 b9 [! a3 q5 I0 d' ^2 Y8 N& M' ]" w: c
                case UFConstants.UF_mach_wedm_subtype:& L* _! _0 m9 k( v6 W% G' r
                case UFConstants.UF_mach_wedm_mc_subtype:
' Z, d7 S% \' {9 P2 p, R                case UFConstants.UF_mach_wedm_ud_subtype:; S. G2 B8 I2 |# l& }. Z: t9 K+ ~
                case UFConstants.UF_mach_mass_edit_subtype:
( ]$ R( n6 N, k. Z6 S                    break;
& W5 y: ^1 t+ r" r
8 N/ K: m7 Q0 p) e4 t# N. }                default:
; y' T( b! Z( P! K                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
2 a8 Q" ^4 Y) O9 G                    break;% W% E  w$ R0 k" U
            }8 E0 ~" m) [( V
        }
5 I8 G- U8 f9 h1 |/ j  o        catch (NXException nXException)" M: c. @# a$ V" D7 [: w
        {
: W" _# x# z' ?. O4 B+ L, |. S# D            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
. p/ u0 k7 t1 u* u: Y. _8 i            subType = -1;
, m/ v$ r$ M5 }2 g2 g        }4 W4 ?+ [+ T3 ~' B
9 Q3 ^4 M1 v/ l7 c/ x
        return subType;
0 ?1 B  u; \  [2 J" v! F    }
3 Z7 j5 V% z( @# k& `  s# j- s' \. x0 r8 k& f
    /// <summary>
! }. |4 M  n$ K9 w( `5 Q    /// Display System Information
% ^% ^  A  G. I6 J. z+ r3 T    /// </summary>
8 f* R. j6 O2 Q. J4 @2 f    /// <param name="uFPart">The UFPart to Query</param>
, m4 Q, \$ Z1 @- v6 M    /// <param name="workPart">The Work Part to Query</param>% y4 z( s5 B5 H; n, i( A
    static void SystemInfo(UFPart uFPart, Part workPart)
1 x( ^* ^; Z1 W0 s/ u" W- q: U+ ~  |    {4 j* d2 ?  l9 d* b  X) _) h
        try: b' l8 p) i0 f) b1 V: z6 h' |
        {
# }7 ~: G* `. R2 o4 e3 D: p            SystemInfo sysInfo = default(SystemInfo);
# l2 c0 Z* I) @0 B0 ]            theUfSession.UF.AskSystemInfo(out sysInfo);& t7 z: M! k4 W+ s
( a3 B; [) d& L$ [. u) l2 n
            string partName = string.Empty;! X" t( D$ o9 _  M9 x
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
" Z3 l% R- p- ?, d3 [& f3 l* {4 q/ C
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();6 [5 L0 Q) E( d* _
            theSession.ListingWindow.WriteFullline("============================================================");: f) F& b& ]1 f  O3 H( p) S
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());5 i8 C; [8 E! G
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
- h) N  ~* X" Y* U+ E  ?: ~% ]4 `) @2 |            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);* @8 w) i# i( r/ C1 m9 v( B& Y
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
. o# p, ]' X, e6 t            theSession.ListingWindow.WriteFullline("============================================================\n\n");
( ^9 B! _* t! b. @        }+ B+ d. C/ e4 c+ T- v3 d! F
        catch (NXException nXException)) l2 I4 C6 h6 |5 g
        {
+ y9 Q( w0 ^- _4 f' N! _            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
" x( b3 q( U1 ~) v' ]0 o4 \        }
4 E9 a8 Q' [0 L8 P    }
+ f# a, c1 t# `" k
% {) W. L. M& a( R: Z* i    /// <summary>/ K, f7 g: s6 E
    /// Unload the Current Image
6 s$ t) z- U. K0 H" u' k' R    /// </summary># p' ^: E5 d6 N' J  J
    /// <param name="arg">String Send by NX</param>1 [; o- U' `9 K, g( W- l0 @9 V# _
    /// <returns>Unload Integer</returns>
: p& q% z1 k7 `    public static int GetUnloadOption(string arg)
  Z: F  E* Y9 V0 }' Y    {2 t" N) P2 E% n. w
        /* Unloads the Image Immediately */1 G& W6 r, l; R% w
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);6 b/ \/ }4 S( q

$ S4 _" ^0 _# u& J: _- e- ~* q        /* Unloads the Image Explicitly, via an Unload Dialog */
' ?/ K8 d& Y2 f2 L4 a        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
- z8 O+ A# P) P
$ h8 V( G& w1 B( p" \; n. x, E        /* Unloads the Image when the NX Session Terminates */7 r: r, u  q( |( k
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
3 W" w. _5 ?% }! y    }
2 x1 H1 k, `( \* e4 E" [6 R}[/mw_shl_code]5 X0 I0 r8 }, L. m1 }" W
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了