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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了, V2 ?0 l8 r/ \! o
9 ~& c: f. c8 a& d9 J$ v4 `
[mw_shl_code=csharp,true]using System;
- T- i" g, b4 F8 h/ pusing NXOpen;3 i: P+ p! c. f( H
using NXOpen.UF;
" g! N- ^, l4 r; O' nusing NXOpen.Utilities;4 D) y& e) r5 A8 e4 g
using NXOpen.CAM;  _4 d$ M) k/ J% e9 E# H
using NXOpen.Assemblies;
, C: z8 S. S. o- E+ w2 \3 E. y( e( B1 T! h1 n* h3 e1 ?
static class GetSubTypeToOperation& C9 k( J6 i1 }
{
0 h' N" f/ X9 T' {    static Session theSession;  n: u8 b/ [% @  O( w" T
    static UFSession theUfSession;1 T' P8 B2 t; r, G" P
    private static UI theUI;
' X" [0 J' u: h" E/ b! x0 M- H5 Q: |$ O: l5 G
    public static void Main()& ~9 L/ _5 I. K* ]/ Y% s( f: _. Q7 s
    {7 d7 K* p" h& L6 T
        theSession = Session.GetSession();! W4 ]/ }! b( v3 n1 G& B+ e+ g( }
        theUfSession = UFSession.GetUFSession();
0 D8 W* H3 A5 r2 h        Part workPart = theSession.Parts.Work;
% N. v4 m+ P# ?% @! ]: G6 c        theUI = UI.GetUI();# ]+ i' l( q  l4 [

% R% J2 K! D( ~, a        if (workPart == null)- u6 U+ w; g# }4 _& y6 Y8 T
        {
, `1 x7 |$ A, G            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
* _- t/ N9 a6 ^# F3 H# \0 j            return;0 w6 b# l# d* {2 H- D
        }
$ p8 b& O, k4 k6 v
* U$ Z& x; @# ^8 ]' f' J, Z        theSession.EnableRedo(false);) @' w7 Q& q) I& Y1 r- w

! l1 |3 i  i# F6 Q        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();% N1 L3 ~, s" N8 Q, h1 n# r

% Y+ V+ M7 g5 M% R0 |$ p6 \, h3 S        SystemInfo(theUfSession.Part, workPart);
4 ~- ^5 |8 o* u  h( [7 ^; x# O/ K: d  M. Y5 L0 O4 t: s
        try
" J- {% X& p) v2 ^5 Z6 V- ]2 K% n        {" a2 B9 @, l7 k* M
            Tag[] operTag;5 K1 d4 e/ O  Y" c6 F
            Tag setupTag = Tag.Null;
7 v1 u: i3 {7 I8 r8 w
/ h. M9 N2 o7 a% z- C5 C2 u- Y            int countObject = 0;8 g% m. V& _/ h6 ^) O# Q

8 R% I  u- o9 j            theUfSession.Cam.InitSession();: F+ W2 x% G7 k; K" Y
            theUfSession.Setup.AskSetup(out setupTag);
, u! S3 W) e* f, }% t
3 e. X2 O1 d' M( o            if (setupTag == Tag.Null)8 Q: t( V$ {5 y
            {& K% y6 K1 \2 G, Q
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");6 `, F% t& b5 a2 R# X4 q, g
                return;
( X5 l$ l5 E. n/ l+ k4 ?) R            }
3 m) A# R! _- z4 N: h: i5 F/ Y2 b9 }
; u5 S# j) `0 C& {$ Y) K, k6 M. L' ^            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);1 N+ l) q% h7 W$ g; g6 @

% H* N8 D1 s0 V% U6 M            if (countObject == 0)
/ W3 D) u6 w9 l2 e            {+ Q- G' a, n) l; u9 M( p! ~
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
# r; z2 ]# x4 O. }                return;( X4 c: O3 @& _7 @1 R8 a
            }
8 c; Z! t9 G0 r+ x
1 K7 x; ]3 D+ ~# K, J            for (int i = 0; i < countObject; i++)
  H0 `3 j' m7 C8 F! b            {
1 E) Y% n1 I' @                int type, subType;
$ a' {! y# _( G/ O- H+ @- V
1 a* E3 n! `  \. p+ h0 u! j9 h                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);: f1 [- X; Z$ ~. I

# p2 Q- @9 x/ M1 w) t6 X                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));. \' k* [4 y& |( v# m
$ A5 u8 J1 k7 Y
                if (type == UFConstants.UF_machining_operation_type)) a( S. K- w9 i5 @, H
                {' w4 c9 U4 q6 _" \% P; p
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
2 @4 G7 x1 H3 H5 t& k2 P7 `! |2 j6 s6 x* _/ g) p$ ]
                    GetOperationSubType(operation);+ e. G4 O2 m: B" t( y# ^

+ j, h$ s& D3 {7 ^5 ^  _                } /* if type */
0 Q. u/ A' `% L$ c' S  q4 B' w            } /* for int i = 0 *// }$ c9 P( s9 |9 V
        }4 w0 ~, {: h- Q, g6 y: i: {3 l) R0 Y
        caTCh (NXOpen.NXException ex)
* Z% |- j% O) W: X* B        {
% k' S7 m9 W9 d  U8 y            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
3 y6 y+ g9 h- `* L4 v' d5 t        }8 V# w# a% d2 E" z- I3 F6 H  p
    }
, e. e% L3 Z0 ~5 @% N) l, g( W% g! d% X( Q  c( R" U5 E0 d) e- @" O

% a- s- P4 [7 F6 N$ K: t; s2 x; _2 D    /// <summary>$ u# u0 _6 U3 m2 i0 J
    /// Retrieve the Operation Subtype
  r" b; F9 H4 Y, _( R+ Z5 d" N7 b    /// </summary>. Q' S) Y( y3 Y
    /// <param name="operation">The Operation to Query</param>7 u! y/ \2 h$ ^5 B- A
    /// <returns>Return the Subtype Operation</returns>2 e% R2 V6 ^; C( Q( ^; r
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)! J- v5 X; f7 J1 C) ]! `0 I0 Y
    {+ p1 J0 B8 H$ N2 N
        if (operation == null) return -1;
& l! h* R+ Y, B0 p
! \; K  l7 f" M# A' Z2 o4 o1 Q1 P        int type = 0;
) }: @7 @% }$ C" d        int subType = 0;: J& d3 i5 ?1 E$ Y

: n' K7 J2 M+ {3 M        try& C. l. h( _( ^6 H6 x
        {
* Z. p2 |; ~- p" y4 Z# h            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);% }5 ~7 c- d1 q+ R
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());% |+ C& |% A, @4 A+ O$ u
* M6 Y! q. c5 K, y2 Y) \
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
# I" M! Q/ V: F. x" p- M4 d8 j+ {! Y            switch (subType)* q( I& D2 X, K7 s
            {% G4 J6 s4 _: ]$ \5 w% X/ F
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */  v# g! }9 s& y4 K; t9 d
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
/ @+ f) L, s9 O+ O  E                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
4 G9 h& W& D2 R+ s4 [( l, T                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */# g8 K3 g/ ]; d1 n! D$ b) E
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */* H' S$ v8 `. n* A4 i! X+ A8 Z
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */7 c/ V# F- L7 s: z+ V' [
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
. M. i1 z% {0 S/ R$ ^5 f                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
2 H6 w3 `: y: ~# {: ]" ~- @9 r0 |# q                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
4 }7 n* m6 H4 _. s, K! ~                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
: C% Z8 f" e' O. o5 y# v' ?                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */8 Z+ T4 _  c/ R5 X/ l
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */9 @# U5 j7 m4 U6 ~
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
& t  L1 S' n# ]6 t6 t                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
& P! E; f  ^; S& z1 t                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */. t" f5 M* c2 d
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
: @( a: `1 n4 a+ Z: W                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */7 M0 a( T4 z% n8 n/ F; r
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */( z1 N+ F- e1 v
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */6 k7 D+ _% a1 G5 c9 Z, p& d
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
( q& R2 ?* a# t1 P7 A                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
4 A: S, H5 g) e0 F3 P2 F+ ~
& }) D( ?$ O& D' d5 t                case UFConstants.UF_insp_tolerance_subtype:+ v/ x6 f# R4 P' w( P
                case UFConstants.UF_insp_path_subtype:
2 j8 n9 p1 U2 x4 U9 l1 J& \1 {                case UFConstants.UF_insp_output_subtype:' ~4 R7 O) m8 Y$ c* R# O
                case UFConstants.UF_insp_misc_subtype:9 ?0 N( h# i: A
                case UFConstants.UF_insp_align_subtype:  j; Z! u' T5 Z7 [1 J
                case UFConstants.UF_insp_sensor_subtype:
3 L6 b7 T4 N/ }' Q' v6 q' a                case UFConstants.UF_insp_construct_subtype:
2 q# C, T4 G! O8 d: f+ Y                case UFConstants.UF_insp_bounding_feature_subtype:8 f, n( p. P/ r3 d5 n* V/ o$ R
                case UFConstants.UF_insp_feature_subtype:$ R7 R3 M+ \# T  x7 \8 s

( a/ w6 ]1 [: H0 L) a6 m0 R                case UFConstants.UF_mach_canned_cycle_subtype:
7 T0 S& `& K& R: Q# n/ F8 L: k- W- c4 A! a# V# t; d
                case UFConstants.UF_mach_laser_teachmode_subtype:2 @# F7 E, W7 \% z* q" s+ e, C
3 @, D8 I; P% {# d4 [; {
                case UFConstants.UF_mach_turn_roUGh_subtype:: E0 V% [; c  |; O4 x+ F6 ~
                case UFConstants.UF_mach_turn_finish_subtype:
3 T( c5 m5 \3 G$ Y) u0 N3 x                case UFConstants.UF_mach_turn_teachmode_subtype:
2 N) U! U. @/ y' l/ r& u& O! f1 @                case UFConstants.UF_mach_turn_thread_subtype:+ O' P4 G, {* n
                case UFConstants.UF_mach_turn_cdrill_subtype:
# F3 H- H% c- \& \                case UFConstants.UF_mach_turn_auxiliary_subtype:
" h4 R5 p! o3 r5 _7 X6 m                case UFConstants.UF_mach_turn_probing_subtype:
$ C7 `- x6 p* J. ~3 V                case UFConstants.UF_mach_turn_tool_probing_subtype:
7 r/ q, v, x5 a" R                case UFConstants.UF_mach_lathe_mc_subtype:
- {- n* {6 ]8 q1 \0 `3 R7 L                case UFConstants.UF_mach_lathe_ud_subtype:
) Z8 Z) `, S9 q" j: D- W, L7 f3 H: `( v( p- ?# x/ g' C
                case UFConstants.UF_mach_wedm_subtype:5 e0 R; D$ f* g
                case UFConstants.UF_mach_wedm_mc_subtype:
& W! t  u) h/ d7 q4 ^" A7 V( u( y                case UFConstants.UF_mach_wedm_ud_subtype:( I1 _, b: I) U7 G
                case UFConstants.UF_mach_mass_edit_subtype:  R2 r' t- X% A: i6 B
                    break;5 J6 ^' I2 V: I8 m

' n' w: \( o# @' J  F                default:
2 G/ B& v& k) |- t8 C3 ~8 j                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
) k; F0 Z/ m6 m# i                    break;1 t2 U( {7 \7 @( ?2 ^! T4 x- M8 }: K
            }4 K: G6 I  ?7 ^& p+ u( `
        }
( `% T, v" ]6 ^! j4 f% U- ]% t9 y! |8 T        catch (NXException nXException)1 @! _# |: w+ l1 J5 J
        {8 _) m- L0 D0 d) p6 V) Q( |
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());& ]1 z) c) h2 T; d- ]8 V
            subType = -1;; M0 R( J+ e( B: V6 V. T7 x
        }# B1 e9 g, y, p" R. _! t

& \8 J  ]0 L* R% B( X* K: q  g1 {        return subType;
& Y! A: F) M' u, K+ c3 E    }1 r) e% I* d1 o2 E# B# S

4 j( ]! z/ d/ t% z' q: _    /// <summary>
; [* \4 G0 q  Z% t8 U1 i% K    /// Display System Information7 F4 \' Q2 D/ D
    /// </summary>* J3 F: t9 Q6 R/ Y
    /// <param name="uFPart">The UFPart to Query</param>/ J5 L1 _. V8 `7 c2 b
    /// <param name="workPart">The Work Part to Query</param>
9 L' ^. H  {6 d7 a& G4 H    static void SystemInfo(UFPart uFPart, Part workPart)
9 o5 Y0 ^2 S/ {8 f& y) m! v$ i$ k    {
9 C4 d9 o" `+ r        try9 M( \6 o& u7 W: }# o$ V0 h" n8 ]
        {
6 L" ]$ ?# S2 {3 q6 p; c1 X            SystemInfo sysInfo = default(SystemInfo);
6 j+ t) V) ]# _" a! Z2 `# |. ~            theUfSession.UF.AskSystemInfo(out sysInfo);1 R* h& z# n1 H
# P" j5 m: U5 }3 i
            string partName = string.Empty;
, }/ v  g7 X9 W. i            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);# ~) s3 Y7 N/ E  [% Z2 j
1 N/ z. Y/ s0 E( |; u
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
4 L0 g# N9 @: G0 p            theSession.ListingWindow.WriteFullline("============================================================");/ L4 f+ P% Z3 H( [
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());; `5 J( G4 ]% q, \6 v1 X, [
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());7 o2 b8 \# ?" i/ [9 X+ @
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);6 Y1 b0 m! a- }; [' m
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ N3 F: ?- e8 H
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
* ~. o* S- X% a. E$ ]! r        }
+ Y# Z+ D% F' t( |9 D, `" U. Z        catch (NXException nXException)
4 l% ~/ U: T+ z8 [# I        {- k! I- J! H" D
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
# m( W9 _3 U" ]! j8 g( C0 L  c        }' A7 }  y2 k: ^6 ^  }, A" ^3 a
    }, H9 v; X3 v& p8 S) O5 j8 f

* t$ u* h0 N/ B" O1 ]9 b* K    /// <summary>; M5 h8 e: k# Z$ `: ]1 _( d
    /// Unload the Current Image
; r( ^" N3 E- i$ K. v$ ~8 I    /// </summary>! @4 D: k9 E/ @3 B) |& ]
    /// <param name="arg">String Send by NX</param>
) Y2 n+ H; Q3 H: J    /// <returns>Unload Integer</returns>: P) P* `2 D( P( C2 V3 E, a
    public static int GetUnloadOption(string arg)- w7 T- {, o8 B5 |9 |4 {
    {
" f% j# E, q* f7 D; s        /* Unloads the Image Immediately */( ^0 y8 E8 k" @- }5 X
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);8 \1 O* m8 D( r6 l/ ], x
" d/ b) `: D9 x6 z+ {7 [
        /* Unloads the Image Explicitly, via an Unload Dialog */
9 E$ z) ^/ w0 s        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
4 s/ a; _+ S' i4 d9 p3 w7 ^: u6 \' j6 J! d/ c
        /* Unloads the Image when the NX Session Terminates */
7 E3 O  y2 z& g% d  B        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);5 S& v( N& u2 s% z& u: [: u
    }
; g0 S5 \  H8 g) w) e}[/mw_shl_code]/ C8 O% u: ^% ?: H* P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了