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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
$ A  B. j: {/ E, X9 D/ d' ]- x0 y' C0 n! ^
[mw_shl_code=csharp,true]using System;
% ^) t0 m7 r: A) p1 g( @using NXOpen;
- G( r- t6 y7 X0 M# j! K/ Nusing NXOpen.UF;3 A: V; ~3 `3 U# s5 U
using NXOpen.Utilities;8 K; R* _! c! I8 N
using NXOpen.CAM;8 ~& g8 l) X$ _/ F1 L
using NXOpen.Assemblies;) A0 T8 C* P2 G- C
1 G" r, ~9 Y9 r; T3 o
static class GetSubTypeToOperation
" H2 {7 ~! \8 q8 O  C, F{
3 c1 X: r2 `2 b0 |6 Z6 U2 n1 [    static Session theSession;5 @; z9 Q" v2 k9 J8 \
    static UFSession theUfSession;
- D6 n3 e% z: ^& t. }. F    private static UI theUI;- k$ x7 T& ^6 D1 |0 b$ b+ Q
* X. @7 h" ^; D# j# Y6 y0 |
    public static void Main()
& H* ^; C% Z! Y) ^& T, A    {1 \5 m3 L* ^, d2 @# e
        theSession = Session.GetSession();
( v, e  v" c5 q! F' B& X1 T- y        theUfSession = UFSession.GetUFSession();& ]- C5 q; a; P5 F: z& P$ J4 W8 A
        Part workPart = theSession.Parts.Work;
6 V, G& A2 n- ?6 \        theUI = UI.GetUI();, `. n# P$ f: ]8 u1 D9 V& S* ~

# g/ \4 Q- }) ^5 v; g7 L$ b        if (workPart == null)
. g8 J% a- I6 N4 l        {2 n" _. F3 P7 j: i6 h$ l
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
# E  R5 w0 ?3 k# l8 Y            return;" B/ _0 P5 k( ^
        }9 U  j% m, e2 j. W' A7 n
0 F$ _: b0 Q5 Q$ T5 f, }
        theSession.EnableRedo(false);
! W: P; K: B' ?- M: l1 T' E/ T- F8 G; I" ~. S/ n
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();- ]% H( r/ S, {# o3 e
  r: G7 b3 K1 P5 F! N4 c$ r
        SystemInfo(theUfSession.Part, workPart);7 Q, @4 N9 S+ F
6 o7 ]% @/ f0 ?/ m8 s: z
        try( B8 E3 H4 M# Q" {% b& H, J/ c
        {
* ]5 B$ `. V7 w/ n! b            Tag[] operTag;
6 `. W: F# |, R1 k9 B, D            Tag setupTag = Tag.Null;8 k' x" l  J7 v* U$ o
* m: X8 B% Q" m- k
            int countObject = 0;" h! @# K1 @' m6 M: Z, z+ f
) z& j# L) a, \! I1 b+ V+ w/ e9 g# O
            theUfSession.Cam.InitSession();
+ [3 k1 ~% Q- P/ ~            theUfSession.Setup.AskSetup(out setupTag);
7 l# Q& p, C3 S* L1 R* n( F! j8 C! a$ y. s& _3 E; c) {
            if (setupTag == Tag.Null)
0 g# T4 P; |: c$ ^            {
8 {" F/ `! A" }7 g  x9 p4 b                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
7 O3 g6 K) z, k! _- F                return;. `4 o) @5 @2 T
            }
6 m4 ]3 Z0 _0 q0 B. d
2 d- u) u, M8 w' u. t            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);+ h. J  _' j- D5 @& K: @
& g, e& b2 j, y& U$ I
            if (countObject == 0)
3 |0 Q% ]1 ?# q4 ^( F8 v            {% n! g9 i, D& z, C
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
, P# [! @+ z: w0 m5 P, c/ D+ t                return;0 |& F) I9 S% i& P
            }
- L* g( _( H3 W1 @+ H/ E6 M0 g& {$ R+ X% h6 O
            for (int i = 0; i < countObject; i++)
! P4 Q% M8 U4 c5 E  f9 C7 k5 f            {
* f! J9 t' [2 d, v; [                int type, subType;
7 q" R. m. a# e" E# y, `1 R; D
/ n; h9 {  f8 x! C/ a" K4 i                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
; D3 }$ y. L1 D5 t- z* h5 }3 m) v9 L0 n# e9 t- R
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));+ R2 L* ?8 Q( e# _7 {2 t
6 Z1 M1 y- u, h6 i, m
                if (type == UFConstants.UF_machining_operation_type)
1 R: {' o! B2 z. {3 u; q                {
* `) v/ B, H% G6 S                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));6 i* g, p1 i% q. Q

& e1 A+ H* o* w8 H/ b+ j. M                    GetOperationSubType(operation);3 s! _: ]$ l- m( e

3 M  E& B' r. [6 Z. W, q                } /* if type */2 F7 z% R. u3 `9 S
            } /* for int i = 0 */+ @* K- o, P/ Q6 s8 K1 t% ^/ R
        }
' C; T4 Z, {% u        caTCh (NXOpen.NXException ex)6 r9 Z4 ~/ b. X6 P$ x. n- \' @! C
        {
2 o) O( j' u$ S8 q- n  l            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);! q: f$ q2 n! G- w
        }
( w0 Z/ d3 X9 x% n- `0 H    }# g3 y3 L2 W. ]' m  h
- S" p+ ~) x8 _- }" [
6 a  O7 `: ]5 t6 P7 D( i+ j6 m8 R1 E
    /// <summary>* u  H' {' s# _( Q, ^. {) f
    /// Retrieve the Operation Subtype4 o7 j* N$ G5 H3 I/ _* O# p
    /// </summary>$ `( f7 B( H2 \+ J& A& v+ j+ @! P% [
    /// <param name="operation">The Operation to Query</param>
# D# t4 ~; M4 b) V) G    /// <returns>Return the Subtype Operation</returns>
) g8 C$ }7 C, \6 n5 H" n- R    public static int GetOperationSubType(NXOpen.CAM.Operation operation)) b3 K: e1 H3 m; a. ]! z& y
    {' V% u7 a1 n9 ?$ e) S; k; y7 Z5 u
        if (operation == null) return -1;
2 G# f) @* p3 A7 e+ j8 _9 P- S" l( H/ P) X0 M- _8 e8 F% r) A
        int type = 0;
, B( j' G' [" L4 J/ J        int subType = 0;2 [% h1 Z9 z- X6 Q

- u" w. n% c/ U2 W& R        try
: L* c: @7 |$ |% N( v1 |% V- Y        {
8 s. D% n1 A7 M8 y. c            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);! v& @2 n5 V# W! ^2 J$ u
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());' ^% \/ k7 T$ V+ Y( k% J
3 ?% ]0 y3 C% X2 @: Z8 F
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/' [4 ^. G5 ?& g4 k9 ?+ T5 r
            switch (subType)2 J& c$ a  m# N% h% o0 x9 U0 ?
            {
: H, E, f3 Z# p                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
+ M) v3 ?, C, T! T                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
8 B. r- s, i( z/ @3 k" F+ q                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */- d6 {' m/ K; \3 j4 z: K; _' C0 y
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
4 r* F$ T. k# ^7 Z2 }2 ], H: q* \                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */) x) T, }& o9 b! p0 n
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
6 U# h+ M$ m1 z3 c                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */6 R4 r+ ^+ h. ?5 T* Y
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */" K, r# {5 l/ I1 J3 f) s* l
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */( ]4 q- r3 M: b
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */* `$ Z' r& |  o8 G* O
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */% M5 j$ N8 y0 U& q
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */+ F9 a% }3 a( F+ y5 M6 ~% E* b  S
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
$ ]. O- O2 @& G                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
( y5 x( o  L' S9 t8 D" G                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */: g# i: {( o% j
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
/ C& F4 N7 k, ]6 S" G                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */0 l4 B1 ]: l% K8 r# t6 `
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */# S  \0 u0 Y/ L& X0 ^8 m5 N
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */; l* I5 I0 S6 k
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
5 s% R. D* S* m' a                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */9 x6 I6 W1 w8 p7 b" O

0 F+ n+ h% a. ^5 x! Z3 a; A                case UFConstants.UF_insp_tolerance_subtype:( ]; X. C9 q* _6 n! z- O2 H
                case UFConstants.UF_insp_path_subtype:) c0 |) Z. j2 N0 V; W
                case UFConstants.UF_insp_output_subtype:' y2 ?- w; I9 J  ~: E, [
                case UFConstants.UF_insp_misc_subtype:, H  a8 O4 q; g; ]2 @' }
                case UFConstants.UF_insp_align_subtype:# J8 A; j( L  ^5 T6 O
                case UFConstants.UF_insp_sensor_subtype:; s' D' p" I, k4 q4 Y; g3 h7 _
                case UFConstants.UF_insp_construct_subtype:
  o7 s! @/ v/ r1 _                case UFConstants.UF_insp_bounding_feature_subtype:
; w% \9 |7 a! b& h                case UFConstants.UF_insp_feature_subtype:
& p" e# i0 U7 f0 y" L
/ l- `( M4 G" k                case UFConstants.UF_mach_canned_cycle_subtype:6 ]2 K' C: R) D# J3 q

4 F, F+ r; O2 r6 v+ P; G$ O                case UFConstants.UF_mach_laser_teachmode_subtype:/ C- f, c0 v$ ~& f
) L+ K8 E: F1 P% E; y+ u
                case UFConstants.UF_mach_turn_roUGh_subtype:
+ Y( f. J- |& Y/ g: c, S8 B                case UFConstants.UF_mach_turn_finish_subtype:2 J* b3 G. R( L0 N9 i4 |
                case UFConstants.UF_mach_turn_teachmode_subtype:
* w- F; {# W& l$ S) q8 V$ ~- v                case UFConstants.UF_mach_turn_thread_subtype:
6 I! S6 o8 Q6 s5 d1 E                case UFConstants.UF_mach_turn_cdrill_subtype:
* S' K4 U6 g0 }  G# F; H                case UFConstants.UF_mach_turn_auxiliary_subtype:5 C9 d( h  z/ N; x0 h1 e
                case UFConstants.UF_mach_turn_probing_subtype:
* `& |, z- g# z" l4 v                case UFConstants.UF_mach_turn_tool_probing_subtype:1 z- l* f  x2 [$ F! U. S- ^
                case UFConstants.UF_mach_lathe_mc_subtype:$ B8 c$ e: k' g
                case UFConstants.UF_mach_lathe_ud_subtype:4 Z3 @+ \9 |1 ?0 B% V1 J
* y- {& m% F0 b9 C) R
                case UFConstants.UF_mach_wedm_subtype:
' v; H& s$ i# x. [+ D: k                case UFConstants.UF_mach_wedm_mc_subtype:( f* `. ]- b1 r4 d9 N
                case UFConstants.UF_mach_wedm_ud_subtype:
* g! F& l' r% S# F& X/ l                case UFConstants.UF_mach_mass_edit_subtype:
, h2 m+ l8 d1 F0 B1 h                    break;
9 a3 r, v. F6 w5 ~, a! U5 F' Q2 T6 o" E0 C# Z" P2 ^3 Z& w
                default:
4 K2 \" m1 g% _                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
8 c1 y5 O$ F, \, I' L7 ~                    break;* B2 y; C) X3 g
            }
7 l0 L7 m; j& S" c        }
; J) o) c# g  X        catch (NXException nXException)) G% @: c+ ~* U0 I* {: B# B
        {! W, g) J) d3 C7 k4 Y2 v0 Z* m
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());1 T- m) ^+ p/ _& k: \+ L( \
            subType = -1;; h/ ?( \1 m2 B. S3 R5 x6 u) ^' I
        }6 c0 \" w" q" A! F$ p9 b
; _4 T7 g) e! }7 Z# y8 @% |
        return subType;
1 m' j+ V5 F4 h" m# Q    }
) s+ S% W6 H9 |
. _" N2 x2 |+ v4 d1 T+ }! O- Q0 p! j! Y    /// <summary>
; r  [2 |3 O- ?7 Z5 M# \    /// Display System Information( O6 g9 }3 ^& F/ m5 K' W. D
    /// </summary>
  @, [5 H/ f# C4 s- R    /// <param name="uFPart">The UFPart to Query</param>( E: g/ g2 ?- {2 N, T
    /// <param name="workPart">The Work Part to Query</param>
; g. X" d' v" n    static void SystemInfo(UFPart uFPart, Part workPart)
) x, Y9 D( B  f+ t2 E4 N/ @    {$ D# g, ~* Z( U6 D* F0 n+ l* z
        try  M6 g, C& y! z; a: p
        {6 n& p6 y* V8 j' k9 F
            SystemInfo sysInfo = default(SystemInfo);& D* \' P! u+ E2 L1 F5 K
            theUfSession.UF.AskSystemInfo(out sysInfo);! t6 d% W" h% v+ D0 q
1 V, j8 |3 g+ m
            string partName = string.Empty;
, R6 v- e8 P- m2 v2 r5 E            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);" r, t/ |/ Z  z, N. C( [
! D4 u" N$ C7 O0 }3 g8 y
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
0 w1 y5 S2 T$ v            theSession.ListingWindow.WriteFullline("============================================================");
, F/ N+ O5 O- D/ P4 K9 \            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());& V$ M3 c9 \6 O. r
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
' u  E/ J4 S' R5 I3 ^            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);2 S" u. @/ \0 y" L+ w* T
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ Y3 u( X& x" @* _" c: [
            theSession.ListingWindow.WriteFullline("============================================================\n\n");% \7 m0 Y% S1 ^, ~7 O
        }; u* l# F2 }* `
        catch (NXException nXException)" i4 j' j7 b3 q8 L/ R3 z; d; o
        {
% I- o/ P* q! A            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());7 c0 U$ ~: s& C
        }7 U) F2 s! V9 A" d5 ?
    }
6 o% n3 Q, m  E0 o6 ^: l; F: |0 s. S, s9 B- w
    /// <summary>
: T3 x$ x$ x( K, e* V+ z3 W    /// Unload the Current Image5 B* h9 x4 O/ i) k) ^9 E
    /// </summary>
) ~: }/ T* p2 t' l# c/ q    /// <param name="arg">String Send by NX</param>
& O0 |/ E  ]- H    /// <returns>Unload Integer</returns>
  U% X/ p! R, j3 I! j    public static int GetUnloadOption(string arg)
1 X# B" z! n4 I$ E& q* z    {1 w) [) I  L  G% `! O) `* W3 Y
        /* Unloads the Image Immediately */5 M! o% |+ ~( A: O
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
8 {9 `9 R  A9 N# w  b, a2 ^1 K
3 _+ ?: \4 E2 ~: W# V        /* Unloads the Image Explicitly, via an Unload Dialog */
1 R/ t& p8 K8 ~' w$ X        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);0 i& a. M7 h" H2 F+ O
2 ?* {" l6 ]# }, ?- v& L$ M
        /* Unloads the Image when the NX Session Terminates */
+ R2 t7 I- D5 K* |) Y1 \+ C5 b        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
: d+ Q' F, S, c! S4 L1 y0 [    }7 r* O: i$ ^3 t2 C# |
}[/mw_shl_code]
, G2 {8 ^& u" C! Q6 V1 t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了