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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
* [/ n" z1 @$ t/ _0 V+ j1 ^
* E; h5 F1 _9 L[mw_shl_code=csharp,true]using System;
" Y& T4 D$ L) @/ U+ o/ ~) Musing NXOpen;
& V' @! Q" q1 ~* w7 U) A" susing NXOpen.UF;
9 f4 V; z( z9 c( Z+ p5 Qusing NXOpen.Utilities;
" [; q, I3 D! o3 ]" C' v$ o8 Lusing NXOpen.CAM;
5 J8 l( X  j/ }* D. F- Busing NXOpen.Assemblies;6 s- y! s1 K$ I" h
3 F$ `+ ]. r: v9 p0 j9 S
static class GetSubTypeToOperation
" ~0 D) L: \; z- _& V2 {5 ?{1 O4 k# R, t; j5 Q* J1 _( [
    static Session theSession;3 ~5 ?9 w- r& U
    static UFSession theUfSession;& j  [2 f( e; @6 L9 K
    private static UI theUI;3 R/ u* M# }$ _) m3 p; o/ I
6 t- c; A" [* P$ i  ]- ?& H. D! m
    public static void Main()
; ~) C+ z# C. [( `    {2 S' C, s" o! [/ K! j! E! R
        theSession = Session.GetSession();2 ~$ y* J3 H+ {3 f1 T* y/ f* Y
        theUfSession = UFSession.GetUFSession();1 j3 X& q: H! }3 o) N5 C; {- Y3 X
        Part workPart = theSession.Parts.Work;& E2 o# [  m! G: P7 @* d9 o1 N
        theUI = UI.GetUI();
6 Y6 I" z; K4 E! S+ L9 e$ I+ z
6 b" i4 ~2 K9 |0 P6 P        if (workPart == null)
3 P9 Y4 [, W+ z3 ?, S        {
% n* w9 d7 ^! ~' a5 ^$ q            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
( A2 `" n! I& D( i6 B            return;. ?1 E/ Z) W+ u7 ^
        }; e* _/ [+ o5 ]" ]* U

. L" b6 d' y* \" X        theSession.EnableRedo(false);
1 q; ~  B# T7 v3 k) S9 q3 Z! _; o8 L; l# l. W
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
2 \$ h& ^1 t: d. S/ c5 \+ L1 K9 ~* L: R, C3 p  b
        SystemInfo(theUfSession.Part, workPart);' z9 R$ q: Z% N& k- }

. W$ v1 |: ^) h0 H/ r4 e3 E        try
4 O- P" g# f0 a7 H3 m# ^5 k        {
4 n2 k0 Z1 Z% t0 z' J+ y            Tag[] operTag;' B2 |3 j, Y. A6 G% Z
            Tag setupTag = Tag.Null;2 E9 x- {! e& k6 F: O" o
& Y( w% b7 o, W( m# F
            int countObject = 0;6 d+ Z  l! Q6 L1 W5 Q6 X

/ K6 g: d+ F& l1 \            theUfSession.Cam.InitSession();) I* @/ C# g; g: V, x8 S8 N# o6 r
            theUfSession.Setup.AskSetup(out setupTag);
, _; a$ f# E9 N- d$ _- p
- ~/ P( A+ x0 C% p. Y            if (setupTag == Tag.Null)5 b* x' H2 K5 j  c- [& ~8 R: q
            {. e/ i8 `. r$ j# G- X
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");: c- b$ \1 _8 \7 D
                return;6 B  W. J, p# m7 p# v
            }
* p6 D$ p4 Y5 c: R/ Z# Q; }! \6 _
- \/ F6 Q& L0 [" H  i+ U            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);: n7 K: o, k4 Q; n# ]
' }1 o2 `/ N9 ^# U; z
            if (countObject == 0)8 ~( I9 m( V! ?8 O& H8 ]
            {
2 {7 m% E* Y8 a                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");6 D; w1 Y6 B5 J; n4 r
                return;
: Y) y  u/ y" o- P3 x) E            }
3 |6 c* [: N6 d0 m
8 n& ?( A! P. |0 {; M            for (int i = 0; i < countObject; i++)$ r2 [8 a( d7 C, K* y4 r& z
            {
, q" ^6 R5 x/ Q                int type, subType;3 ^% i$ ]* U, O# P: b

& R& a6 B- u: {4 P5 c8 Z                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);3 c6 [1 u. D8 R4 z

) X; t. `$ E3 J. l                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));) h0 j1 z' ^4 S# e/ ?2 f

& Y; q$ b$ G0 I8 I9 e; V) @                if (type == UFConstants.UF_machining_operation_type)
  A! w: ]* d/ S                {
' _1 K/ C* j! {1 ]. g0 Q+ F0 Z                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
! h9 h( o' z3 Y5 f; P7 _$ l: A$ m2 g1 C: b- r# I
                    GetOperationSubType(operation);4 t$ Y, ?9 K; u( n! N4 B

$ c* n! t: @1 \0 l( m                } /* if type */) P- r% ]% A+ s  i) z
            } /* for int i = 0 */
6 T2 z, R2 Y# S/ a- |        }- i3 s4 T8 y+ v: M
        caTCh (NXOpen.NXException ex)
, p& R1 M% f1 R) ]( A1 P$ q        {; W) G  R2 Q7 O9 u2 D; O
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
9 \! S3 Q5 t. g( s* F/ B        }0 v$ g: p2 r% n9 O. V: E7 |, q% x& d# p
    }
9 T3 [% J8 x& @5 H2 i- z6 I$ _
8 R# M0 s' N' E" ?5 V
; _+ l9 _/ s1 F: o/ G* w    /// <summary>
- ^2 u* u$ T* A# t    /// Retrieve the Operation Subtype! I' [" x; V( N6 b2 K7 I0 x' E
    /// </summary>
5 S- h/ X' z) p    /// <param name="operation">The Operation to Query</param>3 d, i" O$ N0 k! E
    /// <returns>Return the Subtype Operation</returns>
& [) x3 d9 D7 l5 m$ W    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
8 e6 l8 q. r# i1 |+ j7 g5 t& W2 d    {" J1 ?, j) S) O1 M# m# S- N; _
        if (operation == null) return -1;0 [+ u% q6 u, ?% `1 T

* P. d! [+ C6 Y- K: f& M$ s# D        int type = 0;
- g& Y" Z5 z  V% P1 J" F) f6 M        int subType = 0;
0 v5 o9 z5 N. x  ~6 C# _
4 J/ A! @1 V" S        try
1 C1 ~9 F* \, ^  n- W% h" C        {7 B. F" |2 f- q3 O
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);0 {' H3 i2 f6 s4 i$ b
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
9 z- ^( H+ y) g9 H
) w- Z) I0 p* L/ d            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/! y0 \2 v/ p; d! a
            switch (subType)
6 W" ?  Z! X% O+ H2 {, y            {  l+ U* @' p: e+ ?4 E
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
4 i3 {/ Q' g& K: M                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
6 _. F  Y0 \% L6 ^% N: C( _! a                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
1 n# f, G& Y. z6 \1 i* o                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */" Q: S* a4 L) D+ w$ l6 y
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
1 ]- Z) n- `, t+ B0 v& h; q( ?# {                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
  s7 R9 ]  \6 ?& p                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
5 E2 k8 \2 I6 Y) V: g5 _5 k* X# u4 q                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
' ^9 k1 T. ~+ P* B                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */7 y% X+ r  e; @8 s& q
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
. J: {8 j9 I$ g" y- I                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
. Q+ i+ ~: A7 A2 I                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */$ R0 ?  I2 u! n2 O( D6 }* }+ O4 v) @: v
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
3 d! [; I6 \6 e9 }, j: d, B. i: p                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */& A# Q' H0 f: ~8 x9 e. D  G
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
! h, b- q. ?( k% w: \$ h4 [                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */2 j7 U, ~! N( C/ r+ V! ^
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
7 f$ p. T; g( u                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
) v& t$ W+ v3 ]; Q# K/ i, M                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
) U! y; B9 i2 k8 b* o3 }                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */% R) n) `  \( i3 \" E3 k
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
! T4 M' G) p6 Z" H+ \0 v2 S& O4 e$ ]+ a: V& J, a9 u
                case UFConstants.UF_insp_tolerance_subtype:% B% X4 B$ Z# z' T& [, r# _" D
                case UFConstants.UF_insp_path_subtype:+ @$ i% Z/ L+ V* m% ^! m7 M
                case UFConstants.UF_insp_output_subtype:
+ ]% r) s  G; D( v' E# R) Z                case UFConstants.UF_insp_misc_subtype:7 E% r# }8 n" m
                case UFConstants.UF_insp_align_subtype:% D) f: ~9 C5 ?5 H
                case UFConstants.UF_insp_sensor_subtype:
* w% ~% u9 k6 `* g* G, V                case UFConstants.UF_insp_construct_subtype:' ~4 {3 p5 ?5 A. v. n3 X
                case UFConstants.UF_insp_bounding_feature_subtype:
2 s. P) A& p" s: ]1 L                case UFConstants.UF_insp_feature_subtype:
$ \* `  B8 O0 U2 c8 ^( H) t5 u4 V) X+ ?: w4 h% i! y
                case UFConstants.UF_mach_canned_cycle_subtype:. D+ d1 L7 N" t8 \6 L

( N2 L* n/ A3 Z6 d1 g- q9 V                case UFConstants.UF_mach_laser_teachmode_subtype:
- i* q" x6 E& k5 O. {
: k/ L6 _$ ?- R' ?7 u                case UFConstants.UF_mach_turn_roUGh_subtype:
1 V' ?) D- D% r                case UFConstants.UF_mach_turn_finish_subtype:
( |6 S# }$ A( O2 f' O" S5 n                case UFConstants.UF_mach_turn_teachmode_subtype:% K, M- ~+ L4 r/ H
                case UFConstants.UF_mach_turn_thread_subtype:  |! h. }) |8 U& J4 }9 G  ?
                case UFConstants.UF_mach_turn_cdrill_subtype:
7 g7 ]& n& Q$ C- d3 Z                case UFConstants.UF_mach_turn_auxiliary_subtype:
0 K1 p3 A% R$ Z6 _/ G) U( n/ M                case UFConstants.UF_mach_turn_probing_subtype:  L# L, n* [" l+ L5 t) i- D1 r
                case UFConstants.UF_mach_turn_tool_probing_subtype:( j6 V5 w* z/ e/ U& T- n
                case UFConstants.UF_mach_lathe_mc_subtype:
: ~# P# Z3 B9 e9 T2 |! N9 T" V                case UFConstants.UF_mach_lathe_ud_subtype:
' n4 A+ q& }8 z* B$ A. w4 o
4 s9 }! v. }' W3 z                case UFConstants.UF_mach_wedm_subtype:, }) c2 `2 l! J0 b
                case UFConstants.UF_mach_wedm_mc_subtype:% V7 G( B5 d! U0 Y- p2 e0 z
                case UFConstants.UF_mach_wedm_ud_subtype:' Z/ w2 h6 h6 J3 u; O
                case UFConstants.UF_mach_mass_edit_subtype:
% g6 W8 u  w: i% b% e: b                    break;1 c: s3 M/ y- y
& t7 I  W* \& o4 Q% h
                default:/ h7 `4 U; f6 p) j; G
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
' Q9 B% m! c: w) I3 u# I: T                    break;
2 M) {  r1 G" m2 F            }
5 O  X2 W# U8 J7 {5 w6 }% n3 [        }
* C# R% ?) k) |2 Z, `7 n        catch (NXException nXException)
/ d* |( A0 a1 {9 x9 J& {7 U        {
4 H, q# F6 i: B. F, A- M            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
9 ^0 T$ z- ]8 }) {            subType = -1;
6 p, Q  h$ Y& B' @7 b( h        }8 m) S, y; Q+ X8 R$ ]
, \: G8 P4 m; e$ u" Z
        return subType;8 ?% v$ e3 m9 N9 Q
    }$ \! f" w" r" _. J
$ y$ R3 a6 i& i2 k
    /// <summary>
9 T- G6 q  g. V+ o    /// Display System Information( V- j* e9 H. {. t6 l6 o
    /// </summary>7 y4 \% R5 W+ d1 z& c* ^
    /// <param name="uFPart">The UFPart to Query</param>+ E- l6 I: P( f
    /// <param name="workPart">The Work Part to Query</param>
2 l8 K7 s" Y+ c# w; R0 R5 f) F    static void SystemInfo(UFPart uFPart, Part workPart)
6 E" n; D8 u. |$ W1 D  P6 v' W    {
8 m. g8 F# \2 g8 Y) g' q        try* _+ l6 y, C' U$ M9 W
        {; x+ o; F3 s% G1 X6 Q4 _
            SystemInfo sysInfo = default(SystemInfo);
& |( ]5 `9 w. D$ Q            theUfSession.UF.AskSystemInfo(out sysInfo);
, p: Q: M  w9 D* V, o8 O
( R4 a& X6 Z- j- U5 d. l            string partName = string.Empty;) l6 Z  n2 \2 x
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);$ _! _1 q; a% v9 a! ~; d7 m: Q! @
) ?) y& t) P* u- j6 T( n
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
4 I  h7 k3 L2 `( {            theSession.ListingWindow.WriteFullline("============================================================");! ^/ c8 F( m4 J: H* R
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());8 ~, w/ B) X7 q( g  Y
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());+ C9 D8 }8 J8 I0 D) X" @3 v  \4 m
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);- y4 L0 C% L8 w( G. E$ B5 L2 {( u
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
' M+ ^9 t  P; \2 m            theSession.ListingWindow.WriteFullline("============================================================\n\n");
# i! p- z5 ?5 x; O- |# t3 h$ d        }2 ~; B: E) J* V( V5 O
        catch (NXException nXException)0 Y" h( f3 R1 U: y& `
        {
7 Y* F1 l; f) C            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());/ Z# G/ \4 ^6 {+ {* g% [  A
        }
6 u) T. ]% d; m8 h9 ]$ o2 D3 P4 N$ u    }2 O( T  N& E6 z9 t% K9 Z; B

. p. z9 ]0 Q3 `% H4 d    /// <summary>1 B2 M6 e9 {& r) i3 V. |0 q6 \
    /// Unload the Current Image
, ]& A. o6 N" ?1 a3 ~2 i    /// </summary>! L% I$ w$ ]& E1 R" W1 t: L
    /// <param name="arg">String Send by NX</param>
0 T4 N& c& e5 N9 p1 F& h8 z; a6 S( j6 N( G    /// <returns>Unload Integer</returns>6 u( }* W2 B0 @* u! Y9 a
    public static int GetUnloadOption(string arg)
, d: S5 O4 t% h* C. T    {# L; n3 r% v- C  b+ ]
        /* Unloads the Image Immediately */
2 b, A' X/ J+ O0 P: r        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
' \# E/ n' ?; p' ~3 ]4 w! E/ S5 @& Y& V& I9 Y1 H
        /* Unloads the Image Explicitly, via an Unload Dialog */
4 y1 M, H, g+ i% |. k* d# H1 C        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);) R8 i- x4 ~9 J! [6 X

) R* z$ n# t7 A# I1 o8 A: H        /* Unloads the Image when the NX Session Terminates */
% x  U! m& c4 [        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
3 p* ^7 ^' e" g0 O( y6 E    }
1 Y( r4 j1 U7 M2 }}[/mw_shl_code]9 `3 H3 L  J' R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了