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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了3 H* ?3 g3 a6 L# S3 T# s) M- h
, [2 ^0 O: [! ~9 ^- o8 [
[mw_shl_code=csharp,true]using System;
3 S, Z* h; ?8 p" Zusing NXOpen;) T# ]. B  \1 q' @6 y* B* m
using NXOpen.UF;
4 @6 f8 C0 u( H5 ?( Uusing NXOpen.Utilities;# X) B1 j( b7 e8 ^! C$ L8 Z* u
using NXOpen.CAM;0 M1 F3 [- ]3 B; l9 S
using NXOpen.Assemblies;
! L% o2 I+ a7 a# m2 `' I8 o0 r  u3 V$ |9 z2 `  Y+ A1 e3 X) F
static class GetSubTypeToOperation
0 I6 Y! d1 |! L4 S6 v{
/ [) @  D/ z! i" E% x    static Session theSession;9 L* m- y& h3 c; G: {
    static UFSession theUfSession;3 s* x1 I2 p; o' N
    private static UI theUI;
7 C- @7 [6 D) r0 g4 a. o5 q* N) X, k: f# f
    public static void Main()
% q3 \6 c2 k# A    {/ j' J- a0 _; \. w$ l5 }4 w
        theSession = Session.GetSession();. k6 E& u* f1 d5 i9 U6 ?
        theUfSession = UFSession.GetUFSession();4 U5 t2 k' H( j7 W/ b0 e4 I3 O, V
        Part workPart = theSession.Parts.Work;
0 E0 T3 t5 }/ A0 M9 w2 O' f. {" C$ _        theUI = UI.GetUI();
& E2 D. h$ T$ K7 S
* t  m2 E6 A: E4 U        if (workPart == null)8 B* p' k% b$ W
        {3 a3 t, w  r5 x( ^# u
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
9 y7 w- v: g, q4 w- A            return;' i8 ?1 q4 i  f/ z
        }
6 h& c3 h7 P  ^
: H1 h) q8 [5 u; w        theSession.EnableRedo(false);# M% N5 [( f& c/ Z; n9 r
* ^2 A4 J. Q  N8 X$ ]2 u
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
% w. m- N9 w: o; o( {1 D$ U8 _: D1 Y, B# ^: x" h
        SystemInfo(theUfSession.Part, workPart);- {5 S+ j- P9 `- ~4 S1 d
4 v" f# y4 U! r4 n
        try4 d5 r( J7 G/ j7 ]
        {+ F! m, {+ g; U1 q+ n" T4 w0 w; A
            Tag[] operTag;& r- K7 ?. D  ?: |# X. A
            Tag setupTag = Tag.Null;$ @0 c1 R+ w$ D

! v: g9 }, B! z+ p  s, X            int countObject = 0;
! H5 ?& p# G0 F6 M( x- Z' z  \7 v/ O: N, L9 \2 c) K
            theUfSession.Cam.InitSession();
( x- I$ N8 M1 b) H$ Z+ r$ P            theUfSession.Setup.AskSetup(out setupTag);
! V$ Y7 T6 [5 K1 ~; @6 g  @- K. q: d" u
            if (setupTag == Tag.Null)" r" ~- ~* t( N* Q. n9 y
            {. P1 j  m* O6 R. |4 M2 u3 [
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");3 V: ~# q( H7 O6 X
                return;0 J5 M% B  F6 V" R8 }& y
            }
0 i4 M: h: K. h' J% A$ Y+ K- p
, u, u8 P3 w5 u# w3 j$ `; r- b            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);+ |' r5 C% I2 t7 I# K9 x$ L

' K  m* v) M- A9 C: z8 E, I            if (countObject == 0)
1 K% d+ n, z; A, p$ D0 Q            {4 m& A/ M$ t" H. k' \
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
; S6 t  j3 c0 c& i" v5 V7 M9 t* `                return;
; Y$ @0 [* x# M- b/ x5 E& t; u            }
; X& N+ q$ h$ F% |7 F
9 o. @/ V( T/ i4 {& L- I& {- ]            for (int i = 0; i < countObject; i++)
% H2 C) P0 `( o: O            {
& b* j0 C: U+ u* J) d, f  `                int type, subType;
8 T% f  E" z( `9 A& r% _, @* P1 O* \
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);' e* C8 G$ Z0 R0 H+ P* l
% m% e" ?/ p; Z# f, \2 E
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));* u* E# ~2 h* x* b/ d$ e- @

$ k* Z6 z# j# @: w( N: L                if (type == UFConstants.UF_machining_operation_type)
" }5 A: H, p% l9 M2 u* O+ r                {" r+ r  u2 C. P* r
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));/ |9 Z( x( B/ i4 H" T6 {
6 ]1 p, b/ [, B3 B8 [% e0 u6 U
                    GetOperationSubType(operation);
/ @  I' A. U! t
& ]" C2 N. h/ g! H. ]- _* {                } /* if type */
  P/ z: R& p- L/ r: b3 M  d! Y            } /* for int i = 0 */
( F( D  n8 [4 E& `9 G0 m7 W        }
% g; u8 f4 C% x& U1 B        caTCh (NXOpen.NXException ex)
! t8 J& K$ o5 ?$ T! J& n2 P9 G        {
8 p  Z( ^, ^2 h* I            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
9 ]0 `# X) |; S- V; w7 p        }
2 [7 U- [/ e  e, I: s/ t    }6 `8 ^; ^  _! Q3 r- x
3 e5 I( D2 h! _4 P2 ~0 S

( l7 t( t/ w" v2 o( p    /// <summary>5 B) [  y% ]+ d5 p' {5 s* v8 [
    /// Retrieve the Operation Subtype$ y3 T8 |3 w. o! ^/ p3 I. P
    /// </summary>! Z  ~% p2 X5 J! x$ _8 }4 t
    /// <param name="operation">The Operation to Query</param>' L( q, g1 R' X: x( _
    /// <returns>Return the Subtype Operation</returns>
+ n. \; D. F3 T  f* h* X    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
" Y  G# X% `4 b  z+ J6 {    {6 |6 x/ ?) ]8 o
        if (operation == null) return -1;, y0 P* x" g  I' Q& h! T
/ T" a/ S+ A5 Q9 X1 j9 ?; R( j
        int type = 0;
8 E* [( t! l( O2 w" r2 k: s        int subType = 0;# t8 Q; l+ q3 D, y3 b
, x. t8 Y  G/ L% U6 ~
        try
" G+ X, R" T. M8 L9 Z; ^        {
% @* E" _& {, ~6 H            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
+ h, K" w* Q& ~( F            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
7 i' ]* G" |; i" B* D  Z0 F2 j7 \
# Q# A% e% T- M7 p            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
  H# O0 ~9 V3 d: _' w- `2 y            switch (subType)
" F9 N! T3 t2 t9 D6 t4 x. o# `            {
/ L0 ~7 t( P$ A                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
6 x* m' v) [: n2 M; E6 F% L                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
$ U+ ~3 F6 @. R, G2 G$ u: Z7 [& x0 [                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */0 Q6 c- }5 ~# I8 d4 [
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */# e. ]0 C. U% w, r! K  E. Z
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
2 [, x/ Y5 t" }& b5 {) N4 [                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */' U8 J, {# ]* r4 ^6 I+ o# i* X9 Z
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
' P* K. V, P* n) U                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
. {0 Z; Q- R- x( J# v' S                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */1 ~0 y" w; C9 ~: |* t
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */" \; E- f+ r' a1 T) B% b, L# l8 V
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */6 F: t! h" E6 @) V' C# W8 k
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */9 a1 h/ C9 z6 G. |
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */6 _$ O: B4 `' @4 p) ?4 @9 j4 ~
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
$ J" [4 ^2 ^. q8 r# T                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */7 c3 W& E& I6 E" \
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
9 j% n" Y6 m5 O, R. h                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
  I( m. s1 ~4 x, E                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
' e" ]+ C, E, j; Q                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
; A% G" `6 F( \- C# B6 ^, M8 X  t                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
2 F; X* x# x6 T4 e  ]. W                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */0 }2 o  l- Y5 j4 E* V

: }- J* @7 r2 _                case UFConstants.UF_insp_tolerance_subtype:
7 s4 v8 h& M# I                case UFConstants.UF_insp_path_subtype:0 i, ^, x" m6 o  v+ T: g
                case UFConstants.UF_insp_output_subtype:  |5 h# O$ k8 Y% e
                case UFConstants.UF_insp_misc_subtype:8 y" C7 M  _/ X7 a
                case UFConstants.UF_insp_align_subtype:$ K/ M8 Z5 u- x0 i, S! b6 j( J' R
                case UFConstants.UF_insp_sensor_subtype:) e" L  E) k! d( X1 K& m5 H- H( ]- f
                case UFConstants.UF_insp_construct_subtype:
. k4 j3 ]* V! l7 G8 O# H                case UFConstants.UF_insp_bounding_feature_subtype:
4 u( @! ?; a8 b$ \$ L, d3 H" N5 l9 S                case UFConstants.UF_insp_feature_subtype:) M- u( f# F  a7 r. n" r# i
) s6 g  P' n; Y  A
                case UFConstants.UF_mach_canned_cycle_subtype:& |3 l5 i4 s: B2 T' {9 o

$ I# n# e' _4 h0 A* k$ B                case UFConstants.UF_mach_laser_teachmode_subtype:$ H0 Q4 {1 u( e6 j+ ?0 r
' J5 k! O/ Q7 V9 x3 [5 ~
                case UFConstants.UF_mach_turn_roUGh_subtype:
$ e0 ]! s4 F- k  l9 c4 G$ ]                case UFConstants.UF_mach_turn_finish_subtype:
; B$ B7 i1 |2 Y1 p* W                case UFConstants.UF_mach_turn_teachmode_subtype:
5 k( d4 D% Y' k- a$ r$ J                case UFConstants.UF_mach_turn_thread_subtype:
& B6 ?9 H6 j+ b1 E! h0 y7 j                case UFConstants.UF_mach_turn_cdrill_subtype:
. a6 g' _, Q4 S9 ?8 V9 U                case UFConstants.UF_mach_turn_auxiliary_subtype:. y4 M, W4 F6 \+ ]9 u8 R
                case UFConstants.UF_mach_turn_probing_subtype:
- ^! ]' s$ ^( t  E! [1 x. y# U                case UFConstants.UF_mach_turn_tool_probing_subtype:
- ]) a5 {# D" w9 Q* M4 O                case UFConstants.UF_mach_lathe_mc_subtype:
3 d  ^8 U2 H7 i- B                case UFConstants.UF_mach_lathe_ud_subtype:
! H4 R- F) R* K( {
, G7 v4 B+ n2 ]- P+ n                case UFConstants.UF_mach_wedm_subtype:& v8 h# y0 P- `3 F  I
                case UFConstants.UF_mach_wedm_mc_subtype:
5 m' ]& Q3 Q& m( x& ]/ h9 _$ f                case UFConstants.UF_mach_wedm_ud_subtype:
# `& O5 z$ Z4 ?5 N# H4 y                case UFConstants.UF_mach_mass_edit_subtype:$ Y0 I' S: z& C* c$ {
                    break;
) \% m/ K- r' c7 U& K
. A& r9 `0 a$ Y1 l, s/ L                default:
8 ?5 ?+ K, k) _) \                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");8 q9 k2 v& C( Q  C9 o
                    break;- F' p* w3 a7 T, {& Y
            }% F) E1 [+ r2 ~2 ]' T, C
        }
( Q. B1 u2 w( d" ?        catch (NXException nXException)  e0 M" c7 {7 b$ S; c
        {3 ^# C. o; t1 N' |# S) c
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());. ]% R% }3 t6 K2 R7 [  U
            subType = -1;7 B/ @5 }0 W$ H' \  V0 {4 |
        }
) q! s" R' H8 O# c' h3 X: \+ E; r  @
        return subType;( W4 r. U' b0 @7 A  F3 {) r
    }
$ Z6 n5 Z- H4 I8 U; u3 K! C4 @, U0 O, t
7 R4 F* ?2 h0 i3 C  _    /// <summary>! E- a, c; j# i) n
    /// Display System Information
# ~+ x! ?& x3 s6 G6 @) f    /// </summary>
& C& n4 l9 A- p7 Q* p+ n    /// <param name="uFPart">The UFPart to Query</param>
/ X8 I- \. R( I" @0 [, g. U    /// <param name="workPart">The Work Part to Query</param>
$ d% D5 F5 F  O! z- t    static void SystemInfo(UFPart uFPart, Part workPart)
, M8 E- [6 P8 Z    {
# G! m/ X- N& H" w        try
, R, l( s- H" \, M& l# x        {# ^8 t. B- F6 {% J
            SystemInfo sysInfo = default(SystemInfo);5 n$ V# b" d, G" I; i8 K8 |
            theUfSession.UF.AskSystemInfo(out sysInfo);7 s1 \1 D! X, e/ Y
6 c* y+ I  h- A" ]
            string partName = string.Empty;
9 q" F8 W& ~+ a  _" ]            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
% h! t) Y$ H) I
6 C, T( ~. N9 i2 T+ E            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();9 I+ ?2 P" q- \' m: m
            theSession.ListingWindow.WriteFullline("============================================================");
  `+ }1 J% ^9 x+ k            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
: [4 P& B: d; ?  {1 I  f2 M( z            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());5 }: }4 F+ g& A- J. a
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);  {+ [3 F% ]/ J% F9 h
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ d9 z( r$ R0 O' P- [
            theSession.ListingWindow.WriteFullline("============================================================\n\n");$ E) c0 ]% q; `
        }
* n' N" Z6 X! d* f+ |( S        catch (NXException nXException)5 |5 \" T; x1 U, g! z
        {
$ k. @( [- F4 c/ U1 z            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
  d4 E8 f6 D" R/ y2 \" o* v' i+ [        }
; o( `+ t) ?+ g- D4 I    }
! H0 y7 u. W% p8 m( k6 l& I7 A7 v
( H+ T/ w$ u% i    /// <summary>2 c( f3 \; k4 \9 z
    /// Unload the Current Image8 |* s4 Y; R7 u' z7 }
    /// </summary>
6 k% E8 _- y. [/ k2 s4 n+ q    /// <param name="arg">String Send by NX</param>& ~  {3 _! n$ {: ^7 X) d
    /// <returns>Unload Integer</returns>5 R: i% o2 h; J' C* v& i
    public static int GetUnloadOption(string arg)
7 w+ n9 J  H+ J# q: s4 a. ~    {$ g/ i9 P7 V: \4 E
        /* Unloads the Image Immediately */2 G/ P" q) {: C! T/ Q2 X# ?
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
; O1 X6 B, A/ h+ T! k9 H6 V# V' z
7 T8 `0 `( E( Z% M. i  C        /* Unloads the Image Explicitly, via an Unload Dialog */
' ~8 \1 D/ Y5 R! @# }: f0 c/ T        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);& U4 k# @  B7 ]+ \
" g5 Q& j8 y( R* c! d
        /* Unloads the Image when the NX Session Terminates */
& z3 V/ r9 Q, ]- Q. d9 p        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
) K! h3 v) U) A. g1 q. X/ ^2 H    }
% q% P4 U1 N3 a  v0 \* ^}[/mw_shl_code]
) T' j9 }; V+ _. c: U
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了