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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
  \( s" k; Z+ ~( u9 ?: D
. K  I  k: g, l9 ^, h$ y[mw_shl_code=csharp,true]using System;7 E( u$ }" d% f
using NXOpen;
$ l: D4 \: t% Q6 h% Musing NXOpen.UF;( |8 ~8 _6 R. U2 ~- L3 T0 Y
using NXOpen.Utilities;
+ @( H0 f, ?2 S8 h2 H/ g8 eusing NXOpen.CAM;
; K3 K0 \2 ]8 D) m3 t4 i5 `using NXOpen.Assemblies;
$ i; Y) t- L! i+ B. N1 J. v. @" u; d6 z0 \+ o8 G
static class GetSubTypeToOperation" k( I8 |4 [" d( ]. w1 \/ m
{
6 [  u, ^6 z* l. l2 v    static Session theSession;6 @2 L1 {( c' l. d. h; W8 x
    static UFSession theUfSession;
4 L+ q  s6 f& G6 o8 t& N) z    private static UI theUI;
/ V/ H2 Y" a3 w3 s
4 E0 o' O  \& |* _! u+ n    public static void Main()/ r, Q) h- M' U& V* B1 N
    {
9 r# i! Z" ?1 m' M  i        theSession = Session.GetSession();
7 e2 z) Z4 W8 P% D6 ]* A1 N/ D        theUfSession = UFSession.GetUFSession();
2 M% F* G0 S! i8 @        Part workPart = theSession.Parts.Work;  L" l1 ?3 a( V6 f+ \
        theUI = UI.GetUI();' ^: m9 d) ^/ V' y5 [
4 {: j1 k  g! M2 l
        if (workPart == null)  t4 n; Q. F, `; I/ y
        {0 j( V4 q8 D/ A4 T! T
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
, h) y3 @$ ^. Y/ R  w) D; l            return;- ^7 a5 ]5 b' @8 h/ P
        }: [9 J: }' [2 q- s$ @

. [  a; x/ J6 l, }        theSession.EnableRedo(false);( O8 I, E; C  ^9 {

) P' r6 p) L/ X/ R$ {$ V1 c6 s        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
" C2 q2 D1 q  _- \/ l* g  W6 }. A
$ A0 A  p( \, I& }* e( J        SystemInfo(theUfSession.Part, workPart);0 q9 a" |2 [% l9 u8 Q3 n* l

. q" t+ y  S. A- c        try: n2 e  f3 u& J- a: f
        {' U$ a; k+ q& u: j! Z
            Tag[] operTag;
+ v! ]5 Z# A% {% F2 q            Tag setupTag = Tag.Null;
. e& e  S5 P. `& y$ S4 V2 W+ D3 K" u) T5 r
            int countObject = 0;1 R2 W" `( a( G# K
* K/ P) \" T% g
            theUfSession.Cam.InitSession();6 P" P8 x& i2 o: w+ k
            theUfSession.Setup.AskSetup(out setupTag);
9 g1 J* q& u2 r: K' A: k, ]: _# `* w- L4 R5 M
            if (setupTag == Tag.Null)' ^5 R( d- E4 L" u" m! D# ~
            {2 n3 p9 ?" A" R+ l8 ]& N
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
. D* o$ G4 R) K$ S; M  _" p& G                return;- H6 @# F  }+ b: t
            }
9 W9 y4 L- i8 K7 R6 t* A. a% `1 H  R4 \
& [0 o! G3 r. t0 K5 r/ ]& ?9 I            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
/ [$ P: x5 G4 J& c) N4 T8 S
/ L% f  `: v0 ]% D. H            if (countObject == 0)
% G! F1 Z- s' m& w9 c* J2 A  g1 e            {
( w. s9 _: {# ]2 N6 C                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");3 q5 g+ t( u& q
                return;
2 M$ C$ Q8 v2 o+ z, i0 n0 g            }
! Q3 G0 s0 e8 u7 [& x; n+ w& S9 v* r* d. O0 K
            for (int i = 0; i < countObject; i++)
7 z3 E4 _4 l6 @% z7 w            {% c8 S9 d# |9 S: v
                int type, subType;2 y- x) T7 E  S; {3 i9 H3 l

8 w& v1 [8 F: A3 j; X0 p/ N: }0 H                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);/ v$ Q1 C1 z& p. y
" h) D1 _8 z/ O7 v# g! Q
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
* }9 e& R$ m7 b9 N& c& B$ L3 l
9 x. s4 o% F0 c2 m                if (type == UFConstants.UF_machining_operation_type)
! [6 x- n( z) z- H% d  W  R6 m. y  {/ z                {
1 ~2 ]3 z4 j7 s* r+ d; Q                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));6 i; V0 Z; o. ^

- E- K/ n7 I2 k! }3 y                    GetOperationSubType(operation);% @' V* L: K" R' Y2 p9 K* j

$ W; k- C$ r9 D( t, W                } /* if type */
" L# o7 X6 U4 O7 e) f" P            } /* for int i = 0 */
( V3 X6 |* f. |* l' \" w$ X) |7 x" r        }) y9 w: ?' x* _8 W+ w/ Y( ^' ^6 F  K
        caTCh (NXOpen.NXException ex)0 q( W4 N2 ]2 r
        {
' Y9 n  P+ g% f! Y- ^  B' A            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
1 S  W! [/ P% |+ B. d        }# @" p$ ]5 `) A. Q  V3 e+ m
    }
1 Z9 S- ^4 h3 Z  E
3 b& ~$ x* f$ V; ^! L! ^! m0 F. e# ?: \( E$ L" f, y" E/ Z
    /// <summary>$ j7 u8 I2 F3 P- b- T# m% x) I
    /// Retrieve the Operation Subtype8 i8 q7 U! T+ F; l: M/ \/ Y
    /// </summary>" B+ Q* L1 w8 Q6 g& R
    /// <param name="operation">The Operation to Query</param>
! q1 u- ^5 G% `    /// <returns>Return the Subtype Operation</returns>8 o8 W2 X, n8 c" A2 h8 v
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
* h6 T2 O6 |5 G  I5 l6 Q( a6 T' B2 M    {
, |+ J7 Y; U' D  u        if (operation == null) return -1;1 K3 Q9 N" r% `: h' }
0 ^4 k' ?& E3 V  Y# J, {3 V
        int type = 0;" N6 W1 G7 b; C' u, v6 v( y
        int subType = 0;$ ?5 q- p" V8 e. J5 W" C' z% f

& L9 U2 N( d# M        try
% Y! v& }$ j1 E        {
& S7 k' W4 b) d& N, p            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
* }+ M9 _. o" f9 p8 D+ L8 B            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());& W1 I1 h8 B4 [* K, o, P; n
+ Z9 m6 x( z/ E! U! a
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
& i. |6 a4 q  [& B) h; t            switch (subType)0 Z) l; J9 y* ^5 o5 I, A
            {
, i+ S; n0 m  s: Q. I, ]8 w8 Q                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
$ a6 D- Y# K4 [9 X# t8 [+ ?# y( I                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
  L' s/ ?+ j* L3 l, T, ?) D                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */& D& l) Y! m2 Y4 j* U- i' A
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */" G1 X; m5 h( z- v7 x# Q  D- c
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
; X: i, G+ F6 o9 j: W: `                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
  d9 M0 j  c5 w7 e2 B6 t                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */4 }2 |5 H6 ]1 ]/ I& b; N
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
6 g' q8 k  R+ J) j4 r                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation *// ]! x5 h/ T: z5 t, {2 V+ ^- y* E
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
0 c# Z- e7 n' z0 i3 a0 T' L( T& }                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
  r8 P0 h* g- K0 |/ x# ^                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */% n' ^# y9 [$ s: M2 V
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
) w- [+ [$ f: t' d7 ]6 u5 r                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) *// z' c( j% J8 b8 U
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
; J& O$ h5 U; L# j                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
: ?& F  v1 v# A# Q1 [                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */, r" R. [9 {! U  H
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
& {# D1 G7 p5 y( O1 d6 H                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
4 u( t7 K$ F+ _9 U' }                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
5 E, Y  c; q. e9 c; B* U& c8 Z                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */, a/ V, O( ?" s% m

& i6 m# T7 y8 J& S$ j$ |                case UFConstants.UF_insp_tolerance_subtype:0 s4 c& r( N) u9 a6 G: F1 l/ z5 `3 q
                case UFConstants.UF_insp_path_subtype:
; D% C+ n! H' ~) z                case UFConstants.UF_insp_output_subtype:. |" \( n' F( s
                case UFConstants.UF_insp_misc_subtype:  U6 X5 I3 E. p* m8 d
                case UFConstants.UF_insp_align_subtype:
' ~! D- [0 v1 U' c( v                case UFConstants.UF_insp_sensor_subtype:
0 _" W. d! J' H6 N; @# p5 e) ^% a4 q                case UFConstants.UF_insp_construct_subtype:# C) T* \8 n' L: O+ V3 A
                case UFConstants.UF_insp_bounding_feature_subtype:/ y) n  f, f& G) q7 m
                case UFConstants.UF_insp_feature_subtype:* ~! O1 y" {5 p3 u  c

4 C' Y9 S# ^. m" h, A, R7 o, f2 {" j                case UFConstants.UF_mach_canned_cycle_subtype:
4 M. e" m7 ~3 C) U: o
. b) M4 r5 e  I' W1 _  k$ ~                case UFConstants.UF_mach_laser_teachmode_subtype:6 J: x& n1 [# V0 b5 Y

2 ~& \' \) P2 d9 G2 f7 \1 j                case UFConstants.UF_mach_turn_roUGh_subtype:
1 L; t5 b$ m$ k0 y! {& T                case UFConstants.UF_mach_turn_finish_subtype:
7 V, X0 z* J. O  V. n* A; n3 c                case UFConstants.UF_mach_turn_teachmode_subtype:! C, T; }4 F, G, y9 o) x' E
                case UFConstants.UF_mach_turn_thread_subtype:
( y) Q( p5 D0 f                case UFConstants.UF_mach_turn_cdrill_subtype:; p* r3 U( o+ v
                case UFConstants.UF_mach_turn_auxiliary_subtype:* _' j2 w: m% h/ @; \1 P) c" j$ H
                case UFConstants.UF_mach_turn_probing_subtype:0 i( H6 v$ |/ W3 X) w# ?, s
                case UFConstants.UF_mach_turn_tool_probing_subtype:
( P6 Y- U2 T- A                case UFConstants.UF_mach_lathe_mc_subtype:
% e* q2 S( n) Q) \                case UFConstants.UF_mach_lathe_ud_subtype:8 {! f6 t" ^+ a* c8 u' o3 A
+ C- ?' T! s- \& o; U' r  r
                case UFConstants.UF_mach_wedm_subtype:0 B: H) i' ^% K7 M6 S
                case UFConstants.UF_mach_wedm_mc_subtype:
) l/ {  \  I4 O7 S6 G1 q6 }                case UFConstants.UF_mach_wedm_ud_subtype:6 l. }+ V" B& w' J8 N2 B
                case UFConstants.UF_mach_mass_edit_subtype:
. k" q! h# C1 n* c9 l* Z                    break;' m; O1 k3 q9 E* g' I; u

) i0 I0 k8 ^. a$ |+ ?                default:: v0 f) Z/ k. H& ^% {
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
7 S0 u8 Z4 H% }8 I7 A2 V                    break;2 q) s; O3 K' T" k8 a4 Z% d% C
            }
9 ~6 B! c& N$ B! I6 X! ?        }" D( ?& E& K3 A/ l* t  B# h1 O8 L7 |
        catch (NXException nXException)
" [! m4 r& \: U$ l, e3 d" @5 O        {& H# t" s1 `( e. K% K# f
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
% _* N' \  y# p& K, a; \& {            subType = -1;, j2 o) T& o. N! l4 I9 j
        }
" w" i9 ?6 n! I9 E2 ]7 T5 Z8 {3 Y: l# `# _* Y
        return subType;
0 A6 g8 F* L( h; A. s    }  T( ^) N% h" X. k

' ^: W  F2 A. l% [    /// <summary>
& m$ t+ y2 b: m' f    /// Display System Information( {! t, i( T5 W7 R# m9 ]
    /// </summary>
6 E& D/ n$ E, a+ g+ J    /// <param name="uFPart">The UFPart to Query</param>; O. W; E! F5 C. O/ E* V$ {( G
    /// <param name="workPart">The Work Part to Query</param>/ L+ o/ X, {( g( B9 ?7 [
    static void SystemInfo(UFPart uFPart, Part workPart)  v5 B( Z4 D% i, H3 X  C
    {( O0 ~3 Y+ J/ `1 R" c
        try+ f* V  K: w6 _- P: e! Z
        {
7 x, G: ?% k! |+ P2 d            SystemInfo sysInfo = default(SystemInfo);
( h5 J& [0 s1 |' _. q* m2 b            theUfSession.UF.AskSystemInfo(out sysInfo);0 P1 e( i& @. `, B& m

) _, `" z6 `( d2 [+ @) `- h            string partName = string.Empty;' T. e& x4 E& K3 P, ?
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);( Q, w9 z) r; A3 C+ O& d; d

9 Y! b' _! s( g* u            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
$ U) Z. A8 T; H3 L: Y$ h            theSession.ListingWindow.WriteFullline("============================================================");
; Y3 |$ L% @% a; n            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
9 i% q2 J" i: L% L            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());% V' f7 @1 O% d( u6 p
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);  W  `' A4 D2 y( w  }
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());6 l/ u% K- Z) M0 P& ~5 X, e3 r
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
& g- y0 q2 f' T        }- h5 W# b: ^3 C
        catch (NXException nXException)
; q+ U. i' ?! O1 }3 L: p+ M* i& G. L, u        {! [: Z  W% C8 G
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
' K8 L8 n% L2 c1 `% D5 h5 B        }/ }# y% z. B5 W# R5 |2 k7 J: P+ ^
    }
/ B( f% [; }3 r0 X* f. X5 O, Z. F  U6 e% J9 A% P
    /// <summary>
# ?1 f- Y/ D: x. @: g' e    /// Unload the Current Image/ s# F# n% X% l* K
    /// </summary>
% [8 d( d6 L. k8 o. T    /// <param name="arg">String Send by NX</param>/ K1 W+ O9 \' U
    /// <returns>Unload Integer</returns>
1 b$ z; t  k1 W0 j! n4 I    public static int GetUnloadOption(string arg)
. p  h4 \* ]) e; y) k, l, H    {( l3 G* o% H# \) I" w) ?+ D
        /* Unloads the Image Immediately */
9 y5 w5 b: B, y* x( _* I! w        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
  E6 T3 r) m. L' A; U$ `
4 g& B7 w4 |+ s        /* Unloads the Image Explicitly, via an Unload Dialog */$ M2 X/ j& V; r  I, g" i8 e, f- V* y
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
3 i& Y  ~5 a: S$ r
- u* H" q2 Z- L" N; B) F) o2 m        /* Unloads the Image when the NX Session Terminates */  V" r" A4 H# B
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
4 Z  s7 g" `8 n, L8 M$ O0 D    }
! r4 F  ^8 n* b7 L0 v}[/mw_shl_code]
/ {6 z5 s4 @: b* @; d4 V# Y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了