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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了- ^# W1 n1 x6 w# _
) g# B/ J8 m# @, l& O
[mw_shl_code=csharp,true]using System;
- h, X- ^: k/ O- Q1 i( Gusing NXOpen;
( q, f* ?0 S  l& _# x# Q- h1 p- xusing NXOpen.UF;3 j( m" V- c% @& q8 f
using NXOpen.Utilities;5 t3 S1 `0 M) t* \
using NXOpen.CAM;
4 x- n! H" {- a1 p/ T5 H, zusing NXOpen.Assemblies;
5 }9 {* u$ C/ W5 x; [  B# e- J' x$ T4 _4 Z" E4 }% J3 l
static class GetSubTypeToOperation( d2 |7 i; V* d) c4 B1 `7 \6 w4 J
{
7 t) V) j6 E) H3 S0 O    static Session theSession;! A. `) i6 B7 K: |  M' u  m
    static UFSession theUfSession;
/ E8 s+ e3 Y* n" ^1 H! a( F4 k    private static UI theUI;  t% |# G- [& e2 `, W* K

% o# l# Y6 D+ U; @7 E2 C    public static void Main()
1 ~: v- F4 j/ N( ^% u    {) T0 H! P6 u5 J7 ?+ a& p% ]
        theSession = Session.GetSession();) F" S9 S9 `. H/ z2 u
        theUfSession = UFSession.GetUFSession();
- x" l% N& Q2 |4 J+ Z        Part workPart = theSession.Parts.Work;2 E. G2 w) u% y- s
        theUI = UI.GetUI();3 W$ J' |& t8 N: Y9 b( `- _

. m5 b* Q2 w" q  _8 y! u$ M        if (workPart == null): L  v- e- x) V5 F. ^4 o
        {  \% ~3 k) U. X6 O- N" b
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
2 x, z( {: p1 l! O' w' Y" V$ l            return;
- y0 s* Y4 [, o. ]: m. z! B. i. {        }8 s0 z0 ?: A0 O' G  @7 c( C. a: _
- e# Q% N1 [! K9 g+ A
        theSession.EnableRedo(false);
" T5 O) i* v/ A0 N: v8 q; r$ A7 U% s1 L& ~4 q+ n' I
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();$ M3 l" }! i8 f6 @- ^& V
) R) l2 j5 O+ t7 R* O
        SystemInfo(theUfSession.Part, workPart);
- V6 H+ O% z8 T2 n% m; A9 w, [: d+ d( X6 t# _% i
        try' Q+ m6 m: b2 A: C8 T
        {0 p; \6 @# L7 N1 e( F
            Tag[] operTag;- y* g+ J7 z* [$ L3 g
            Tag setupTag = Tag.Null;6 _' u8 a; o3 Z" n4 d, f

  f% X4 C! s# `# b2 s, W# y8 D            int countObject = 0;+ z) d' y5 d6 V# r2 `% n; ?

7 l/ `2 e% m' _. ~            theUfSession.Cam.InitSession();
, l' @* V0 @6 a1 d3 P            theUfSession.Setup.AskSetup(out setupTag);
: S& [# {3 H; |6 |8 c' V6 j- F
8 ^9 b3 f: F+ E7 w: e0 h            if (setupTag == Tag.Null)
% @2 X4 t- g8 @, @5 N5 w! z            {6 b' ^2 H% o7 Z& U& }- D
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
% ?0 Z7 T$ C9 f7 N4 ?- k$ j                return;3 e& [) a! _+ K7 `% u
            }; Q2 X# i4 U# s: I/ ~4 P; I

! k+ s5 t: Q7 e            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);6 S+ M& `0 H/ J- A: m* `4 w
. p+ i: W8 |3 ?5 E2 u# {6 Q
            if (countObject == 0)
7 h& k, p5 e' e            {; r! P6 Y4 O/ I" ?5 }; R
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");& ]2 A# W7 [" ^( X, @. y
                return;
. V1 ?  t( B( i* }            }
, I; A. ?9 R' T5 O2 C4 o0 K8 }# |& f" ?4 V% x
            for (int i = 0; i < countObject; i++)( @9 T6 d6 k" _6 ?: u3 [
            {2 q; Y' R6 E" f, ?. E9 H
                int type, subType;
5 N. i- R0 ^) P8 z  p( p' P
: Q9 A- t  p: \4 M9 U- Q+ Z                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);. K8 F' r( g/ b# @+ ^- ~7 O, x) o
; k4 o# F5 ]1 u2 n) W/ I$ A
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));8 y% W  n6 R2 E6 G3 g3 t. o

& J. v0 [9 B( q( C2 r8 c/ V8 b                if (type == UFConstants.UF_machining_operation_type)
) W! D8 O2 {4 ~  J8 P9 H                {
% v6 X" F! F; d                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));2 E5 F! M) V* M5 P+ s2 D
0 E$ I! g2 o! N4 C$ a3 ?& v3 d
                    GetOperationSubType(operation);
! e2 t6 L! O5 M) u7 B0 i+ F# A2 e; X# _7 f* u
                } /* if type */
3 A! D1 B. K1 E( ]            } /* for int i = 0 */
' b) b0 T* z. T: _3 ]        }
9 \2 B# D+ R+ F6 w6 G4 w. z- O        caTCh (NXOpen.NXException ex)
: D8 W! r0 N) r  M* P# i        {% c: o/ a) e3 a+ x- K8 C; e. N5 g
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);7 W( E+ h, K) ^; @5 g2 K
        }, S: ^( T. a" H  n" |6 h/ d# T
    }
" o. _8 g$ r6 s' z- c# V$ S0 f$ T* d0 `& ?
6 S* i/ A# A; ^& q
    /// <summary>2 b& C, T" I3 K. A2 O" P
    /// Retrieve the Operation Subtype. e/ o2 k% Q5 g7 L7 e9 |
    /// </summary>, \% o+ W9 ?, q) d5 m
    /// <param name="operation">The Operation to Query</param>
) I/ a6 G- d4 w% f- R- ]3 ~    /// <returns>Return the Subtype Operation</returns>; x. U. g$ W, v/ Y* D. A% ^
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
1 f; a' @* ^4 A7 z" {' L    {4 p9 C; k3 Z0 W- n
        if (operation == null) return -1;8 t* b. `) N" c- ^' c2 K- j) D- D

5 Q! D' e+ }& Z2 U  a8 r2 J: a. O        int type = 0;
7 k9 G! m  r# K) R' {' Q) u1 W$ S        int subType = 0;
8 ^, g7 Q% `2 [* Q  J8 l
7 ?5 I6 Z! _0 Z- W: @2 R3 V/ u        try
( M* w) l! J' m9 |        {  V' V% [1 E4 y( U
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
) u5 S' r9 a- m% {8 C* Z/ a1 \            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());" z; z. v+ Y5 Y  F8 m9 M
& m9 d2 z2 O1 f0 t5 l
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/! d% S8 I9 B# p# ]& D  W& S4 ^& o
            switch (subType)" L1 p+ G: w4 y: e0 x
            {1 u+ v, @9 v/ x3 [$ e- s6 `
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */2 B; F8 ^* n' r; v1 J' |# l) m0 k
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */+ U. J2 \4 g. S$ j% S3 ?
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */; y' u" d! c6 P
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */+ E) X8 _( o9 M$ m
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
* {2 I2 }! E2 X  W6 n9 E                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
7 X, X' Y/ K& B                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */! ~3 d0 B3 W- R8 P  \
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */8 u/ N4 q" E6 f
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */8 W$ h/ j. J" O7 ~2 ]
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */* K5 L% p# H+ U3 U
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
& `5 S" o( R+ w0 }$ `                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
+ i- Q0 K/ M8 H) q, j4 m2 \                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */8 s  r9 P! ^  u' K  c9 }
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
# Q/ c% l5 o, ?6 Z% z                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */! L& d  ]8 T8 }7 \
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
- d# b* b* j" Z$ s: `+ n8 s                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
& C5 j' V3 k# x* W                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */9 ^8 T$ p( _. r+ i( E; x
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
' [7 e* n. F8 g  r  g& g                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */6 \* S3 p) i/ `5 \
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */7 X! v: V2 K- d! P0 s3 V

/ w) r) H6 D: h( P4 t                case UFConstants.UF_insp_tolerance_subtype:$ z  T0 C; p# L9 F. W
                case UFConstants.UF_insp_path_subtype:
( X0 Y5 c! Q' E* b, J. i' Y                case UFConstants.UF_insp_output_subtype:
; Z4 q& h( }; N3 s! p) A8 f                case UFConstants.UF_insp_misc_subtype:
) n0 Z; z( L' I5 U' m) \" v! B                case UFConstants.UF_insp_align_subtype:5 b1 T# V& ?+ s& a2 g3 ^0 U8 E
                case UFConstants.UF_insp_sensor_subtype:
8 m, O( L6 z9 Z3 L+ Q                case UFConstants.UF_insp_construct_subtype:
+ c. \; Q# ~9 p5 T; Q+ R& t& i                case UFConstants.UF_insp_bounding_feature_subtype:  @# v+ h+ p3 s* |# k$ f. r5 i% d
                case UFConstants.UF_insp_feature_subtype:
% Y. V  r% [# E! f3 {6 m2 Y
. |+ L; G0 |% q' U                case UFConstants.UF_mach_canned_cycle_subtype:
. P6 c( N/ G" C& f& f: [7 H$ V# b0 J* K" Z3 N
                case UFConstants.UF_mach_laser_teachmode_subtype:
3 S$ s8 i9 F1 r# ]" K0 T3 R5 l  L0 I- m' `4 n$ G
                case UFConstants.UF_mach_turn_roUGh_subtype:# t8 W3 y$ m5 R% O
                case UFConstants.UF_mach_turn_finish_subtype:
, J0 L8 ~% U" q# l                case UFConstants.UF_mach_turn_teachmode_subtype:8 J$ |0 M* |8 m( h% ^( `: P/ E) a1 X
                case UFConstants.UF_mach_turn_thread_subtype:* _( r2 F2 V0 {
                case UFConstants.UF_mach_turn_cdrill_subtype:6 l3 `5 N- |. D
                case UFConstants.UF_mach_turn_auxiliary_subtype:4 S6 K& Q! K, v- M
                case UFConstants.UF_mach_turn_probing_subtype:, D3 Q. \( s2 i  Y% t. q
                case UFConstants.UF_mach_turn_tool_probing_subtype:
% ~. Y$ D1 L, K3 c' }" l$ t                case UFConstants.UF_mach_lathe_mc_subtype:
" h; W: P' i- ?( I$ Y                case UFConstants.UF_mach_lathe_ud_subtype:4 C! E9 w. ?) L' O* I

5 I6 h% h$ Q, |1 i+ j' [                case UFConstants.UF_mach_wedm_subtype:
) h6 N( A6 f" h, m, F! r2 j                case UFConstants.UF_mach_wedm_mc_subtype:9 u4 N0 i! ?! b  [6 @4 I
                case UFConstants.UF_mach_wedm_ud_subtype:9 ], C" K7 u0 d
                case UFConstants.UF_mach_mass_edit_subtype:
( {; n& n# C  ^! Q( g                    break;
- b8 \& d8 ?+ X: _
3 k6 x2 U: G' [! u* x% ]                default:
! i2 C8 R8 U' n. @5 K, _                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
7 K& K/ Z7 I! [8 ?: M                    break;
- R, Z$ q; `( a            }" c4 f, W) T8 g7 ?: K
        }& {* M. x) Z& h2 N& u
        catch (NXException nXException)
$ v9 d7 x( ?  T* C* X; r* a        {0 q/ Y4 {' H- d0 I6 ]
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
- N( S$ M! Z/ O            subType = -1;8 d/ J1 J9 L2 q0 L
        }: T9 ~  a% M1 _: z8 i3 w

+ H/ j: ]# B0 ?, b        return subType;9 }' E- i* c6 N
    }
6 z  L3 T' A! p3 U+ u# U1 y
" F$ R- Q( R+ S    /// <summary>
* D, a3 W$ S5 l8 Y' d. Z    /// Display System Information6 }- r) w0 r$ ~2 j3 t' P
    /// </summary>" O% ?9 F$ s1 g  ]: q
    /// <param name="uFPart">The UFPart to Query</param>
  F$ n- D; N. _    /// <param name="workPart">The Work Part to Query</param>" A4 I3 n- X! ^2 Z
    static void SystemInfo(UFPart uFPart, Part workPart)4 A4 X/ v2 ]8 Q4 x% H8 c/ `! v
    {* \* h7 h6 ~, D" R0 m* U; Q0 k' q
        try) ~* H, M# \0 y. X+ E6 _8 P
        {: f! U' U" a# d' u8 Q9 d6 {
            SystemInfo sysInfo = default(SystemInfo);5 {" ~* j& X5 @9 f" u# i0 Z# V
            theUfSession.UF.AskSystemInfo(out sysInfo);9 ?! M& z7 C8 n+ A: C

+ ]) @6 P. Q& k( s9 F/ d            string partName = string.Empty;
+ q2 r% U, M) D7 J0 Q            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);  `- m2 M' k+ V5 X& g* z
8 I, _( y/ W6 [) \' q
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();" _) Q4 A# Y8 k
            theSession.ListingWindow.WriteFullline("============================================================");
/ g" q% m0 G+ D' ^" A            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
3 e' k+ |% n. M            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
) \7 g1 S! h/ a6 l: B! |; v6 T, N            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
' Y  q( k) J% c5 s3 ]2 u9 P            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
2 ^3 W# p; t9 u& W% V$ M+ v            theSession.ListingWindow.WriteFullline("============================================================\n\n");) ?0 |: A- c% @
        }6 _" \) r2 H1 R' k
        catch (NXException nXException)6 N# L$ g2 R9 u
        {
+ G0 I  [/ l% B9 F2 c# q5 j( ^            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());5 \. b9 `2 a& D5 `3 C
        }
& o6 H# s% r" z- N: X) _7 X+ W    }
5 l$ @0 O" g+ O1 [3 n! y3 l7 c/ w6 V' v# z
    /// <summary>) \/ d  [) m" D, y
    /// Unload the Current Image8 M! Z) N9 o- {. B
    /// </summary>
1 _" S. ?9 v  [( }    /// <param name="arg">String Send by NX</param>7 c! p! I6 Z0 I( A) F; A4 ?
    /// <returns>Unload Integer</returns>7 Y: n' ?5 [5 _" L( \" l
    public static int GetUnloadOption(string arg). E, ?+ \! r+ J  G
    {6 N2 J- r" a$ t' \" T7 s
        /* Unloads the Image Immediately */
$ R: {( s( k3 w4 A2 o        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);7 K( S1 h- e5 E' w- Y
1 X( U/ t7 A8 f: w$ P. d8 p# p2 Z0 a
        /* Unloads the Image Explicitly, via an Unload Dialog */0 Q& X+ _; q+ o& p; s* H7 P+ r
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
0 S6 ~+ [; g) I2 `0 M0 T% ]( ]$ y9 m7 @1 L2 x
        /* Unloads the Image when the NX Session Terminates */: e2 r9 X0 p2 o' h2 ?* I
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
- _" `* x4 X4 e  v  _1 o% C# t    }
$ x: L9 W" A) K! S! p- q' |3 S2 |}[/mw_shl_code]0 T& B4 r4 T: v8 X4 x& m* v& @. e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了