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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
& m( H# B3 f5 O: p2 s  a
0 _0 l8 t, s) n[mw_shl_code=csharp,true]using System;/ ^7 \7 J: m1 [  I0 A
using NXOpen;+ N! W: N: G" C# }
using NXOpen.UF;- ], z8 E/ j  R: W
using NXOpen.Utilities;
( |+ Q" E) o, E- tusing NXOpen.CAM;
5 |3 [' \  n/ [7 b  dusing NXOpen.Assemblies;2 J: H6 q9 Q6 R6 k; |. I& l
; _4 K. O: b' x/ s" f/ R" L, v0 M
static class GetSubTypeToOperation
" c2 r6 U0 k+ _" j) `) @* _- z{2 A7 [6 t8 q0 z% x3 J
    static Session theSession;5 W( @% P; A+ d
    static UFSession theUfSession;
' K. v+ @1 Y8 ^    private static UI theUI;, N- O$ U8 Z2 a: f4 e

" ?# c2 {5 \8 q9 z    public static void Main()
8 t2 C$ L& E% G8 M    {
$ V$ Z$ m( F/ o7 g/ y        theSession = Session.GetSession();
( r- i! z  ?+ W3 i3 z. I5 R' w$ x        theUfSession = UFSession.GetUFSession();) N, M7 x5 t6 F
        Part workPart = theSession.Parts.Work;
- ~9 V! i4 y+ M* |. `- o, a) ^        theUI = UI.GetUI();8 I* L1 X" u* p; e' ~: A
$ w4 e1 P. `) `' H0 v7 [% r
        if (workPart == null)" y/ M! y% [$ G) E6 h3 C, s6 g( C
        {1 z& ?' m6 J6 ]! j1 S: g. a
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");9 ?- p! Y0 ]: J4 e! h  U* Z5 o
            return;
  V3 o8 S8 o. q0 P2 o        }
; a) B. o7 S" t  |) N" R
% k! t3 H7 s! P: U* f, t        theSession.EnableRedo(false);
. `! m6 E1 B' q, L5 X& s& g4 r5 S( F; G/ h, `
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
7 I0 a0 B9 m& y: y6 r
2 t/ |  F* ^* _8 s- s        SystemInfo(theUfSession.Part, workPart);8 H& E' m& q7 S1 F

. x1 }4 B8 h9 h        try
( j8 a$ _8 v" L& v% @; `        {, |5 X! f5 a+ A6 `8 H- ?
            Tag[] operTag;
0 P0 W, P9 t! z8 W4 l! u& P6 P            Tag setupTag = Tag.Null;& C7 n) R/ E7 h  {
, R# f' I2 n, s  f% W9 ]: [# g1 F
            int countObject = 0;9 h) `% M3 w; v! e4 a' {
3 C. q/ Y. W& ^/ B
            theUfSession.Cam.InitSession();& |6 B% f0 u( Z: f- |+ s
            theUfSession.Setup.AskSetup(out setupTag);& Q, l4 v; {0 q/ [6 A/ w

5 i! G, a0 Y  C7 H4 ?            if (setupTag == Tag.Null)* m! B7 l* J* O
            {
% L7 m" n+ ]. Y0 i8 }                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
" o# i/ i# i% X7 Q7 j1 y* @                return;" S4 h9 n7 E' D8 P9 E
            }
' w! M7 f' [6 G1 d) O4 Y, q- P2 O( V: l" |: j) i
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
5 \# y  b! g# q" \- p& ~; [6 ~' \0 i# R
            if (countObject == 0)
0 s! J/ A1 }$ J8 M" e& j            {
- G* V" a  T; W: |' s  A- {8 c6 W                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");4 j( h1 p6 s* F+ b1 \% O& f5 _6 d: l
                return;% G% Z/ `, S/ p  C+ z, c
            }
; E; z* ^0 @/ S7 c, [2 W( z4 F! q( |4 N  Y: ?7 p
            for (int i = 0; i < countObject; i++)5 s; \# [* y- y/ S. w! V
            {% f# m3 ^' s8 P: y: Y- d; K" P
                int type, subType;
4 M( ^% E- G$ B2 W8 W/ J' q( v
0 _- }( n/ A+ j: J% s9 @& O9 R& Y0 d3 O                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);7 _- Z: G5 E- Q# S) {6 f) v! Z
7 S+ r2 M) ^$ h" r% m
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
; y# i1 _/ q0 w9 \8 }: G* X" O1 g! r" R* d  ^% C( [1 |4 e3 {$ E
                if (type == UFConstants.UF_machining_operation_type)" r( R3 x* r: @# [% i
                {6 x5 R& y6 v  \! Y$ T0 H; I
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));' S% _) }! X6 G/ O. D

$ N$ K/ y" o9 j! I; j" }                    GetOperationSubType(operation);
4 e* R- ?5 M6 A0 N9 t$ K- m/ c$ Z2 y  x# Y
                } /* if type */+ S7 t1 A8 S2 j0 H8 p' I
            } /* for int i = 0 */
; i7 W+ |' m0 T: e+ l- O- _4 C  Y6 i        }
0 a( A' }9 I& ]7 L- s. o& T! A        caTCh (NXOpen.NXException ex)
8 {, O( K5 ]* w; Q6 ^        {
8 n  m, i" B) y. G2 W            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
1 {# |$ X/ L) j, k1 a5 }7 c        }
, o) q$ @0 ]' d) t2 n) L    }
' d& a# x5 H4 N* J1 L( o" B! o/ T
6 x7 F# N9 d0 |
% Z; ?  t* _" D1 }& u9 K" }# h/ C    /// <summary>, z( c: V6 F6 D
    /// Retrieve the Operation Subtype
% h2 p# q( U) V( z" g. E    /// </summary>
  A+ c8 Q7 c- c/ x6 O4 v9 M    /// <param name="operation">The Operation to Query</param>, \+ c& `/ t5 k, u) ?
    /// <returns>Return the Subtype Operation</returns>
3 g& ^% I. @+ V" A/ N9 i& k+ x: o    public static int GetOperationSubType(NXOpen.CAM.Operation operation)* j. Q4 o$ Y, w" S7 y
    {
0 \' {1 \, l% R; S' ?4 c' _        if (operation == null) return -1;
* @- G6 u8 S. m9 N* P# o7 W! h& O, W3 B" O* d5 ^
        int type = 0;# v' |- ?* r5 q  W/ c
        int subType = 0;
( o1 B! l& i, T- l* v+ r8 X2 s
2 P1 x# y. }7 @" R# c        try( z+ ]1 v# s$ _7 S3 w) t+ t
        {
7 l8 A, v: e  o! T4 p1 z9 c            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);% d" W# ~* ?" N7 v; j5 |# Q0 K
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
* P* o0 i5 e  [. I. ]  X. M) {: e5 Q8 V
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/! C% z/ w7 @% F
            switch (subType)3 G# v0 `& @, R# H+ ~6 a9 ]
            {/ F4 M2 g8 r1 `+ x, h6 X5 T
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
8 Y8 z% y5 ?7 ~. ?                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
' n' ~& `3 D6 Y( B& d) Q+ b                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
4 [& M6 \/ i. f( z, j                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */- m  b0 }+ Z5 C6 ^+ }9 y5 J
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
6 ~" l* {8 i" y% a% D3 B9 w% X) S                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
1 C% R& r  i2 O( c- x                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */: [0 j) t3 y& S! _
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
/ m! @  E" }# k+ ?  G                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */7 i1 f+ @3 x0 H# O% c$ ?0 [$ T
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */" W% x# D& L  e8 T% n% l  V- C; U
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */. w1 C- O+ U9 ^, B9 L' I4 Q4 K3 O
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
- j: [! h1 W$ [: P                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
3 w$ r# Y" |( N7 `# a                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
$ c  j/ I5 C6 J) i, w                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */* _) F- H7 K2 ]3 {* p4 ?' a6 V& t
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */& R0 x3 o+ @3 L7 p$ }
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */# K; K' A4 t' _8 F) }* Q1 J
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */; |% }9 l8 T3 W+ W
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
4 ]9 [1 Y$ H6 c$ W# o; M# o                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */# m, G: X- V' Z8 n" x9 v0 c4 U
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */) E1 {0 ^& f0 _- A  l1 ~$ J2 ^
1 L" }: R( t4 h& v# |3 a6 |8 ]
                case UFConstants.UF_insp_tolerance_subtype:3 P2 R$ e0 z* F7 m6 I3 m2 s
                case UFConstants.UF_insp_path_subtype:
+ s+ b5 G! u  K$ q5 _; F0 q! t                case UFConstants.UF_insp_output_subtype:
3 ]9 N* n' g4 x) t( |$ ]# x5 m+ a9 j                case UFConstants.UF_insp_misc_subtype:
  f- P1 T& f% M                case UFConstants.UF_insp_align_subtype:
4 i8 ]) a8 B. z) {* ^4 U7 z                case UFConstants.UF_insp_sensor_subtype:7 T+ U' q# r, ]. H# t; A1 C
                case UFConstants.UF_insp_construct_subtype:* u/ X3 w1 I* b3 n3 D$ J2 V  O
                case UFConstants.UF_insp_bounding_feature_subtype:( V, O1 }, C9 }. g
                case UFConstants.UF_insp_feature_subtype:3 X, T$ _; q8 h* R3 t
; [) X! X" g" Y3 ?5 h
                case UFConstants.UF_mach_canned_cycle_subtype:
3 @& \$ I. J7 ^- y5 o5 i2 X! s2 E+ E, T1 f3 _0 v- N
                case UFConstants.UF_mach_laser_teachmode_subtype:2 X# p# F# t2 J$ o6 T

% a; f2 e0 `- H                case UFConstants.UF_mach_turn_roUGh_subtype:
* }1 S0 {- q) U# X, X  @                case UFConstants.UF_mach_turn_finish_subtype:: C6 K$ E# [% q0 _2 u) W3 H
                case UFConstants.UF_mach_turn_teachmode_subtype:
+ P: Z+ k6 u- S                case UFConstants.UF_mach_turn_thread_subtype:! Q/ v& q* B- Z8 _- J: O" R
                case UFConstants.UF_mach_turn_cdrill_subtype:
( N5 E' B- k$ S1 q                case UFConstants.UF_mach_turn_auxiliary_subtype:
! r. u- }5 y1 @# ?+ l4 u$ Y                case UFConstants.UF_mach_turn_probing_subtype:
; D% Z1 u. y- l3 p9 @0 n+ _8 H7 U                case UFConstants.UF_mach_turn_tool_probing_subtype:' `& ~7 [, Y" q
                case UFConstants.UF_mach_lathe_mc_subtype:! ]% l+ m% @; D. @8 \, d
                case UFConstants.UF_mach_lathe_ud_subtype:
0 d6 [- \- ?/ u5 S
9 |! {  \5 Y+ R% Q0 l. K                case UFConstants.UF_mach_wedm_subtype:
) p$ h% b, X: l( P8 u8 j# H                case UFConstants.UF_mach_wedm_mc_subtype:
" }: V2 R, C4 P5 m2 ^" ~3 A                case UFConstants.UF_mach_wedm_ud_subtype:
3 d# @* o5 F' ~/ h$ \1 I! g                case UFConstants.UF_mach_mass_edit_subtype:
' Y2 F+ M, U0 N, n; G2 Y" Z2 N. b                    break;
( w0 Q! E/ s( I& Y& e; L# x  K2 [: ?6 z- N- Y9 Q) d  }8 Q
                default:7 @/ y) K- t" {" C; L) N
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
6 H! Z6 d) ?" D2 f                    break;1 ]7 K8 ^8 n$ q
            }
6 c' L" j7 t) q% n        }
3 X; r& C  v/ M( L0 `  |2 {$ H! a9 T        catch (NXException nXException)
$ B7 E2 o: T# l        {% I/ a, ^! R  i: f
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());& |# o7 e* f6 a( j# \7 i# i" i
            subType = -1;
& N3 X. a% z7 Z% ]" C; ~        }
& o' }" D8 H" `5 p- c5 e9 h7 K( O1 D, z
        return subType;
& Z7 B: N1 y- R    }
- ]  s7 E+ N! R
% N3 x! M" M$ u    /// <summary>) Z+ n5 n1 ^: U; Q* x3 V8 y" M
    /// Display System Information
9 D2 i9 u8 h- L$ A2 ?8 @- F/ U    /// </summary>
$ E% M+ d" `2 T8 n    /// <param name="uFPart">The UFPart to Query</param>
# N1 n. i" m$ P" I% K7 a    /// <param name="workPart">The Work Part to Query</param>
. r3 f& {3 N3 o  C5 C0 \    static void SystemInfo(UFPart uFPart, Part workPart)" X7 v! Q( ]% w1 o
    {$ O! M& G1 b( j( [! m4 e; T1 `
        try
9 G, m( w% r, _" X        {
! e' P' X0 P/ [! y. K, T2 O9 T            SystemInfo sysInfo = default(SystemInfo);" u6 p) v6 h: Z( W9 G% j
            theUfSession.UF.AskSystemInfo(out sysInfo);8 y( e! N4 F/ S0 L0 I/ l$ k1 v4 G: B

( `; a3 B. P$ }2 }3 k* {            string partName = string.Empty;
$ Y  c7 Y6 b/ j* t6 u* |            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);5 G- o" B" t9 U  u$ B, u

- j7 [2 E# p5 |5 F            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
8 Y- P) U5 x3 Z! p; Y            theSession.ListingWindow.WriteFullline("============================================================");1 Q+ M, L5 |& y$ [' \5 ]
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());2 \: @5 U/ \( l
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
' F" `2 T5 @3 `, f            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
, |* \! O( o/ T2 x            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ ?( @/ P3 h! e9 D/ v& z9 m. ]
            theSession.ListingWindow.WriteFullline("============================================================\n\n");! J3 P1 j6 Q3 D7 ^  e. _
        }" g% @4 K. a1 r) V7 c7 f* ~7 T$ D
        catch (NXException nXException): w: s# K4 |4 H" `: K9 G
        {9 L" w1 {0 _: S! m0 R6 \0 x) u
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());" p: o! v8 Y" ^  R
        }+ c( Y' ]+ A" c3 n# ?
    }
! g3 ?; v8 |8 ?1 O6 C* W$ t1 x- l' q5 m$ r, L% U
    /// <summary>; o% f6 O5 {1 R$ i& B/ k  u( J
    /// Unload the Current Image8 i9 o9 ^  D* P: m0 |* }- _& v
    /// </summary>
6 R. X! \# Q$ G. H    /// <param name="arg">String Send by NX</param>: Z! I9 P* w1 _) K% w' S3 X6 w0 {3 c
    /// <returns>Unload Integer</returns>7 a3 u8 d: C4 d* u
    public static int GetUnloadOption(string arg)5 l* H0 r+ x. a3 U# }5 p
    {
/ a- X* K4 X. t        /* Unloads the Image Immediately */
* R! H3 Y9 @& y2 p2 Z" ~        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
+ D" m7 i0 H% l5 v- m7 G6 e$ D9 N8 S) H6 a8 A
        /* Unloads the Image Explicitly, via an Unload Dialog */8 r3 b$ T, b8 q/ e$ j5 ~, ]( A2 Q
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);: X* Q% {: C! M3 R

$ _$ Z7 b4 x; W( J; i  P- x        /* Unloads the Image when the NX Session Terminates */  E" k0 L# V! `8 G  Z5 r
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
( {6 V6 o& T6 M4 D5 q    }
1 J* z$ \! Z- Q  q: l- c( F3 [}[/mw_shl_code]
# ^) o/ t9 z" k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了