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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
; w+ q0 q( c7 V' W$ U- O& W
' \& r' u7 v! m, i[mw_shl_code=csharp,true]using System;  A* P8 z: @7 s0 f* E
using NXOpen;! ]/ n/ R; N. r/ K$ T
using NXOpen.UF;
- F0 }) ]+ M7 w* q) W, V; Busing NXOpen.Utilities;& P* r3 k% n0 R6 v8 a) E+ K5 M
using NXOpen.CAM;
; @5 X1 j8 U' H1 i' t; F1 qusing NXOpen.Assemblies;/ T4 t) y/ P9 F
, _* `) ^& b. g9 q: m9 t' J' C5 f
static class GetSubTypeToOperation
; y: u2 Q0 K. D- h{
, k6 l/ \$ p1 h' i    static Session theSession;
8 c) v) V, j0 N$ G, b    static UFSession theUfSession;
/ i" U- @9 S0 s( ]- X# c4 D    private static UI theUI;. ^$ Z) u/ P+ m8 e  S( B" f( d
$ x( L% h( G* a$ i; Q- D
    public static void Main()* b. i& B' p, O/ y  y$ [
    {8 }9 e! r& m7 i4 t$ _
        theSession = Session.GetSession();
# w# z- a! T3 a+ H) K        theUfSession = UFSession.GetUFSession();( A4 Z+ N+ ]1 D& y! ]* b- X
        Part workPart = theSession.Parts.Work;- K/ G) J$ X/ Y, Y
        theUI = UI.GetUI();, }- r; Z* ]. f) T1 G8 ?
+ P; Y; ~9 \. M
        if (workPart == null)8 D7 B  n' L5 M$ A5 w+ V& u* Z( d9 X2 x
        {
$ j  E& i8 x# s' A7 _- m' ]            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
# v8 i) S: Q8 h& D3 P3 o$ T            return;
+ e3 @1 x: I7 a, O        }* G* C. V: j/ b$ p/ N& G8 P5 H( ]; L
' L& q1 \; E! Z- g2 v4 o
        theSession.EnableRedo(false);
. G$ P( x5 s  }# Y* u1 K! {: x' X; k. m) d
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
. L9 D. ]! n" r* c& j$ q& ]7 [5 g" O- M
        SystemInfo(theUfSession.Part, workPart);
2 b! A+ v! @  S+ I
" A: v4 A) _4 y) Q3 J        try; {$ x. b1 ]8 W% \9 H
        {
" Y; `- Q( o* H5 U/ ?            Tag[] operTag;
3 c2 g9 s, O* i/ q( w3 _4 r$ _            Tag setupTag = Tag.Null;
4 D# p( t3 w: ~7 W& r. @# `: K- Q, W8 D% g4 I
            int countObject = 0;9 z) w  m, o' u7 J* f& \

8 q) F% m: b. ^  r7 i' V3 E- T+ K            theUfSession.Cam.InitSession();! B! a% I6 m% E' `% j& u
            theUfSession.Setup.AskSetup(out setupTag);; _, t( \. r. S% v/ ~5 M( K
" A! E& o8 T/ a* Y% x
            if (setupTag == Tag.Null)
: }4 K1 k8 F/ Z8 z            {. u; M6 z( t( S" v2 N
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
1 \  R- |; s; g3 \$ G                return;& P) R" L8 x8 R& I' v( X
            }
6 W; z- j" Y$ D7 F5 G: _& B; B& y" I
) E0 z+ \+ r- \. u$ d            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
1 R5 I# k; o* J3 P' \/ o1 Y# q  D+ P8 v+ @# Y
            if (countObject == 0)) {, b6 l3 L/ p; r4 M
            {
; d1 ~6 t" j: l$ \7 v1 w                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");. D. K: J6 C  W
                return;" `% W2 w# ~' b" K9 E* M
            }' m% P9 Q; M! s6 i

  ]. U8 H0 b/ x% i+ }; v4 p            for (int i = 0; i < countObject; i++)
7 D% `% C: i' r3 l            {
2 A9 U+ h) z  G                int type, subType;
9 f- B1 c+ e+ b1 n9 a) L* G$ X2 W/ R. h6 Q( k' N5 h
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
) X- k' R) V6 k) \* Q) N' y6 G$ [& ?9 k9 O& s( W& y
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
, @$ f  l- [  h. X7 }# [
8 }2 C- v# \9 g- r( i; b                if (type == UFConstants.UF_machining_operation_type)
8 ~% j/ \' N% k8 ^8 q3 o                {: w: _- K  c8 T' h8 c
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
# a$ Y& U0 V  R1 N5 U
+ I# K" I) p$ d; t6 s                    GetOperationSubType(operation);  V7 c$ ^5 W) b% ]
/ {# G: j5 R3 [9 T2 e
                } /* if type */$ z0 P: D1 t2 E( S. S+ q
            } /* for int i = 0 */
5 ^7 T' O0 z% e6 G4 d' W; ~        }' o6 R! n* F+ }2 F6 t6 [
        caTCh (NXOpen.NXException ex)
/ x8 _' H5 s  b% M        {
8 \, i% U9 P; \! [" B% h: W2 T            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
3 s% V8 r% ~& C- |5 m2 F' @1 b        }
5 F# F8 i2 L9 m4 r& ^    }
1 \0 [9 e* u6 \  p; L' a7 q; h1 l: h% W. x
. o  o% X+ f: o7 X
    /// <summary>
, V: X+ W2 u$ G; k( m/ K    /// Retrieve the Operation Subtype
* ^0 R6 g. w, ?/ h' v    /// </summary>
( M; q5 C" o& ^) e/ P# e    /// <param name="operation">The Operation to Query</param>
& e( m; ?% b4 Z3 a7 x    /// <returns>Return the Subtype Operation</returns>8 F; k6 d4 a! m
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
+ w1 T7 G8 i6 }: q! C9 d9 s6 }2 H- |    {
2 b. l. T/ Q% V) u6 s& w        if (operation == null) return -1;
; i! ~4 ?, S: L! [$ ^: n# @) A1 k: ^. q0 D
        int type = 0;; ~  l  j5 p/ Q( L, l
        int subType = 0;1 ^- X/ ^, ]" _
: W% T- P5 h/ \! ?( M* N* q' i2 P$ A
        try
2 {3 d. [3 n, s' F/ x        {! C+ u% V) d- \% L
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
4 @6 t, b+ [5 o& h7 N. J$ a            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());5 j! m" s* N4 N+ Z( r4 j. X
, S  j& i* w) o' A$ H( c- B0 F1 _
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
  [4 Q4 i  R; V8 p3 i            switch (subType)
" `# O; b+ t4 i( n# }; p8 F! [! Y            {, }* F$ m- x- x, h* g, `6 A
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
& A4 [' f  ~% B5 R" _; l# Z                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */; K% l9 E% q, T; g6 Z( V* F
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */0 {9 g- f. t1 P
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
. [1 k7 y4 s6 Q0 _1 K                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */3 [% v  W9 Y9 _, \' u( _
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */4 f7 t3 \. f" i: J$ @
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */% R9 H, O9 {5 u9 q1 p  y- t
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
# a, m8 T9 S5 p  h9 K0 d+ c                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */( H" U, m  M0 }. Q$ }, l
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */9 H* Z7 b/ S! o& y$ P. i1 H. h
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
3 R% Z! ]+ W" g( |                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */' A0 Q  X! f  t! g
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */6 D" \. D5 o1 o, |
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
( z* `! V# F" T" t                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
2 _; X: Q: ~3 j) Y  C3 l4 h- ]                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */% `# Z2 F2 r) ^& p6 ~+ u9 \
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
; O! D  p  B- q! O, m! G3 S                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */. Q3 I' N; Q+ [0 a1 t  p3 w8 a* ~( l
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
- R+ ?) Z! c  y; v5 I8 G                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
8 m4 J( `- h, \3 G                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */; ]( B, |+ u* `/ i8 }( \1 A  D
, M* ~" c" }7 X/ E; V4 ^  M/ |
                case UFConstants.UF_insp_tolerance_subtype:. F3 w: n' h3 Q  x; d
                case UFConstants.UF_insp_path_subtype:
% S: z& t( v# Q6 U" ~                case UFConstants.UF_insp_output_subtype:7 |$ H9 b# }7 Z0 s
                case UFConstants.UF_insp_misc_subtype:2 Q( s; w0 C9 ^7 V4 _0 M
                case UFConstants.UF_insp_align_subtype:
( d# }) l* p& T1 R. S6 g4 A                case UFConstants.UF_insp_sensor_subtype:
+ Q- p+ S% x* U# k6 f                case UFConstants.UF_insp_construct_subtype:
# X* ?" W7 b7 Y                case UFConstants.UF_insp_bounding_feature_subtype:
$ @& u4 t% ?1 z  J7 {0 @( K                case UFConstants.UF_insp_feature_subtype:5 f8 c, a8 j( O

2 a7 \4 k$ m; r9 N, p$ L                case UFConstants.UF_mach_canned_cycle_subtype:
" q! j( U! e& w1 Y! {. N, t, Q' {# o6 O3 V: ]
                case UFConstants.UF_mach_laser_teachmode_subtype:
0 b5 t6 ]- h) i; r$ c- v
; A/ i3 j1 H/ B- h8 Q! x                case UFConstants.UF_mach_turn_roUGh_subtype:
' w5 \9 J; B0 `3 \, t) L5 ?, ?9 C: Z( f                case UFConstants.UF_mach_turn_finish_subtype:
7 F# p! u6 ~/ ]- [                case UFConstants.UF_mach_turn_teachmode_subtype:
, ?; [. y. d; x                case UFConstants.UF_mach_turn_thread_subtype:7 u4 }2 |$ E7 k$ L8 p
                case UFConstants.UF_mach_turn_cdrill_subtype:
* r9 _2 \9 M/ L% m                case UFConstants.UF_mach_turn_auxiliary_subtype:+ f. z+ i5 \- c
                case UFConstants.UF_mach_turn_probing_subtype:( i  c. J: m& ~
                case UFConstants.UF_mach_turn_tool_probing_subtype:
0 A; w) e6 a2 t. C$ X9 _  B                case UFConstants.UF_mach_lathe_mc_subtype:
, d2 \9 h( ?) j: W" q9 {* D. m                case UFConstants.UF_mach_lathe_ud_subtype:% E! M$ ^2 a" _' T; J

& a3 g) r1 m. z& R+ }                case UFConstants.UF_mach_wedm_subtype:
  w9 g# l) Q: B4 g                case UFConstants.UF_mach_wedm_mc_subtype:
. k0 N; N" I# x  A& p* n: E3 m                case UFConstants.UF_mach_wedm_ud_subtype:! B/ S  u- G( P
                case UFConstants.UF_mach_mass_edit_subtype:
) Z! z/ Z4 Y9 u                    break;
* i5 C1 N( a% K9 o: _
' ]3 i: _- m7 V; u+ i                default:
3 X$ k. Y# [) n                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");! {: X5 S# ^  h" Z7 \* s5 ~
                    break;
0 g; r+ S- t: k3 [+ \& t# N            }
, {% G- x8 h) f" G        }
- L4 I, A$ t9 P* u6 e        catch (NXException nXException)1 @& {8 m8 W, j7 T+ ?
        {0 J; E9 b6 u3 S# |' F0 N
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());( J4 Y& |1 B( I' \7 S: w
            subType = -1;4 l  b' V* R9 N7 y
        }
' e9 i) @9 X( q, k6 k* `- s
) G$ S3 q5 g$ W# G2 a        return subType;# |. h' o2 a* J* @, n0 ?$ x
    }3 A% m6 T3 P* p6 s
) V7 J- w# }2 ?1 _
    /// <summary>! b5 ^0 p+ U, e; t* |1 j
    /// Display System Information# L& G$ R  h# s7 j; y* t
    /// </summary>. Z# p% V4 F  G6 o9 F8 [( @7 Y
    /// <param name="uFPart">The UFPart to Query</param>3 z1 M7 j+ q- \" _8 s( b  A
    /// <param name="workPart">The Work Part to Query</param>
& k. I4 v; {6 Z1 b6 S    static void SystemInfo(UFPart uFPart, Part workPart): Z1 h0 L; W0 H& ?  H7 c/ C
    {
: F$ `9 \: A2 K1 E) s* U( }% i        try0 w6 [8 \# _# j/ g, {1 O0 \
        {
: L; S6 [6 ?$ R+ z5 D; [            SystemInfo sysInfo = default(SystemInfo);5 J$ e( V/ `3 s! ~, x0 I7 y
            theUfSession.UF.AskSystemInfo(out sysInfo);! W1 v7 X, }9 Y) s2 i6 s) f

1 f6 ~2 n3 A3 Q- ]' A' b            string partName = string.Empty;# B7 n6 y" @* T  ^0 H4 j8 Q$ F
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);0 G; e. i% Q' P1 w& _

* t1 P( I) Z$ J- r+ E            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();" ]+ h1 `! d( j8 x3 L3 a; i, z
            theSession.ListingWindow.WriteFullline("============================================================");
6 w! R7 W: D0 H5 m% i& k& T            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
  J9 `/ ?7 j% F: q            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
( c: G2 C1 s8 k) v! {+ Q            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
9 W: V/ i$ q% X. {" L, _            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
/ x5 }; M2 t+ g- o            theSession.ListingWindow.WriteFullline("============================================================\n\n");) m7 ]8 G6 ?! \+ q- ]
        }  L4 m, D7 N8 u  R6 ]/ U( u+ c
        catch (NXException nXException)1 [6 s( L! O: T
        {9 `: D9 I8 `- D# t# p5 b
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
& v" d. A& d1 m+ ~2 |; q# k0 L        }2 Z- ]6 A0 T. x8 N2 L" r8 _
    }8 [0 G4 G0 V- W7 ?% L, B0 Q3 O

$ k& n' A# I" A0 F! a7 n    /// <summary>7 x& d+ @- s$ `9 k3 J+ \$ w/ o7 {
    /// Unload the Current Image
* l( |/ `% F' B2 f( ~  ~# y    /// </summary>2 B$ K( V; d* ~
    /// <param name="arg">String Send by NX</param>: x1 M5 B0 \* e/ N$ Q, d4 m
    /// <returns>Unload Integer</returns>
' P3 {  S- v& v, u. `    public static int GetUnloadOption(string arg)
# w& b+ G  P/ K1 v9 Q    {
( ~, ^9 |- X* I5 `) j% n        /* Unloads the Image Immediately */
8 X3 n& K! S) J6 O        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
! m; o8 ?( c5 B8 \8 o8 p
/ o" K3 `/ p' V2 F3 E        /* Unloads the Image Explicitly, via an Unload Dialog */
, ]- c  ~& W' g0 m( `  c* J4 d7 |        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
7 D( N7 N9 ]# [: |, l. k) Y/ R% l9 N6 t
7 ]7 T0 X$ b2 D        /* Unloads the Image when the NX Session Terminates */
9 |# C9 ~1 i3 A* p. w6 ?        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);+ s! k' S4 U( h8 O
    }6 Y+ D+ z& u, z: d0 \5 i
}[/mw_shl_code]  o+ z0 G' P6 B6 E( 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二次开发专题模块培训报名开始啦

    我知道了