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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
; ^  O7 X0 {% B6 b$ j3 z
* S# q% O: I# u[mw_shl_code=csharp,true]using System;  B3 J1 m" L& F$ d2 P
using NXOpen;$ u# m: y4 Y$ N7 o# |. g
using NXOpen.UF;5 |0 x2 L4 Y) H
using NXOpen.Utilities;3 |0 K5 O' S5 d: H6 s+ v
using NXOpen.CAM;& s: V9 R6 ^$ F) \' M. a
using NXOpen.Assemblies;
$ z; \6 A1 _7 \& N; Q: P. E/ y8 _( Q/ e: D$ z
static class GetSubTypeToOperation/ }) x# H* [0 c( x1 u4 |1 l" n
{
5 _5 X, X8 S- u. O% n    static Session theSession;
2 v- O; X6 I6 \5 z    static UFSession theUfSession;
7 P) ?! ?; U& V* P1 |* k+ A    private static UI theUI;" V; L- ?6 E- @3 J' P

/ O; ^7 i- n8 c! A- e  }+ l    public static void Main()5 p. M" M: w) {8 w
    {
( T2 H2 y) X6 G, b        theSession = Session.GetSession();
: Q; |/ E3 M% l2 ^        theUfSession = UFSession.GetUFSession();& M3 h% e& j3 S& M: |  W
        Part workPart = theSession.Parts.Work;
1 P! b4 n  u+ _. c; T+ R' ^        theUI = UI.GetUI();
5 R5 y: F" R" ?8 r% p- N; e" f2 _6 Y) a: y2 {  q$ T
        if (workPart == null)) B: v: v# ^$ x0 X3 h7 w, N
        {8 U3 a$ H: z5 A3 R8 k
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
! f$ [0 B+ a- r, {$ p4 \; C9 h            return;
. M7 k' }- G- K0 @8 D4 a        }) u1 t. T  X/ K) [' G
0 m. B% n/ ]* i" C) L
        theSession.EnableRedo(false);
7 ~; y9 q  [: f8 \
7 L4 C' ?1 P& z( n( i/ s        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();  F! P, H% y4 S, T- ?

+ F  W; ?$ z  m- G+ ]        SystemInfo(theUfSession.Part, workPart);
% F  d& x% u% {/ n4 `# {5 q/ h/ }* t6 e: W6 a
        try. P1 n) p2 Q# l! d6 C
        {
! _& ]- w" g7 W            Tag[] operTag;
1 J: h: Y2 {  x& w1 q4 m0 h            Tag setupTag = Tag.Null;" B% _( q. E6 R& R

4 l4 i6 U. v# @2 L/ K0 ]            int countObject = 0;
1 s9 H0 X7 y' P" {, u0 C
* z5 N) G5 _/ Y1 @            theUfSession.Cam.InitSession();4 y9 L) ~+ h. q! z- y# |
            theUfSession.Setup.AskSetup(out setupTag);
7 S& V/ j3 ]+ M1 X
" o% L: X+ r7 K* P. [6 V: j' W            if (setupTag == Tag.Null)
1 Q) H6 L! ]; w( ?7 X) k3 s# Z            {7 W; F6 H, l( @/ l  [: V
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");- o% I2 e6 H  V7 o  W5 F2 ?" _
                return;
8 @9 b! V+ Z- [; v2 F% ~. `            }
( p5 {0 I2 W, z" y0 Y/ o* I
4 A- d0 |4 ]9 R            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);8 g3 `1 T& s. {3 ?, o6 `
' n9 }4 j2 ^$ }, R% G! Z7 A+ Q
            if (countObject == 0)
" I! ~9 {9 b: q4 C2 Q" a5 [  y            {
5 Y5 @4 ~1 y0 b7 {% L0 E- ?                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
" x) Y% w. K4 j; }. o. h- S( w& P1 e5 c                return;
* w4 L8 T' y$ [( h+ J/ \            }2 d8 d2 s$ S& j8 y

. {0 p5 s% V/ r. D5 |0 u            for (int i = 0; i < countObject; i++)0 A! M# L8 C" k$ y: m6 F( G& n
            {/ J2 e7 ~6 |5 W% N8 j0 X
                int type, subType;! d4 w6 @  R  b/ a: g) d
' h, s5 ^/ I) G+ _- I) `
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);" q" M8 P+ T8 F7 E3 W; G3 d, W6 c
5 F9 c' b/ D: t5 K
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
. I( ^4 M9 a6 J" h8 ~& w7 n& k6 v* R; Z! g; F  \
                if (type == UFConstants.UF_machining_operation_type)7 `0 V$ F8 p) n
                {' r9 W2 n' ~- a( O5 ]
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));/ ~5 X+ O, a: `0 R) @
% n2 e$ r$ ]2 p, w
                    GetOperationSubType(operation);; l: |* I9 {) O% y( ?: S

6 _1 q: Q  o9 o3 N                } /* if type */
5 O. o, ^& W% n) T9 e2 |  L1 a            } /* for int i = 0 */2 d4 H) ?# Y0 L- x
        }
& g( b2 S3 ~0 _  t  H        caTCh (NXOpen.NXException ex)
: ~9 o$ @% J( @0 M5 F- t        {
: z$ H1 A/ {7 M7 w9 C7 s7 \            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
$ g+ p  l# y% q& J+ N. y, @        }8 V  j4 Y  R: I  O! j3 i
    }3 f6 t3 M  {, t: y4 G. x

9 j% p2 Q/ X7 n# i, S; r# Q4 Q9 h* t0 ^
    /// <summary># }$ g3 y* W& l4 f7 w6 \
    /// Retrieve the Operation Subtype
9 l* H4 G3 {' i    /// </summary>+ h/ e) n+ D( O: Y. @+ i
    /// <param name="operation">The Operation to Query</param>% C4 M' v% I3 ~
    /// <returns>Return the Subtype Operation</returns>
  B3 S$ ^" a- \* Q; t3 Y; t- Z    public static int GetOperationSubType(NXOpen.CAM.Operation operation)) u+ B  W" i2 I* Y6 e3 E  Y
    {7 o# a% i: J' A8 `) q5 S$ c$ e
        if (operation == null) return -1;' S1 ^0 D9 I9 ~8 [( G

; i0 T$ |7 \$ `# Y" _$ o        int type = 0;. E% W. g( x. L. Y/ J3 }
        int subType = 0;
) f7 q- [5 b; L. ]. O
; L$ p1 j& l8 p1 }4 Z: G8 @        try/ _4 X' g# z9 a  G
        {
4 M  A* G) |- Y4 ^. l- X            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
$ g8 K7 c; |, \1 \: o  h            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());. b, O: I% V$ x% d  h0 B

" I$ z, |5 y0 f" y            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
4 j; Z: O( f* k- w            switch (subType)/ X: m+ Q& e: r4 b( ?& o
            {
1 G7 j- V: N) c9 z3 j2 \7 f9 x                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
, y8 v8 U: i9 @, n* l  o) i                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
' l- b0 B5 t; E                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */' j: l8 N! t/ f" c
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */* U, E) m" J7 L/ X# i3 u* \
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */) D' D. A" M/ c0 u! N
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
, p! d2 n( k  Z. X+ H% N                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
0 N( h5 U) X! E: |( l                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */8 J& _% _2 [2 T! k) J
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
' X4 }# |* h. X$ }: {' e+ q                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
7 t# b/ b! G" \; E3 a3 I9 ?                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
8 d* u" z& [5 z9 A2 n& p& ?                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
- U9 o  c9 q. Y" b) c; p                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
- [9 Z' x2 ]& y1 V                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
8 l7 f) Q3 [. t3 r3 }                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */( V, A, O: I7 ~
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
/ Y& X- p# m5 y; z0 N, h- J                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
% ^. {$ [( ~/ m9 X! u9 u/ o                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
) i+ q. E% }& R& @8 m5 L' Y- J3 R                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */5 M* x1 Q* O% m7 E
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
- @3 L8 C4 U! u0 S# U                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
5 z9 v4 K9 ]4 ^6 z5 _& a* X1 s$ Y
5 N! o+ R; ^( Q) p                case UFConstants.UF_insp_tolerance_subtype:+ J$ k& U7 M+ ^1 D
                case UFConstants.UF_insp_path_subtype:
1 U( t& [. L; A) p+ u7 E9 v                case UFConstants.UF_insp_output_subtype:# |* w- c% s9 b; G" h' S
                case UFConstants.UF_insp_misc_subtype:
$ O1 b8 {* y$ b- m% V5 l( l* ~                case UFConstants.UF_insp_align_subtype:
( H9 y* K4 o3 R, k8 f$ ]                case UFConstants.UF_insp_sensor_subtype:
" U0 b( S4 V4 ?: h" |                case UFConstants.UF_insp_construct_subtype:7 F' e" L! ?/ U
                case UFConstants.UF_insp_bounding_feature_subtype:
  u0 Z3 G) q+ V+ c                case UFConstants.UF_insp_feature_subtype:
6 F! ~; s% c0 L  U9 U5 e! b0 n; q/ p
                case UFConstants.UF_mach_canned_cycle_subtype:
- \4 w* a# {$ D4 r; x0 c0 @& [4 O' ]' H" q
                case UFConstants.UF_mach_laser_teachmode_subtype:
, ^7 l1 j$ p+ B$ @  O& ^# }3 c2 V+ ?  \2 s( P8 K# y
                case UFConstants.UF_mach_turn_roUGh_subtype:5 q; u$ j5 @! Y* _2 O8 ?
                case UFConstants.UF_mach_turn_finish_subtype:
6 C" M- U+ Y4 L; A. N                case UFConstants.UF_mach_turn_teachmode_subtype:
( |% w; d7 S2 H1 K                case UFConstants.UF_mach_turn_thread_subtype:
8 E+ P3 U6 E) N6 |                case UFConstants.UF_mach_turn_cdrill_subtype:
8 [; O. u" d! ~+ [4 [                case UFConstants.UF_mach_turn_auxiliary_subtype:
0 z3 D' j' D  W; D& x                case UFConstants.UF_mach_turn_probing_subtype:1 G, H! @# m6 R' @' B  A
                case UFConstants.UF_mach_turn_tool_probing_subtype:' |0 N( t3 B( T$ |1 [
                case UFConstants.UF_mach_lathe_mc_subtype:, Y  \3 I: n% q( E
                case UFConstants.UF_mach_lathe_ud_subtype:
9 Y& z' i/ A5 s
" i/ p" v3 l+ d/ N0 w                case UFConstants.UF_mach_wedm_subtype:+ L, y$ V' B6 n% U, }( W& V
                case UFConstants.UF_mach_wedm_mc_subtype:
! Z* Y* O6 w9 O! d. H4 l                case UFConstants.UF_mach_wedm_ud_subtype:) M- ^9 u- I4 Q% M' x
                case UFConstants.UF_mach_mass_edit_subtype:) }2 d# H/ B7 z4 t' J4 K7 p8 B) C
                    break;
3 H  d/ w: z. f6 H- y# i0 z$ A6 b4 |; Q( x" T1 w* P
                default:$ i1 P, a. v% @, ]1 u. B4 t
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
# i) }3 U+ L) ^  M( l: v" v                    break;
$ X" Q# Y8 J+ J6 S' D6 j* n            }* ~* j9 N# H! C" x* |' j! L8 ?
        }0 }8 |# E' C. W9 M
        catch (NXException nXException)9 C, O! u( N& @
        {
8 K8 F" l1 G. Z6 }: |            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
, F" K% B# P% S; h' T$ `            subType = -1;* R) U9 Z, a- \5 d) F; r5 }, b
        }6 B3 D6 q' u! @5 O. [: M

* j- M& U2 Q! ~8 m" ^4 A+ f4 k& E        return subType;
: |. f6 p& b' c, }- Y+ ]4 H    }
7 c( i6 _$ e  }* ^. C
4 s% z9 t4 D* c5 C+ _    /// <summary>9 f3 O, f4 T# p/ W: a: b. I1 j
    /// Display System Information/ L' M8 K4 V  d9 |% r0 C
    /// </summary>
, c7 Z/ F: K+ p$ l8 j  T' F    /// <param name="uFPart">The UFPart to Query</param>. s' V5 Q3 y- N7 `& @% j
    /// <param name="workPart">The Work Part to Query</param>7 x0 {( N/ }0 Y. h! W7 H$ [! G! f
    static void SystemInfo(UFPart uFPart, Part workPart)( k: B$ d( P+ O% B
    {4 W+ W9 D* y: V# Z: A3 }& f
        try: s! b! C8 @* |- Q" Q: Z
        {3 t) D! Q9 a. b: x
            SystemInfo sysInfo = default(SystemInfo);
$ w% d) e" h/ L3 O3 G: ^! d4 {9 n- Q6 [            theUfSession.UF.AskSystemInfo(out sysInfo);
. K- W1 K0 J3 S: J6 @6 j. V/ a
9 A  n' Q& t" i: L            string partName = string.Empty;8 s1 s; Z, E9 {( a) c1 R
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);4 ]" ^" T& ?  Z& ]  i: i

7 @0 ~6 c' P5 H& O5 r. b  x+ h            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
7 _* ^0 a# m7 K+ M2 \/ [            theSession.ListingWindow.WriteFullline("============================================================");2 v2 l2 B3 G' {5 Z" f4 k# O8 t9 q
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
+ a' d! L, C( L  f9 G2 W5 F            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
( V& n, P& P: N7 v/ [' g            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
5 A* W. z. ]- K% z            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());" o3 [4 X: k8 O1 D; A5 H
            theSession.ListingWindow.WriteFullline("============================================================\n\n");4 S( `2 M/ C0 l
        }
4 n# O3 z" b" r2 S        catch (NXException nXException)
( w! ^  z( B7 G$ T) P0 I) H        {
$ b! U$ P" q) D            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
6 G. t( B# |" ^! Q* z        }
' a9 \2 N% V2 B7 c" z0 }' z    }/ Z9 m) ?/ s. ^" A* Y( G
1 W; k# Q" x6 ^& A
    /// <summary>
: O5 x0 b! ~/ a( z2 ?    /// Unload the Current Image
! ^1 Q0 y' _2 y# `    /// </summary>
3 U; S% \% n1 R% z* }    /// <param name="arg">String Send by NX</param>
. `0 f6 v/ w* f    /// <returns>Unload Integer</returns>
+ S8 T% ~  v5 |; \2 t7 R    public static int GetUnloadOption(string arg)
  H/ O8 I* g( s- }7 h    {9 x+ p- k) g4 `& `( Z' w& `# j( Y& M4 Y
        /* Unloads the Image Immediately */* L4 R- V( }: F( j
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);$ P7 }6 O8 K4 C

7 ]5 Q! u- }& f6 W+ I        /* Unloads the Image Explicitly, via an Unload Dialog */: Z4 p( j4 N/ M' K4 {9 g, f
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);) {3 I2 @% Y- b+ H( N% W' B/ f

: K. r" z' V, \* B8 y( M* t        /* Unloads the Image when the NX Session Terminates */
8 P4 e# B7 W9 m* B) W) `1 D& m        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);, I. @5 [: \' N  ~0 p
    }0 m" K  N, K$ R: l9 Z
}[/mw_shl_code]
6 N6 K# H; P1 ]+ z) }4 k
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了