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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
$ d9 E; J# H% V/ O" J( v9 z+ r  L
9 _! c: f3 W- R+ A/ Z[mw_shl_code=csharp,true]using System;
5 k6 a$ o. x& w9 M+ A4 b% m  rusing NXOpen;
( O! c. N, ?( dusing NXOpen.UF;1 O# M6 I; v( Y6 e
using NXOpen.Utilities;. U7 @# e% I. U/ {" j4 g  Z8 i
using NXOpen.CAM;/ n1 ^2 T8 x, m3 S$ [3 r
using NXOpen.Assemblies;
% N4 t+ `+ h/ x$ N3 F; c3 a) _
4 C$ I( h0 N+ Kstatic class GetSubTypeToOperation) _1 }4 [: G( G8 w5 {- j7 \' s
{% o7 r- |7 M% v2 f% S
    static Session theSession;
. }  t. T; z, a, ~1 ~9 ~    static UFSession theUfSession;$ c5 m$ d5 u7 \0 _# O2 L
    private static UI theUI;
8 Z# L& |; q# {; g- t8 s+ k& ~% ^3 k& _9 N
    public static void Main()8 Q6 o8 K9 n9 x1 l4 {( ?4 x; ~
    {$ h) {3 D& o7 h0 b4 U  w: j
        theSession = Session.GetSession();
) M5 k% f0 p4 c+ t4 O2 o        theUfSession = UFSession.GetUFSession();
# j' W* b7 C: T' j        Part workPart = theSession.Parts.Work;% Y2 K3 X0 n  _% P
        theUI = UI.GetUI();! {: _6 H: c* A  C# {

9 ]" |# A5 C+ \  o9 |# v( z% S0 C        if (workPart == null)& h3 f/ H5 e2 {* @9 u
        {
2 R& }- U4 B6 o) }$ }) W            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
) e3 w# f4 c0 {/ v- \" E/ W            return;
, H9 ?2 @1 c' F) I: O        }
' g0 v% h+ h2 P7 J, r* N6 O+ e8 |% `. V5 K% [
        theSession.EnableRedo(false);
/ P" f5 `- _! Y# b* Q: A, t" F( w7 a0 n" I
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
3 o) W. p6 }4 J# n" Z+ ~% X6 _' J
( \  {0 S- w: Z+ b5 z( t3 B+ v        SystemInfo(theUfSession.Part, workPart);7 o* z6 @/ e/ l, ?0 ?( P2 E
  ^4 {" d; r& V1 }
        try' |1 d' K2 m8 |8 i3 F# ?
        {( R7 X* V+ X) [4 [; o
            Tag[] operTag;
1 k3 Y. ~/ V: |- D) u8 Y7 {4 F            Tag setupTag = Tag.Null;
* s3 p1 c4 s: h! D3 a4 v* B( x0 e, A" J6 K0 M" f
            int countObject = 0;( T7 G: m8 Z2 v1 ~

# \( s$ j+ f5 @! L1 ?            theUfSession.Cam.InitSession();1 g$ O0 ~7 _  W" f! P, T+ b
            theUfSession.Setup.AskSetup(out setupTag);: z+ ~& k0 h1 T3 }+ ~0 M+ i, G7 o
: }5 j9 g% \) w8 ]$ K( U
            if (setupTag == Tag.Null), H+ g( u& X4 A0 n7 w
            {0 C) V3 P6 e  f1 p0 B! @" b
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
3 a+ a% H" b' d2 M                return;( C2 j) x% d$ y6 S; n' _* a
            }: m  f% c# S+ Q, w$ L! C" I

: V  j+ }* q. w1 Q, H            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);0 N# H7 D/ j' W' o+ ^
; ?( {1 [1 o$ V2 F
            if (countObject == 0)8 |+ W$ A; S  t+ |0 X+ c6 ^$ k
            {
' R) v- v2 E) l                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
! @9 V' q* x  n8 h. r                return;
$ `% b7 h' Z8 w( I            }
8 _- Q  P  _& L4 D' z
6 l0 R" I: W# ^* A            for (int i = 0; i < countObject; i++)
) H, T% }- `6 G, X" u2 z            {
6 F- d+ Y6 D$ S9 C' t3 [# @+ B' w                int type, subType;$ D  x+ Q4 [$ L. A! C( o, B  l
. C9 R& J1 ~8 _/ r
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);, N, M) Z: F+ W: r5 N# l5 x7 d
% X2 B3 v8 @4 y: g6 F( x1 \6 m) t
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));- `" S& Z: T2 O5 O# @* `6 K; Y$ P

: u  z+ o* F$ t& T7 f2 W                if (type == UFConstants.UF_machining_operation_type)
( b# i- \4 t) Y8 O; @                {' q/ W( @. _! N) V
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));5 }, R3 Z; p" E" L

0 L4 f2 l+ A% d( D1 |2 M                    GetOperationSubType(operation);& G4 _6 P: [5 r; b5 K

$ G  r6 ^% `( u                } /* if type */% z. c+ Q6 r5 U. i2 ^% E
            } /* for int i = 0 */
# q7 U# w: t# I4 c) X: o9 G+ g( p        }
% K( t9 x, c7 P        caTCh (NXOpen.NXException ex)
. @. E$ |( c; y$ y9 A        {3 z) v+ T& Q: s
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);- k- N3 I4 F) o
        }
9 ?3 O+ c* ?% o    }
9 q/ Z" T# ?* ]" c9 E3 h
: j1 U; h7 [- H4 \1 C5 O1 w, G! ], l
2 M8 ]4 c( V/ [$ I1 d. b( O) x    /// <summary>. Y$ O, B. z/ o9 ^" Z7 O
    /// Retrieve the Operation Subtype$ q% l0 n0 k0 ]
    /// </summary>8 Y3 e4 `6 O- M
    /// <param name="operation">The Operation to Query</param>
" I3 p: }' ^- ]0 U7 r2 `    /// <returns>Return the Subtype Operation</returns>" C1 Q# ~) O1 O7 M% t2 c
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
! V: x; M1 N' t) d4 ]    {: P* d8 h% w1 C. j9 L0 T
        if (operation == null) return -1;) b" {6 F+ `, m: U
4 ~8 E$ J% t" |( E
        int type = 0;8 X  U; e) e$ S1 B5 _. d
        int subType = 0;2 g! J5 l* y# Q
" S2 F; R& i# B: V- N+ w. `
        try- x7 D% ~4 F* W
        {
: i* p- E2 R. E8 G' H% q            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);4 A: n" B! T5 s3 d
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());4 f! G9 }- U8 N

% p5 H: c2 ?0 r) p0 n            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
) x8 B, T2 ]7 X8 H            switch (subType)8 _6 ~" n. g! E$ W5 d
            {/ z& Q% e  I+ i! h5 O& V
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
% ~+ n/ L* n* W/ m; F) |                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */2 j7 {" n( Z) l% q# R( A2 ~
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */3 Z" X  J% i3 O6 B' |4 ~7 C. B
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */- X) l+ o7 I- \, f
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
4 {; r8 E$ a" W7 A6 c! l4 ~3 u. Y; n                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */6 y4 y6 [+ ]+ m1 x  D; v1 w7 `2 F
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
6 L, Z8 w4 O, S- p) R. C8 J0 Q                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
  A2 ~7 I0 I4 g; Y) i% E1 K8 Q                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
  x) X+ i" e' R1 h) K/ ?: V8 b                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */  z5 s% w4 }6 O& J& M9 v/ d
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
' T' z1 @2 A* e$ g8 z3 M# e, q+ c                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */5 F; S9 ?, w" \$ v* E. ]" b# `
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
0 c0 q# ~& g. f# j8 ]. t! J/ C                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */& M# w" Y) E9 J3 \9 `
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */. m6 o. D) ~# h  o8 u1 S' t
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
, X  @, u, Q7 u5 @! D8 S                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
6 g; u$ z& b# Q                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
, B& ~: G( s5 b+ e- ^                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */8 V0 z3 F% u  B& B
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
6 ~. k  v0 s$ E8 O: T4 J3 F. i                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
) L, ?* T- I% u# C$ C- j( Q3 u: t9 r: r7 t: w# v, ]$ H' y) q
                case UFConstants.UF_insp_tolerance_subtype:
0 w" H2 U5 I, B                case UFConstants.UF_insp_path_subtype:
' k( R9 `/ a6 k( ?/ f3 `                case UFConstants.UF_insp_output_subtype:$ t5 [( g; s4 J( Y% x, Y+ i
                case UFConstants.UF_insp_misc_subtype:
+ C& A5 h. i3 S, B8 k- G                case UFConstants.UF_insp_align_subtype:  s4 w$ d4 }. R2 g3 ^5 l$ S- Z
                case UFConstants.UF_insp_sensor_subtype:1 Z  {- Q3 N! z$ ]7 ]
                case UFConstants.UF_insp_construct_subtype:' y) A! E6 N8 A5 k; W) E# T
                case UFConstants.UF_insp_bounding_feature_subtype:
4 |7 \+ p7 y2 Z, q6 b                case UFConstants.UF_insp_feature_subtype:
5 g1 s6 j8 ^. t. U2 P* T6 [; C, n( D+ I" k6 q
                case UFConstants.UF_mach_canned_cycle_subtype:% A. e& g. J. X% d& `$ G
4 W5 n, J2 }: J" g- D& X  i
                case UFConstants.UF_mach_laser_teachmode_subtype:/ E1 q& u: Z! W7 Z5 G, z
% G7 N' g. i5 M  N. Q% @
                case UFConstants.UF_mach_turn_roUGh_subtype:" L! x0 G4 i; ~& ^
                case UFConstants.UF_mach_turn_finish_subtype:
8 ?3 Z! D% a" l+ a- \                case UFConstants.UF_mach_turn_teachmode_subtype:
/ k: H7 e' N8 ?' H* \% v0 `6 r                case UFConstants.UF_mach_turn_thread_subtype:
# V4 ^1 l' |" t  W                case UFConstants.UF_mach_turn_cdrill_subtype:& g7 g+ W6 `  Z; \& ]& ^7 _% v% w) v1 v
                case UFConstants.UF_mach_turn_auxiliary_subtype:3 @# [+ d1 M5 k' s3 Q* a4 [% N" W0 T
                case UFConstants.UF_mach_turn_probing_subtype:
) ]+ \/ ~  `& v                case UFConstants.UF_mach_turn_tool_probing_subtype:
; o9 R4 c3 g6 m+ C) H+ r( R                case UFConstants.UF_mach_lathe_mc_subtype:
& N7 i$ }, a' ?; H* [                case UFConstants.UF_mach_lathe_ud_subtype:0 Y+ @, C3 o5 c" r
- E: S. G; k7 V! J$ D( |
                case UFConstants.UF_mach_wedm_subtype:
% I7 ]5 S7 x: X) V+ _- F                case UFConstants.UF_mach_wedm_mc_subtype:( F% R- Y. g0 C+ Y% q0 s$ R
                case UFConstants.UF_mach_wedm_ud_subtype:& L( s& ~1 i* p- L
                case UFConstants.UF_mach_mass_edit_subtype:
1 A' `  U  [  C1 g3 J8 c                    break;
2 f8 w' v+ ^2 {
/ r2 s0 g) J2 Z1 W                default:5 V+ A, A+ B/ z* O
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");8 u/ {4 f( d0 T: r1 E
                    break;7 m: r& I6 m0 }1 f- A# F5 {
            }
9 q6 R0 T5 l; U        }
& z/ V+ G6 G, L& D' R        catch (NXException nXException)
' j/ s2 q5 i/ h, }, G1 a2 _/ a. I        {
" L6 O* z  h0 y2 e$ s2 z            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());" t. j/ R& I' U" [5 H: U+ W9 Y1 O
            subType = -1;
1 ^* g% z6 F3 G2 Z6 ^' ~+ R        }
& Z* s) k: u4 g6 S% p2 s& V. E$ J
$ _2 n0 [2 B( j0 F3 E+ j        return subType;
" P8 ?9 F0 p: }; v- ~5 R3 s    }
. t- \! g5 K8 W( \) c) F7 ^, l
! I, C4 a/ c! j# o! a, j7 T* |    /// <summary>3 x) j& d  R$ n- F
    /// Display System Information7 ^3 v& ?' l, n2 ]2 k
    /// </summary>
/ }( r: k5 n: j; M- I    /// <param name="uFPart">The UFPart to Query</param>1 n3 M/ ]: L- J
    /// <param name="workPart">The Work Part to Query</param>
6 ?! ]' \# N  o4 D8 X6 B    static void SystemInfo(UFPart uFPart, Part workPart)& z4 E* r1 n- U0 e* I
    {
1 v: U, D/ P/ _( S2 T! ~        try9 G8 ~3 z) {( C$ @: B
        {0 g* T0 |6 G0 j0 h6 C4 ?- Y& n
            SystemInfo sysInfo = default(SystemInfo);0 L- l6 p- j* y0 a! B' C' V+ C
            theUfSession.UF.AskSystemInfo(out sysInfo);
" j4 I) d/ A; f+ j# h3 z6 x' w% a
: I+ i( ?9 h" ^- t' ~3 o$ t            string partName = string.Empty;& |& h0 _) w( S( O; a3 B( {
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
4 V" u! N" ]! m( q" m0 L3 w
3 N# H: C% v9 W. U            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
0 D6 f* F& ^; f: B; X5 Y& `" U            theSession.ListingWindow.WriteFullline("============================================================");" W3 O" T) }) i0 m
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());: D# F7 O0 B, r8 u7 I4 [, a2 ]3 G- E
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
( z# Z3 u6 v/ d7 M' I% n            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);" K; F! l/ M9 |; ~7 F% u1 Q
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());# }) |2 ]$ m3 ~8 [$ w+ K# t
            theSession.ListingWindow.WriteFullline("============================================================\n\n");, e# C/ a7 m9 y/ j3 v; S
        }
7 u% m/ O5 s4 b% g* a( D        catch (NXException nXException)7 p0 X) c$ W/ [' k  D* M8 K
        {
4 B0 g: N- g4 X/ p% P            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());  T9 {# F5 c7 k2 }2 Q4 K
        }
7 ~( @) B9 o" R& O    }2 v7 h& V/ O# H4 {  h9 q
# E3 [( V  N  C; q; Q; K
    /// <summary>
! P1 S8 x: _  O0 u- K    /// Unload the Current Image. O& C* F4 x) n/ `
    /// </summary>
7 Q" O; d! V* b$ L6 Q; N# ~* w- d    /// <param name="arg">String Send by NX</param>
& p  N' d; H5 p' y+ K( s" x    /// <returns>Unload Integer</returns>
4 D6 J' U9 h2 ]9 B0 j) Q    public static int GetUnloadOption(string arg)" }" w0 H3 n2 o* S
    {
' @2 {1 _' `" w( x8 v# ?5 g        /* Unloads the Image Immediately */! F. g/ r' H* n( x
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);5 N' e  d" D! b  a4 x3 E1 A  R2 O
3 o4 g& M) r% p
        /* Unloads the Image Explicitly, via an Unload Dialog */
7 K: f% g( {+ N# k. n( h2 x        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);' _2 a( n# M' l1 O( ]1 `

2 H7 j4 L' l/ j& o        /* Unloads the Image when the NX Session Terminates */
5 Q, f  H0 Y0 f& n' M, [% m5 c' K8 G, `4 G        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);  R4 f* F, u1 X+ M; E& {' T, o
    }
) \5 [$ |% y# N' V# s8 e+ E1 d}[/mw_shl_code], C# N% e' p! v6 }& H3 r( u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了