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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了6 c; H! |" Q2 T2 ~; R

2 m, |6 b' r7 s. ~7 `[mw_shl_code=csharp,true]using System;
* w- p0 I- R( a* P) _" Ausing NXOpen;
/ w7 y. G3 g& _: G, k2 husing NXOpen.UF;( z+ w. J+ c6 E
using NXOpen.Utilities;
3 ~' c% x* [% `) a0 }! Cusing NXOpen.CAM;
4 }# i8 l+ n* q1 N+ rusing NXOpen.Assemblies;% H' @, N8 m2 u

( h2 Z* v+ `  |+ ^0 Ystatic class GetSubTypeToOperation
6 I& h9 \: e! E{# N" G9 B: u9 }- T
    static Session theSession;
% ~6 j; E# G9 _    static UFSession theUfSession;$ x. e  t, F. z3 Y
    private static UI theUI;
+ x+ U/ W) J9 [- e; Y# N
& ?- |0 K6 j6 [2 \    public static void Main()
" Y! y, T9 }/ s8 c: z    {; @( \1 u& C( u
        theSession = Session.GetSession();
( G6 s8 V6 J6 N0 i4 J% e; V# x0 |        theUfSession = UFSession.GetUFSession();
, ~/ G  D+ _. \( v        Part workPart = theSession.Parts.Work;) z; s5 u$ O, O) _' m
        theUI = UI.GetUI();
, y+ S4 c! v2 @, i# D9 a3 @! d9 e0 J) A9 U6 h, u0 R5 Y" L3 N9 f
        if (workPart == null)! D* n7 @" Q, ?" H
        {0 f1 o! k! V) K- Z6 F- Z; J
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");1 Z2 u1 g+ X; A& ?5 ^5 M. I
            return;' I9 C1 T. C' m3 F( J4 x
        }
0 q* j% Q( l( B  D" ]6 I# Q6 K) f5 i) J* W0 o; U, V
        theSession.EnableRedo(false);! Z1 d- s4 ]9 C- c

; |2 g3 d' ~7 l, s6 a; k        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
& d! M( \5 I, U9 d, A- h  O. Y+ i: J% J  T. |/ I. @) r
        SystemInfo(theUfSession.Part, workPart);
$ M0 `# u; k4 j+ i7 Y4 l; V4 B/ K; t" q
) s( W8 B, s% o" u        try; c9 y' g# a* M6 H' R9 @8 R+ l
        {' ^4 ~! @, e: X( U+ d4 N
            Tag[] operTag;2 g# }  L% |+ K
            Tag setupTag = Tag.Null;
9 R! o1 l3 L# M3 \; }: q. s$ o4 Y2 g3 _: @! }. a/ T6 a7 [$ F3 A
            int countObject = 0;' l) f1 u( `2 t! @( L
2 ]& d2 R6 v' i9 s' L/ X
            theUfSession.Cam.InitSession();3 M. d, R8 e- F9 Z7 X5 Z" V) ^( l  x
            theUfSession.Setup.AskSetup(out setupTag);) P4 Q5 ]$ a. T- w  P
) ?! D7 o2 Q- Z4 B5 p
            if (setupTag == Tag.Null)4 z- S/ ^; t2 k0 M3 w) X8 _+ j1 \
            {
% `- o+ B7 D" J6 |7 h& m9 a8 F& X                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
; E/ [$ r' U; j- b9 @  a) I                return;( k& S( E+ F& X" j
            }$ ]9 s7 l1 K( X

* ]( c8 [6 [6 T9 i: Q3 p            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
; `9 e- S" C$ w' i2 d- q
/ ]% N2 o* G4 N            if (countObject == 0)
% B3 j! J* y& B4 F+ |7 b$ N            {
" s7 I' [$ Q2 B3 B4 H( k- |* u                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
) w% ?; @+ O5 Z: q' \3 f                return;
3 A+ {1 k/ f- Z& L& Q+ V7 D            }  D0 [8 k3 L9 C! U9 b+ y
* S% u% `7 Z6 Y9 m
            for (int i = 0; i < countObject; i++)+ H% @3 S; _; K! @# B8 Z
            {
8 V5 `% ]( o) |8 m. b- I- }                int type, subType;
% g/ @/ m8 y0 Z7 D& T0 J% U; W% T  @& c1 ?/ W! Z) h# f2 }% B
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);2 g3 s' E# s$ I, u/ b8 M

- d5 o* h7 g+ R' e( H2 K                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));8 S% d" V5 k. ]
$ c# i7 k9 y, ^% @
                if (type == UFConstants.UF_machining_operation_type)" H6 t* l  s5 k
                {: q, h& E, Q1 {: \! \& U
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
$ o6 G! P5 \3 }4 E, z
: \0 [1 S8 f- p  X" H- \8 N, W                    GetOperationSubType(operation);& g' `! {0 j. e2 K. S( R' s7 _6 p
5 Q+ ]8 W- A5 s6 a2 h( p' i: l
                } /* if type */
' V! z6 g- R: }# j! i            } /* for int i = 0 */
! t/ T0 F; O# Y: g        }
8 ?, z/ s! `" F1 N. B. W        caTCh (NXOpen.NXException ex)
8 _7 K' }6 ^* {' g        {
$ z: |  E3 Q5 t$ Z- z$ Y            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);, B5 e; k* E! Q/ o" O
        }
, J0 `* q5 g8 e6 f7 F+ _8 F    }* Q! c! L7 n9 Z, |( i2 n9 d( h
" e2 k5 b. V& N% n' B
3 L* B' h* O6 z9 u. I
    /// <summary>* O) s$ }8 _& U, m
    /// Retrieve the Operation Subtype. P; R% t# c; T6 |7 i8 J* [, P
    /// </summary>2 y3 O( N2 Y! x9 j, j( T7 @* K% t
    /// <param name="operation">The Operation to Query</param>
8 s8 G& O9 k2 y) ?    /// <returns>Return the Subtype Operation</returns>/ U, ~+ s" ?5 }8 H  O! x6 s
    public static int GetOperationSubType(NXOpen.CAM.Operation operation), ~& k5 S# O9 t, ?
    {
8 ~1 D( q; ], f; d# V        if (operation == null) return -1;
, Q: Z! m3 J% Y2 U7 x
- p, l& y' k$ [! M! }        int type = 0;
! a9 T; \8 r/ p! X3 V- P4 i        int subType = 0;+ B# ~4 G$ O' g

; S% z6 K0 Y; [+ C0 s        try$ N' O$ x) }1 x% t# k
        {
/ q8 e7 `$ u$ i            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
, ]/ d2 m% X# N2 P            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
7 i) k3 B) P; n: A4 \' L0 z2 {* g1 v& j& {+ R# P  }2 H' Z$ ?
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/2 v( s7 D0 n+ K# |! m  A
            switch (subType)
4 j0 J% B8 \: R4 I            {
5 S9 a- D  e! m5 m8 g4 Z                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
6 _( l" a- S% q" W                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */" |/ {6 F& f: J9 Q9 J; `% A: |
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
8 L) ?4 N! U# D9 p6 j: d                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
" E; _% [1 n& A3 t                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
. l( ]/ V1 J6 _, S3 j3 d7 [, c                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
; U5 P# D$ {8 D* z/ z                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */: g6 y. \5 `6 k4 ]  b
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */! P/ O  B- w" D; |6 [" y
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */) D4 H+ g( t9 {
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
8 ~8 ~2 L. }9 h+ v  N                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
4 t  y8 u" W% b: y+ U( _+ D                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
5 R" U' S- }+ b; L                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
( u) `8 N3 L" v/ ~- G7 i7 @: A                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */+ M: R! F% w& r, V, |) C3 R5 w6 N% a
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
, L7 I) M( L' O                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */! T6 H" |0 F, m+ M1 h
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */4 g9 M) t8 n- K0 B
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control *// f! N( _" k. j4 e$ ?% t9 d
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
7 S0 x% @5 c. d+ J% m: H4 w                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */$ q9 U( B: x' H( X* M4 K
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
% s. ?2 P, J1 z3 j# p: n9 P0 X( u  I+ a' l: J9 _
                case UFConstants.UF_insp_tolerance_subtype:2 z% P. K4 I, J, s: c  u1 Y' @
                case UFConstants.UF_insp_path_subtype:7 f5 v/ D3 G5 G+ ]! v  ~5 n
                case UFConstants.UF_insp_output_subtype:" I# y/ s+ c0 [3 [0 a0 u
                case UFConstants.UF_insp_misc_subtype:
/ Z$ T: l9 k2 D! M                case UFConstants.UF_insp_align_subtype:0 Y/ U( c0 c, d* g* [
                case UFConstants.UF_insp_sensor_subtype:
/ D9 F6 B, O# a$ O3 `) ~3 b6 M                case UFConstants.UF_insp_construct_subtype:" V6 D9 \- `* U* o9 L* `; N
                case UFConstants.UF_insp_bounding_feature_subtype:' l: A. O9 u4 w7 _
                case UFConstants.UF_insp_feature_subtype:
3 j* b6 d3 Z7 M  e# k# @  P5 f& i+ `/ L2 u) y) J
                case UFConstants.UF_mach_canned_cycle_subtype:& c) ], b) t4 O: U, F6 O; h) R, t+ P
* h  b' Q& k' J7 F- p, N
                case UFConstants.UF_mach_laser_teachmode_subtype:
1 X/ ~+ @9 K+ X- p# {
1 l# X/ {7 m* k2 t                case UFConstants.UF_mach_turn_roUGh_subtype:
3 _  _$ t# u) W7 O# P5 v8 l                case UFConstants.UF_mach_turn_finish_subtype:$ ?' ?2 a8 P/ w5 Q* J
                case UFConstants.UF_mach_turn_teachmode_subtype:
( a4 X' I! e) _                case UFConstants.UF_mach_turn_thread_subtype:
' ^) ], c1 h" P! S2 w! a& M                case UFConstants.UF_mach_turn_cdrill_subtype:
7 h0 {2 }* g7 ~# i6 ~/ ^                case UFConstants.UF_mach_turn_auxiliary_subtype:
$ ~9 G( S8 c! J6 D3 I( p1 Y                case UFConstants.UF_mach_turn_probing_subtype:
' T4 L  l, r+ N: g+ v0 h& ]                case UFConstants.UF_mach_turn_tool_probing_subtype:
" l& T; V# ]$ n                case UFConstants.UF_mach_lathe_mc_subtype:
1 j$ M. R( L* D3 F( j9 q% E                case UFConstants.UF_mach_lathe_ud_subtype:' Q/ X9 n- L; P7 }

% t/ B  I/ @( t. a9 k                case UFConstants.UF_mach_wedm_subtype:
* v8 K4 j8 B1 t. r1 U# Y& D5 [  ]                case UFConstants.UF_mach_wedm_mc_subtype:
4 t. e* N( M% f' ]; x2 |                case UFConstants.UF_mach_wedm_ud_subtype:5 p6 m& I) X' I! A4 O* w
                case UFConstants.UF_mach_mass_edit_subtype:
8 f" c: M9 `8 c3 H                    break;6 c+ _! L( K1 H0 d- v
, f) r& r- t- D" y/ v3 }( h4 Z
                default:  o) M' ^& _1 `
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");* o3 J1 q0 |  V7 \/ }( p2 m4 [
                    break;
0 U+ W& L8 R& D7 u            }
. C* P: z2 K6 u# K2 I& D        }1 G$ C& H/ [6 `. H# P; v
        catch (NXException nXException)# z5 F3 \- Y9 O% h
        {. I8 _7 s4 d5 W; C+ x' F7 m
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
6 a$ K" K0 |! |* p3 p* m            subType = -1;& M+ a6 V! y3 F
        }1 o! V% X# D4 g# D, L9 P
7 R) L; k$ w6 I
        return subType;4 }) z( _) X) G: C# }
    }, m/ D9 Z# m3 H4 |  D7 r
% W, R$ G0 Z5 ?, Q# n) a  P) f8 _
    /// <summary>( R, v# U3 e+ o4 ~) g
    /// Display System Information6 i! o# T* K- ?8 Z3 c# X
    /// </summary>
7 s! j/ I) U2 {; H2 I$ T    /// <param name="uFPart">The UFPart to Query</param>( W4 O! N( s' f& [
    /// <param name="workPart">The Work Part to Query</param>
# Z/ l! @. U$ {4 }! R& P* a+ D    static void SystemInfo(UFPart uFPart, Part workPart)/ R, ~5 L5 r  S- Z! E
    {1 c  F; D& [* ^* g0 o( l' j
        try6 x* E: r. P6 ^( n
        {
6 i% M! J9 L) e            SystemInfo sysInfo = default(SystemInfo);
9 [9 M" v, A8 P  U" L            theUfSession.UF.AskSystemInfo(out sysInfo);
8 w% K; W" ?/ z
/ G7 h, g$ `+ y& X' x" D; L            string partName = string.Empty;! b7 @$ w7 F7 E# k/ _' }* P9 N
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
7 c$ S" ^2 U+ `% l* n1 t3 H5 @$ B5 U- v1 P' O: z1 q, i
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();9 L& `1 Z( y3 ^0 Q* v. X2 V; d
            theSession.ListingWindow.WriteFullline("============================================================");
2 o: h+ x0 k/ m7 n# O            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
- L  x. T% s* C  D$ j) \            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());5 z" U; u8 [: x! S: r  V
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
( i( K* e& Z% O. x% M. o9 J& q. i3 [5 [) |            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
+ y; h& G  [- Q            theSession.ListingWindow.WriteFullline("============================================================\n\n");
$ X  }6 r* u1 }        }
- @4 `! H# [0 l5 d2 {5 l3 W+ w        catch (NXException nXException)
  F0 q1 c: ?2 P/ ^        {
$ @0 x3 [9 }2 q3 t9 F6 ^0 I            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());' b$ f4 c8 R, D5 Y  p& }. e
        }
8 }! ^8 z3 v9 C2 a: [! o! C% c    }; I. D" z) H0 l7 }4 E; `
( l$ H: ?$ z- D' p! t
    /// <summary>8 L4 X; x+ j# o6 w% C' a. W
    /// Unload the Current Image1 m& c% F1 T8 ^# X( |
    /// </summary>* B' b' C5 }0 ?* t
    /// <param name="arg">String Send by NX</param>- Q+ }/ ?: Z. d' D+ D5 w1 R
    /// <returns>Unload Integer</returns>
( X0 q' F& j' v! G: \    public static int GetUnloadOption(string arg)8 h$ A( H$ `9 ]4 y+ g( x  I$ F
    {& h7 G2 c# \4 W2 ?5 ~4 c- T
        /* Unloads the Image Immediately *// R: i8 j# T& a& _8 \7 ~- s
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
: W  b; Q4 U+ F& P  g0 g
7 o6 o+ C4 Y0 C1 S+ k        /* Unloads the Image Explicitly, via an Unload Dialog */5 t# e7 B" [* c$ H/ J2 O; i
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
( Y( l5 {$ k4 X) q$ f" K' k' T- X; f) ?5 S7 }
        /* Unloads the Image when the NX Session Terminates */+ S, \! [# p' x; V- g' a, o) |
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
7 h. T/ e% r" N, m" W$ S    }1 L" z+ d+ T% Y$ ~0 Y( |9 q  a
}[/mw_shl_code]
) D9 N. f, ?$ Z) G7 b$ g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了