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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
8 V/ K5 u! H5 C+ Z
6 G  H2 ], `1 z1 _[mw_shl_code=csharp,true]using System;8 z% E# [# r3 G' j9 ?
using NXOpen;# G9 a1 l* \1 x  n% _8 h
using NXOpen.UF;+ Z8 t' J7 U. o& y6 k5 ^  W
using NXOpen.Utilities;
4 Q; ^$ J4 d( N2 R. q7 B8 O$ Zusing NXOpen.CAM;
+ c4 X! r1 t- w8 l# Dusing NXOpen.Assemblies;# ^+ j# i0 ^. S( {

, x1 y3 t5 M$ c+ pstatic class GetSubTypeToOperation
( A- Y4 h/ f1 l4 z{
' M8 z& l7 t- b    static Session theSession;
( S6 M( K! A( K. T0 m! b    static UFSession theUfSession;+ [! b7 o) N! f, r
    private static UI theUI;6 j9 B' w+ e7 Z
& r# j  p9 Z7 a: \3 W- d4 x+ o8 X
    public static void Main()
% r# E! _$ A8 ?$ c1 L" o    {
# s7 i* @" e. X  ^        theSession = Session.GetSession();
& P' O- `  |5 W/ O$ d        theUfSession = UFSession.GetUFSession();# b- N& C) \) ^8 F
        Part workPart = theSession.Parts.Work;% w4 m( ]' O1 X5 |
        theUI = UI.GetUI();
* e. g3 `- l3 X5 K( G+ c6 W) v7 [% ?3 y; ^# |
        if (workPart == null)
" U" r6 ?/ _9 J& ?! A: G: V        {
( w) m6 \  x0 i( _* Z( y* G8 y            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");1 c+ z8 H( Q9 s5 v, D% k
            return;, o  u, Y; Z* P" g9 m
        }9 z; S( F. @: ^/ o
. H# h9 ]% F& i4 h4 H
        theSession.EnableRedo(false);
- N% I- W* X. r* m5 ]9 @2 k# p) F- l5 K% O" x2 ]( l
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
* g" M2 f4 ^8 X. W6 a
$ M, T& \; r9 r6 L        SystemInfo(theUfSession.Part, workPart);
, P* O6 O2 W- d1 }7 m, t1 k" V1 y" v% ^# b' V0 e
        try2 G. f/ K- V: Y  f% R
        {
2 I- t* W2 m, H6 m+ h+ Q            Tag[] operTag;
. |% L' t$ ?4 b, }  `7 _            Tag setupTag = Tag.Null;
) f2 W' a" ]3 l
1 C! G' t) P4 n' T" z% C            int countObject = 0;; e, l( d, u; ^) x# m! W# K1 x; S9 z

, r1 K6 s/ q( r! L/ `            theUfSession.Cam.InitSession();
' O, A& S/ j/ J. L% ]6 i$ s7 i+ m            theUfSession.Setup.AskSetup(out setupTag);
+ s0 \) T. o2 X6 s) P) R
" ~0 X8 K0 x5 Q& [$ P. H0 Z            if (setupTag == Tag.Null)
) O7 e4 M  `+ T$ u            {, f/ z  g* z2 r1 Z: U3 {
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
( G$ C) f: {' }: ?& q9 h, |9 I                return;/ D( U7 ^$ ]( ~6 u+ I% b
            }
1 ~" v% H/ X4 Z; [' X2 X4 D! ^) Y, p: H+ q3 e. `
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
- U" z$ k: O+ e4 |9 P! w# r/ O+ }( N( l9 ?
            if (countObject == 0)
' n0 D4 g) {' K! }8 k+ J            {
( G: Q9 O) e3 s$ b4 M/ z                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
; k9 ]5 @) _: c7 y' u3 U                return;* O5 P/ Z7 ]% P& Q6 z
            }& R6 Q4 T- X' ?* ?$ C
8 v( Z) Y3 H* y. x/ S* T9 `* I
            for (int i = 0; i < countObject; i++)
* Y2 ?# b& `  @" i3 ^: {# e            {! k& S" }% E+ _7 h  E9 T
                int type, subType;
/ t. T1 ?) I* |+ D* A( S; s2 ^; m! V( z+ n8 W% b, m- T, F# k$ ~
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
! V$ e; {: j- m# e( }# \9 Z7 z. p
- z9 s3 `3 o1 ^$ \                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
3 |( U: F+ ]/ k& Z# @/ n) e( _4 K3 a
                if (type == UFConstants.UF_machining_operation_type)2 |7 l1 y- i4 K* ^6 }7 ?- v
                {5 d. [' p. v( h; l$ M/ L/ I
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
  w# h' q% n7 V6 K% K1 p! n: _5 D4 R& T; m1 A3 u; ~# _
                    GetOperationSubType(operation);5 m- }$ _% b% `: [1 S9 J. k9 \
2 I$ P+ a* n- G, Y; a' t, y7 n: |
                } /* if type */
" R( O( w: S. q( n. d; v            } /* for int i = 0 */
( o6 ]8 `  q2 f3 O6 d/ Q        }
6 ]! i$ p; s8 W7 c+ h! I) B        caTCh (NXOpen.NXException ex)- p4 ?# Z0 D. ~2 I) `5 n6 F
        {
6 {0 z9 p' p# l( Q1 p3 K            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
; H/ |" t- r) j. q2 Y) |  N3 a) b        }
; O' @6 t  k7 t2 ^. {7 b8 ~8 L    }5 \3 M5 c% S6 O+ \  A5 X7 R

- V) t, w2 U- V7 S  i2 P1 G# _, _0 X! v$ U* u# C5 `# n
    /// <summary>) s5 l, Q& `$ ?' v0 b5 E
    /// Retrieve the Operation Subtype
# J5 R  V6 k( S9 P' |3 s% a% x4 d    /// </summary>
$ A2 E; \7 a9 J( J/ [    /// <param name="operation">The Operation to Query</param>, g; }+ B6 B2 K! f5 w
    /// <returns>Return the Subtype Operation</returns>
  H! m$ j# m& i" c    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
. i: l" h7 F' F9 ]& H- d* Q1 }    {0 V8 R6 I7 h; R$ |$ @* B
        if (operation == null) return -1;
4 v: D5 r0 {1 b: {5 e: d' q
/ Q% X( J8 J( t* {! P% D1 |; J        int type = 0;
# Y8 I% r* d; ^9 q5 d: P        int subType = 0;
8 i% s$ w" T. ~" v8 k; V7 c6 Z5 V3 @
        try" u. M) h& A8 ?' b( n) D. _4 M
        {
! B* q8 K# H2 E& p. x            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
$ T5 N9 K9 \: b* U" L# `* y            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());. r& S3 j- u5 N) Y$ `

( |! h: c8 j5 v& k% n            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/  t0 E9 j+ c: ?7 x
            switch (subType)
+ w' d. F3 z% x7 k            {9 ]4 e6 U& |- x( U/ d1 E3 I
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
! S5 X" e0 ]5 ~+ }                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */6 V4 L% @0 @( X- Y: j7 w
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
# W3 y+ x9 ?5 x" ^                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */- j8 s+ T% X" t2 Y& k7 S) m
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */, x+ [0 w, \& a, f$ k5 B9 p# C
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
4 z/ l3 x! c$ \/ s, W                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */' w& r7 L( t8 k+ {1 f+ I+ M7 ?7 [
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
; F8 M3 Q% F# Y6 K, s                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */1 r7 N7 q7 J4 R1 t3 U6 G
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */4 m7 h. x& y$ m1 k- g6 u) ]
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
" k' @8 t( ]% U2 r- o                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
3 {* h2 O4 S3 W; ^                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */# G$ @1 B  J' T: Q
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
8 z1 J& D8 Z2 F7 j) v1 G2 Q* h: Y                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */3 p  s. V" z% q+ u
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
# @8 \6 B8 T2 v4 \                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */  H) c1 L+ g) n6 [" ?
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */* j0 I/ P8 u& q4 F. V! b( k
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */$ G9 \* |7 ~; g& z+ A
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */! ^+ j: T6 X, P! t* ~- D
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */4 a, O* V" ?, O
1 q" V+ W8 V2 N/ F  U' v
                case UFConstants.UF_insp_tolerance_subtype:
" A" @' g4 |% Z7 P" a                case UFConstants.UF_insp_path_subtype:
  @, F% |( K1 @* u                case UFConstants.UF_insp_output_subtype:# r6 f1 ?, I/ n# s2 Y
                case UFConstants.UF_insp_misc_subtype:, [( u7 J% Z* {: v
                case UFConstants.UF_insp_align_subtype:
& w8 V# O% o0 j6 R4 ?                case UFConstants.UF_insp_sensor_subtype:, o1 G7 a7 [+ j! D% Y* t
                case UFConstants.UF_insp_construct_subtype:3 w/ M, M+ Y4 ?
                case UFConstants.UF_insp_bounding_feature_subtype:
4 e/ ^/ h! }( d" \- T# `                case UFConstants.UF_insp_feature_subtype:
0 `3 T  j! t. g3 `. w: u; w0 R" w5 y/ f0 f7 a3 Y
                case UFConstants.UF_mach_canned_cycle_subtype:0 f0 A$ Q+ b! ~6 M4 p; q
: v- p8 `+ I3 w1 f5 A% L6 I# [" e
                case UFConstants.UF_mach_laser_teachmode_subtype:
! q. o+ B9 N5 o) y1 J, @* {2 e3 q; }/ E, l
                case UFConstants.UF_mach_turn_roUGh_subtype:
  d" u# G$ N7 }% w  z                case UFConstants.UF_mach_turn_finish_subtype:
$ A. D' h' U* t9 U% `0 R9 R                case UFConstants.UF_mach_turn_teachmode_subtype:; q1 y- x5 @: q7 O9 ]1 ~7 [& U
                case UFConstants.UF_mach_turn_thread_subtype:8 D/ T; E. ~: T  B; R' O) }$ d+ A9 ]
                case UFConstants.UF_mach_turn_cdrill_subtype:
. P4 B0 Q+ D( c! [# J! O9 r, w                case UFConstants.UF_mach_turn_auxiliary_subtype:# D" m3 O6 Q7 r/ |# {0 [& }
                case UFConstants.UF_mach_turn_probing_subtype:
$ u7 T4 {. k- H; M6 o8 S                case UFConstants.UF_mach_turn_tool_probing_subtype:& m, k. I) O7 T. O* z$ b% X
                case UFConstants.UF_mach_lathe_mc_subtype:
' N4 I9 |& F+ @3 t1 C                case UFConstants.UF_mach_lathe_ud_subtype:
' ]" a+ ?# k3 e& P6 P9 f1 O1 L3 e+ X$ w2 n& s- }# R
                case UFConstants.UF_mach_wedm_subtype:6 c* ?$ N% G1 v6 s
                case UFConstants.UF_mach_wedm_mc_subtype:
9 k7 I; u8 H2 f* f                case UFConstants.UF_mach_wedm_ud_subtype:
6 }" a2 t8 z& L2 y. X" q                case UFConstants.UF_mach_mass_edit_subtype:" g& ]$ p: s4 P- G, h- W
                    break;% j- {9 x) M( g2 A6 h
  _5 R4 R3 a8 g6 K
                default:
+ u: ]/ b) E1 z3 R! ~3 H& q. m3 I( ~8 Q                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
2 w. N  }% O2 v  |" g" }+ I                    break;
, F, V/ \% H9 X$ C  a) A# `            }" G( j" V2 `" L. k
        }
" H9 x0 I" p5 }, b# c+ H        catch (NXException nXException)
; `, e3 {5 z1 U3 s; o4 ?        {) i; ]: ~5 U% \1 n( p
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
0 e4 O4 j# T1 `+ N4 s            subType = -1;
( w9 j, {, c, K/ {+ X' I        }
& t' X! C8 w. l$ ^/ K; T. u8 q& r9 O; N# ?/ `8 Y
        return subType;, ~7 O- m1 A4 B1 S: q( j' b# u
    }
, x) c7 j& w1 r; K
/ ?: H: u3 Y, l; z2 {    /// <summary>
: t" U! C$ {7 b    /// Display System Information
, P! X' l" P* C0 E* B' |( ~7 m( c    /// </summary>
' H) d, \" H0 v: r  X    /// <param name="uFPart">The UFPart to Query</param>
; e$ `& @% ~% h: @  F$ ]    /// <param name="workPart">The Work Part to Query</param>
1 a7 E2 j$ \* U    static void SystemInfo(UFPart uFPart, Part workPart)
6 H- ~% ?% c9 r6 I. Y8 A8 i6 ?    {
! Z' N% K# i" s& ^8 n, I% X        try! R& E6 l6 j0 a8 Q% T
        {0 E* H; g/ i5 ?4 L' X4 F
            SystemInfo sysInfo = default(SystemInfo);
' O, V& Y1 b' s            theUfSession.UF.AskSystemInfo(out sysInfo);* o. B4 w; s+ v

& p$ A- l0 K6 e4 u5 F  e" R            string partName = string.Empty;, Q, X/ Q3 Y# \3 K/ g/ {, L5 |
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
2 S7 H% ?% i" X4 C+ v* O$ A5 i9 |+ K( x  f* _+ d, j
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();0 E) \5 a; [+ _
            theSession.ListingWindow.WriteFullline("============================================================");" z6 ^0 y% B( ]9 `
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
- L3 u' Q% Z+ S. q, |            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());& [' ]$ t0 e* i$ i5 S6 B
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
+ h8 h9 W" Z7 F% Q. x! g            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
3 k) M% Q2 x- t4 A. q3 H% a            theSession.ListingWindow.WriteFullline("============================================================\n\n");
+ Y# x8 G7 A% f# f        }
) c8 g( ?! f0 C9 i        catch (NXException nXException)( q& M2 C6 r0 }0 v+ J! ]- s. ?
        {2 x) F0 e5 y# l* j
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());& f8 o  J5 V$ V6 c: v8 ?  U
        }/ E5 V2 i0 {5 ]6 k
    }, X/ m' m* E1 _8 d& `
0 G, ~6 B$ K/ f7 Y
    /// <summary>
0 L7 r+ Z$ p2 g, O* L8 ^  y    /// Unload the Current Image
8 k" W  g- Y# f4 V# _    /// </summary>
5 g) Y8 e! M' m    /// <param name="arg">String Send by NX</param>
- Q( p1 O6 i* t: G  A. H& V    /// <returns>Unload Integer</returns>
, J  V0 Q2 O: D1 f    public static int GetUnloadOption(string arg)% A* x' R/ S: \7 I7 l
    {2 r0 V) K0 m3 p3 k
        /* Unloads the Image Immediately */6 a9 X7 ^* v" G3 k+ v
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
" O! m/ r% \; t: q/ ?" V
+ g: E  V! g( w! A7 t$ s        /* Unloads the Image Explicitly, via an Unload Dialog */- j" K0 ^  `& |7 V4 a" h
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);, R% }+ t8 [& Y; ^/ D1 S4 E

/ w! n+ F+ _+ R        /* Unloads the Image when the NX Session Terminates */9 R' u7 b' {! J$ z
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
8 U) ^6 _. X; }# K' y3 T( `1 T    }
# V' w) ~! J5 s4 @}[/mw_shl_code]
; ?# S; L1 `4 ]" b/ x9 I
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了