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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了) v( }* }) U% S( q: R

( Y' D1 t. }! d[mw_shl_code=csharp,true]using System;% j- S4 N  W5 s
using NXOpen;: C5 q9 e4 R! ^  P2 Z0 m/ b
using NXOpen.UF;* t* M/ C# H* r$ J' ]
using NXOpen.Utilities;  q1 i7 }8 f4 T$ x5 b
using NXOpen.CAM;
) [2 p2 T7 R4 F) busing NXOpen.Assemblies;/ t7 \; {: a& M: j. K% \7 d( b/ F) i

+ M" ^/ O2 l' \. P, }static class GetSubTypeToOperation
" s) l; G: x5 E0 \{: b( p0 }3 J+ h* B7 k
    static Session theSession;: c1 A* _2 T$ W& F- ~% g! v
    static UFSession theUfSession;
+ u  Y* n% h3 t, }/ o. Y) I    private static UI theUI;" t& W1 m" C6 S: f- y

! ]& e# b) {7 z8 I7 z8 X    public static void Main()' r, c7 _8 e5 D3 ?7 x- e
    {, [( h9 X' [$ s3 m' ?8 i
        theSession = Session.GetSession();
  K3 e' m) J, b0 {) Z5 M5 y- u3 t* L        theUfSession = UFSession.GetUFSession();
/ ?( U! U$ a/ ~, z- U- ]        Part workPart = theSession.Parts.Work;, D' T) s% O! t8 v
        theUI = UI.GetUI();
, Y8 N5 k! E9 Z' _% H* B# |) ?9 E! s' X  f5 X1 h
        if (workPart == null)
/ ]9 A/ ?, W' `: c        {
" E% l3 c; Y& Y0 Z8 {            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
, @: X, P7 K; N3 t* @7 @4 g            return;
' J" B; ?+ e6 @6 A        }$ v5 ?9 v  Q; M% c
! O$ B! Z' \( n+ {1 `6 ]: v
        theSession.EnableRedo(false);
3 K1 A1 }) k' y6 f
8 X, y' y6 Y4 f% S! @        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
! g+ r* g  \4 c9 D" ~
. A8 j# h+ e' e- y( y$ q6 x, ]        SystemInfo(theUfSession.Part, workPart);) {) L- o5 z8 b$ S! }6 v5 Y" [
# z$ q) ?3 ?/ q2 s0 I! J3 o
        try/ h/ i: S1 m. ], i+ Y. y
        {
5 N* a5 z/ B- ?/ ]$ ^            Tag[] operTag;: ~( d0 o; b! M2 ^3 j' N
            Tag setupTag = Tag.Null;
  T/ _# J6 E! d% g7 G7 O5 C0 J$ \& h
, B" G3 D* C7 T" N* ]: K            int countObject = 0;
* `" A( k' i$ |" q, v1 h; V4 t7 ?0 F8 q% F# E& C! v8 b$ W; H
            theUfSession.Cam.InitSession();
7 y  ]' Q8 ^9 l/ n            theUfSession.Setup.AskSetup(out setupTag);
7 Y3 p0 D. @3 o/ |+ r$ X5 A. J( c# |2 _$ A3 x$ r
            if (setupTag == Tag.Null)
* [' E  n9 Q0 r- w            {
! B  w) i( k' \; u                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
/ l) Z/ p/ w1 G4 g( b                return;
# J) _1 r/ l* c: p6 z5 I( \            }# Q( c5 y2 [1 [  W! x) T2 e! {9 N

: b$ v* q2 [$ t" I" {+ a            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);( l2 o6 c3 |( b/ ?8 T+ b% v; Z: j
0 L$ u7 {; G5 C
            if (countObject == 0)9 |9 q! v8 T. o" O& J. L) g  y
            {2 @5 f) Q, ]' S( l
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
+ ^7 k9 k! }5 l                return;
5 e; R$ w! I5 g/ Y+ ^. }2 z1 A/ T            }; f* D6 J2 K% m0 u' p: l
  b$ t7 E9 k0 ^! K) ?8 `: q3 a
            for (int i = 0; i < countObject; i++)
+ L5 Q6 `5 e. n' G  Z            {( p$ S4 Y+ _8 K/ c
                int type, subType;
& Y9 @1 A8 e* |1 g3 t( B
% w  g9 G9 N3 \                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
& A* ~, U& {6 x& }( y3 E3 J; _
+ n/ ~' }2 s" y! g                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
" S9 C* s+ T6 L# U8 O
  D' B% Z# [& m  r                if (type == UFConstants.UF_machining_operation_type)* S4 X$ C' b* P! E4 C: S& Q+ n3 f
                {* C# n6 u$ B9 ]9 ^+ B! }
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
; T9 N, g* [$ d2 Z: {
: S; U, q( _1 D  X                    GetOperationSubType(operation);
& E1 b1 r# T/ I8 i1 p* `, f5 D. |9 [. z: K5 p6 E8 Z$ T
                } /* if type */
2 H* m# P2 `8 `* `6 T5 ?3 u4 q& O            } /* for int i = 0 */
' d/ Q% _$ I+ x- U* @  v        }
. t$ ?% W! K3 ]        caTCh (NXOpen.NXException ex)) t6 {+ O1 P6 p7 j6 J( Z
        {3 g$ x- s7 n% T2 [8 N2 a
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
$ S8 i2 C& C0 @- R5 ^. `, Y, t        }: z7 t1 H& }% E
    }: p" k5 H  O" s. s: u" f: _
8 `  c; G, b7 `+ G% U- }

! Q( ~6 y5 r- C/ y2 \    /// <summary>
6 L- K; S& o: b# W5 X$ v    /// Retrieve the Operation Subtype5 Q  |9 V; W! @2 w+ Z; L% h* d' R
    /// </summary>  B+ o! c! S& P; T: }, t( E
    /// <param name="operation">The Operation to Query</param>- F! Z3 c& x% l2 p4 X& @6 C
    /// <returns>Return the Subtype Operation</returns>8 d- K4 B( Y' T: N' l5 B' }) F
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
0 y- j* H+ f& D, A" E  S& Q7 q    {, P" S' ?7 {" q* l, q
        if (operation == null) return -1;
4 G+ J5 y  ~4 M" U
+ u) Y2 y6 ]) T; ?        int type = 0;8 g3 Z* s$ [$ `7 x
        int subType = 0;! F0 O! Y6 V6 b' |9 N) N; ~* s

( G5 [8 k- k  Z: @        try/ k& w# f$ Z8 ~; P: Z  a
        {
) {" G; V" }* g" N. U            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);( `  ]+ d% ^7 ?/ N9 S
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
( x6 x& d* t! [7 a! i. {; ~& V9 I. F" Z0 l
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/% `8 C) U3 U& w. g, B
            switch (subType)
: G& _* ?- H- ]4 s! n5 x) I            {3 e: H; I2 n- F& [% ]( ~
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
5 F" f$ Z. c+ F) a6 g0 Q                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
' I0 p2 ?1 }8 e( t9 E: W                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */; e( j5 ~8 j& r7 {% I
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */( B4 J7 U( |; Q1 T: _5 Z
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
8 A5 e5 N" o/ R! o                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */9 `2 O; A& r( n, ^2 h
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */9 C3 U4 d5 d& ?
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
7 {: g. Z# g! M) U( h1 i7 ]                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */! O! E+ t/ O5 P+ Z; ]3 B% M
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
% v2 v8 j( w, v6 @9 s                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */* A6 a! F0 z1 g7 ^1 N; @
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */8 y0 Z" i4 G) P$ I* J- w9 v
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
7 L( ]) k3 R* ~" \                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */+ q# [1 \+ [8 n# U5 T5 i9 C. A
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */$ Y$ i+ L& Y$ i. x$ B, d
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
8 N5 V/ H- l  E* v- ^& v; ?" A                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
0 V! P/ h0 x" G( k% z                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */  ^: A; t8 K+ V& p
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */4 F, [6 H, f6 q* l( E$ O. S% e8 D
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */+ }  }( i2 _' d# l( x
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
1 E+ J  ]3 L; B& D; D( r! b9 ]+ Z, Q9 M+ e
                case UFConstants.UF_insp_tolerance_subtype:. C( e6 C% l: x3 l" S
                case UFConstants.UF_insp_path_subtype:
# T) _% w$ }* ~) ^2 {* u                case UFConstants.UF_insp_output_subtype:
# F8 E+ L8 _/ f  Q6 f. s                case UFConstants.UF_insp_misc_subtype:
* d% Z% T) @0 @) ~  }% G8 r- @8 e; K7 }                case UFConstants.UF_insp_align_subtype:
0 n% c0 |; X3 r. o9 w                case UFConstants.UF_insp_sensor_subtype:
- _" v5 l- T! m1 `! C6 I# _                case UFConstants.UF_insp_construct_subtype:
. B0 Z4 X! N2 q; U/ |8 w# K                case UFConstants.UF_insp_bounding_feature_subtype:
( z% p/ v* i7 d9 |' w, P- B                case UFConstants.UF_insp_feature_subtype:
( s+ g7 f4 N! G5 q
# m5 [6 A: P% Q                case UFConstants.UF_mach_canned_cycle_subtype:
% G- {) O* F3 c/ L( B$ f. P' F, `9 l3 W  y- @9 r" p7 V
                case UFConstants.UF_mach_laser_teachmode_subtype:
8 H& Z$ @( e0 l" [: n- Z0 _1 V/ S$ S6 S
                case UFConstants.UF_mach_turn_roUGh_subtype:
& C. F) h. a2 U  [& V# L1 c                case UFConstants.UF_mach_turn_finish_subtype:
- u4 o- T# J$ J, D1 w# B                case UFConstants.UF_mach_turn_teachmode_subtype:
% w; E+ K6 v7 D9 B                case UFConstants.UF_mach_turn_thread_subtype:
/ w; d. b( _6 J) V( u9 e                case UFConstants.UF_mach_turn_cdrill_subtype:
+ S0 f; p# }/ M7 J/ Q( |                case UFConstants.UF_mach_turn_auxiliary_subtype:
  L# u1 y# y7 `0 q1 q                case UFConstants.UF_mach_turn_probing_subtype:
& s! t8 \% z" q9 x2 V! y                case UFConstants.UF_mach_turn_tool_probing_subtype:# y# l: I( G. \1 @
                case UFConstants.UF_mach_lathe_mc_subtype:
5 M0 Q& M* l2 ]0 }                case UFConstants.UF_mach_lathe_ud_subtype:8 q# q% ]$ q: R
$ P. K+ I6 k- X2 `2 v9 x
                case UFConstants.UF_mach_wedm_subtype:
3 W" n  r" N4 G7 T                case UFConstants.UF_mach_wedm_mc_subtype:5 {; o1 X- u& Q& F# [& |
                case UFConstants.UF_mach_wedm_ud_subtype:6 E# g% E4 q2 ~9 m3 t# i
                case UFConstants.UF_mach_mass_edit_subtype:
2 C2 G) j9 j4 I                    break;3 ?9 B* o% l1 D6 U' R' d
1 r' @6 c3 V' K9 y/ D' a
                default:( O3 a/ O; h: b5 Z1 q6 t
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
+ p& Q- |; |! A$ H" C( g                    break;
9 P; C$ D2 A3 @- I/ Q            }! H3 o( ~- i$ w. Q
        }
- M5 {+ m! ~! x: W" b! }! T        catch (NXException nXException)
6 d  {* V+ |8 L1 W8 q4 u- L& a6 G5 d        {7 ~# \7 c* v8 g. d
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());$ \/ I. G, p7 d. m4 \4 a
            subType = -1;
, R6 K7 t2 U1 y- I- h3 F% k: I        }
! R* _" p( d' C/ M/ X! F$ i
# R. }& S6 Q" w' E        return subType;
7 p7 J/ C4 T. G  J6 V5 z    }9 r. M! Y0 ]4 H- ]. x9 V

# q9 v6 D+ ^+ _% i  F- T  J( D/ W    /// <summary>0 ^5 g0 O8 k+ T" J( r0 i
    /// Display System Information5 H  E+ C& `5 ]+ H
    /// </summary>
( S# n* t8 F2 w1 P    /// <param name="uFPart">The UFPart to Query</param>
0 V6 Q& ?: a" N& l    /// <param name="workPart">The Work Part to Query</param>! ?* Q! l3 p. {" h  c* N
    static void SystemInfo(UFPart uFPart, Part workPart)
& j7 A8 a/ ?) K  r! s+ \! d    {6 v0 p7 S1 F2 }3 o
        try
* C7 _# i* z- j* n        {
9 _! O8 w4 K! N8 D' d) Q0 s, z            SystemInfo sysInfo = default(SystemInfo);6 I; \4 J. i) ]9 X0 I) t
            theUfSession.UF.AskSystemInfo(out sysInfo);
0 |2 p+ z4 R& y; x7 }3 \6 }
0 a& t7 Q/ G- N8 _6 E6 t* J6 Q. Z            string partName = string.Empty;* `' f. s( {+ {' U# m( }
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
) m' Q, L% F0 ], h: C! K/ V( w( j
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();! q9 k' G1 K. i
            theSession.ListingWindow.WriteFullline("============================================================");8 ^; u' ]8 P% B( Y7 p2 C" e- a7 ~. k' g
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());+ e3 O3 B5 U# j9 K9 u
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
. w5 Z, i! L9 Z, ~" L            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);/ s* N  A; {# [4 ~
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());: n+ U" l$ X, A6 @( M5 V
            theSession.ListingWindow.WriteFullline("============================================================\n\n");8 V, ~; }" w/ |4 J. I/ O5 o2 ]9 h
        }% |% l7 q; X, K* h* A
        catch (NXException nXException)" ]; D7 P1 m0 x9 u& a, X
        {! L+ X! |; B$ e8 b% M
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
( N# R6 W! e4 r        }( R- R8 x! Q( S+ A: y9 D
    }
* K; D: d$ `" w0 |
4 A0 B; e& I% D3 S    /// <summary>
: {, E1 y8 b2 {9 c% Q# D    /// Unload the Current Image8 U9 r1 ~" P- c6 W7 U: h4 C/ Y
    /// </summary>  `2 W# k) w) h0 D: b
    /// <param name="arg">String Send by NX</param>
3 ^, q% I: U' X8 W. x    /// <returns>Unload Integer</returns>
7 p5 G5 _0 U, j/ j: N    public static int GetUnloadOption(string arg)
9 _% B% r" o3 Y2 M$ Z    {
, `* f0 ]4 o+ }; M6 V        /* Unloads the Image Immediately */
/ d- t  b# r4 a2 S7 ^+ r( `7 L$ B        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
3 U/ i4 Y- _! ^
% ]# S/ v% ?" j7 R( T        /* Unloads the Image Explicitly, via an Unload Dialog */3 p! s. \9 x( d% k
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
) I4 l9 G; k/ {. k, l( m7 Q' i1 h( B( o. b; O, k7 a# n" e0 k; e
        /* Unloads the Image when the NX Session Terminates */- M: t8 v/ J. h# t6 E# ~
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);$ x: D! L# t  d. `
    }  D& Q8 a! Z9 l, [: B
}[/mw_shl_code]
/ [" X% C$ I: Y, m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了