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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了) C. S- y0 E( W( ^4 o; V( w
0 G9 |, U+ C& W* J0 R3 c4 L* q8 w
[mw_shl_code=csharp,true]using System;
  O: t' M, [, x( k" W# H5 ousing NXOpen;
* _( H. @+ B3 G8 r, M) _9 _8 Iusing NXOpen.UF;
, |: @& L1 w. c+ a- Kusing NXOpen.Utilities;
' I5 R+ R3 L+ ]) f0 \, cusing NXOpen.CAM;
1 o- F% R, ~/ x# o4 ^5 q5 wusing NXOpen.Assemblies;  ?6 J& [" ]  k) u3 N( m) ?
7 z1 s( [9 j" _4 `3 Q: O
static class GetSubTypeToOperation
7 c' }; H( M- Z: O- u0 x{
) q% x/ Q, N8 _. V- Z0 M    static Session theSession;
8 H; o7 G+ @' v  s    static UFSession theUfSession;' I6 \: w0 C! C. \+ L. I
    private static UI theUI;
% `- b; n0 q8 ?! b* h, [& \- H8 {& w: ]4 x  ]0 H% v
    public static void Main()+ j' j) T' q; F$ z
    {
5 \7 V9 F. h# D3 N( I  r, J+ T        theSession = Session.GetSession();
( O- T) i/ f1 l+ }        theUfSession = UFSession.GetUFSession();
1 E: s& t! R' W  e/ ^  M2 P5 J        Part workPart = theSession.Parts.Work;! E3 ?( }' l. ]7 R! ^! e
        theUI = UI.GetUI();4 {! V/ A2 C0 [9 y5 H& W# I3 \

* v. g5 m- p0 g$ A6 S- R' l        if (workPart == null)
, C/ |3 q: G0 U3 X        {5 _4 L' r4 F! n' z  ^# W
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
/ ]! p; g9 t# _5 L            return;& I7 U6 }# f  j$ f& B7 N1 K+ a
        }
& \0 y7 n% ~  a7 m" A/ Y3 {
+ H+ v4 p  |2 p; Z        theSession.EnableRedo(false);
0 M2 y6 G( ]( g1 x7 z' C. Z( r- c4 J: }% j3 ?7 V3 R
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();7 g, s1 R6 z! h0 F# E" h' a

" \9 o; B+ R* I) W- q; U        SystemInfo(theUfSession.Part, workPart);
! r) t0 O+ b0 [; r, N7 {" L/ z/ b/ ^  Q0 `6 X& A
        try
2 q5 u: A+ r3 S" q* I  u* f8 X( Q        {1 U0 N; [1 E2 _+ v4 z- }  T; z' h
            Tag[] operTag;
8 T5 @+ J5 Y: {            Tag setupTag = Tag.Null;
& p% ^0 {* {( v: W1 I6 N  }& N
3 u5 B3 v1 [9 k8 u            int countObject = 0;
' u2 w* K1 T% i. J9 ~
: n5 L" T5 ?, R$ a! M$ J4 K; C- _            theUfSession.Cam.InitSession();
7 p1 w4 a" [& P2 X1 W# V# U            theUfSession.Setup.AskSetup(out setupTag);: M4 I6 Z+ d0 H7 h' ]6 n2 K

$ t& g" \6 W  w" u7 V            if (setupTag == Tag.Null)3 p8 u* q+ g4 F- e* H& B. k7 H
            {
! P, j- o# C' f: T2 [                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");# Y# ^; Y# t& y0 J4 t4 O' b' d
                return;
3 I- D* b; ]/ N, u$ P            }
1 B2 l2 U" i5 @( ?2 [# D4 z2 Q: d0 M
4 ~6 G9 G, u% n! F/ I% Y+ Z            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);7 ?) A' _' S2 W) V4 a: Q! G

2 {' [2 o8 E( H+ K& k# d2 X            if (countObject == 0)/ l: ^: D% \$ _* Z1 e. j
            {
! s+ L8 `% p$ J/ n$ M  ?                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
4 ~/ g5 N# x9 |/ j: }                return;
, }7 Z0 q; {6 k: }            }2 z) M3 p) O6 ]& _% x1 a
" }/ }0 h4 d# z9 a' c
            for (int i = 0; i < countObject; i++)  C9 T( F+ w2 H1 q( }& H
            {  b1 a- @7 h3 c5 j; `1 o
                int type, subType;* [( y4 H, s' I  ~% q( a

8 {/ J2 |  F, H4 n. r( b                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
) ~9 w( m' [  }5 y. k; k
1 g" Z  R% O4 c: U                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));2 k, c6 m: x( p0 r5 W4 z
1 Z. l3 t. i+ p0 j
                if (type == UFConstants.UF_machining_operation_type)0 r5 Q7 O( b6 m. N2 F" {3 B! c
                {
4 s# v$ r* I# u% s  N                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
$ z' h: D% M% B7 ?" e
6 z5 y# ?6 X' M- ]' b                    GetOperationSubType(operation);
: T2 A9 d( v( W7 `. B+ l* n2 u6 d2 v) h4 r5 F* E9 L
                } /* if type */; v7 ?: _/ i5 @$ W( [8 v8 Z
            } /* for int i = 0 */
( ~" I2 G9 W* {4 Y' r3 j' `        }
! e3 s& N/ B# O3 I3 ^4 C        caTCh (NXOpen.NXException ex)
- P+ Y3 K0 q+ E        {
7 `- F; `1 M: y, x2 q, |            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);: i+ ?: r. U4 r$ C! m5 p
        }
  y: [+ p1 w- V% T) g) j    }
3 c* K2 h$ h' |% {' F- \; z4 `
7 a" l1 {* H, I$ t* b0 U% s0 g$ c4 Q5 [; y6 z& w
    /// <summary>
8 n( j/ x. N, c; v  T8 T    /// Retrieve the Operation Subtype$ O; k5 p2 a1 n* e5 c) Z$ M
    /// </summary>+ Z) g' c7 \5 U# J8 J
    /// <param name="operation">The Operation to Query</param>3 v+ Y9 K6 z4 {7 p  ]
    /// <returns>Return the Subtype Operation</returns>( ^; J' i7 x& o! @, P5 y
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
. a3 A. h# N6 l5 A) B    {
& X. j& V( f. M. v        if (operation == null) return -1;. T% T. W% a4 Y. o; N( b; y% G# ^

  n  x2 S+ @! ~* O        int type = 0;
& [0 a% F8 L$ h* V        int subType = 0;
7 Z  F+ @! V. K& P
: D- W! f1 ?# u# H        try
5 j+ @/ Y* f7 e. y/ P; c7 Q- A        {) A3 F. n8 `+ g# D
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
& }0 U5 Y! m( ^, U            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
* w! l$ ]% \6 Z2 b
' G5 J6 F# v2 `            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/+ E% F- w/ P4 P. j" s0 o
            switch (subType)* t+ [: h  v3 W4 L1 [) M
            {
$ k- X8 z2 q- i' Y                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */! @- @7 [; c, j* F+ v1 F; P4 X
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
& I- ^* D0 L% k9 @                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */" k9 ^/ @! p, a7 A: I6 u+ Z
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
8 M8 q3 H1 X9 t: k7 ~                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */' }8 f8 Y) `9 C( e
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */) q$ Y0 y/ v0 b0 X- T4 ]
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
) D: ~/ F1 b5 R. @+ Y; n                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
  I+ {8 W3 K  J) j6 Z                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
/ L  f, o  j( A2 L* p) h3 M& A                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */" k: ~5 b/ ~1 ]3 G' V8 U
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */' \8 ~1 u. ~" o3 ~* {, K
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
2 D1 X+ L$ `3 ]3 I                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation *// d% s! b: R, r5 |( n
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
, J' W( W, H* o& {* w  K                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */0 p" B1 t5 K9 p$ l
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
/ ~1 @( J* F2 Z; R4 b# m2 \                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation *// k& R  k# w) {1 S& H. |6 K
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
' u7 z1 C! n) ^! u3 j                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */0 a( m7 q8 u& \% K. H6 N
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
/ O, J# \+ z- B  ]; m- t                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */8 \$ @0 b9 j; D  q& A8 c
6 h; R( F) m+ Y/ ?* f
                case UFConstants.UF_insp_tolerance_subtype:) r' h* L$ y$ i
                case UFConstants.UF_insp_path_subtype:
( v. X; j, h2 h( Y                case UFConstants.UF_insp_output_subtype:
& s, K. p9 d' q0 A& o                case UFConstants.UF_insp_misc_subtype:0 ~; \. N, K  J( g  R
                case UFConstants.UF_insp_align_subtype:8 F& F. U- o) |' F% S  d  s& j! {9 J$ b
                case UFConstants.UF_insp_sensor_subtype:
; |# J; I" z+ Q% r' G$ Z- ?6 K                case UFConstants.UF_insp_construct_subtype:3 I4 W- Y3 O( {# F  K" L
                case UFConstants.UF_insp_bounding_feature_subtype:8 F' _' Y3 E2 ~- W6 Y
                case UFConstants.UF_insp_feature_subtype:
( l4 j/ |. Z0 g6 b3 m# u9 E3 V# b% h3 ?; h
                case UFConstants.UF_mach_canned_cycle_subtype:2 {" N  N9 y. j( `: O, P

1 T+ A; ?" E% [8 n2 n! ^4 ?' k                case UFConstants.UF_mach_laser_teachmode_subtype:
# f6 j( l2 L% |4 I& @8 @# h( k1 c: _/ b, \) U+ M# N
                case UFConstants.UF_mach_turn_roUGh_subtype:0 Z% |. V& ]7 I2 G2 j2 t' ?
                case UFConstants.UF_mach_turn_finish_subtype:' l# l9 w6 x! s  z+ D* M  y
                case UFConstants.UF_mach_turn_teachmode_subtype:! n5 ?) i- q1 q6 j* o0 E* y+ w
                case UFConstants.UF_mach_turn_thread_subtype:
9 N- s% a( j$ y' Y$ f                case UFConstants.UF_mach_turn_cdrill_subtype:
. }) c1 w) U* r2 ?                case UFConstants.UF_mach_turn_auxiliary_subtype:
) d8 D2 W1 Z9 b" t* C2 @1 I                case UFConstants.UF_mach_turn_probing_subtype:
% s3 ]. U+ m, L* e( a" r* Y0 h0 d                case UFConstants.UF_mach_turn_tool_probing_subtype:
. D  e% g  l; l! N                case UFConstants.UF_mach_lathe_mc_subtype:
9 W3 a0 q# v. q" I                case UFConstants.UF_mach_lathe_ud_subtype:
9 C; N1 ]/ W, Y+ v1 E2 L- k2 G
/ x: o4 f" z2 E0 V8 F/ _                case UFConstants.UF_mach_wedm_subtype:
. n: V! W2 s: ?6 v3 {: C                case UFConstants.UF_mach_wedm_mc_subtype:
" x$ e- Q4 @5 j- P                case UFConstants.UF_mach_wedm_ud_subtype:! [2 j, G2 h/ ^5 s5 z
                case UFConstants.UF_mach_mass_edit_subtype:
; v1 s) c- H0 e                    break;
. V( B2 u+ T8 ]
6 Y- J2 M/ ^# ^- T$ M5 |+ n                default:
. F0 C$ s9 o9 j. O                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");; k+ Z& S/ _  ]$ m& N, C
                    break;( d! \  v5 ?1 u" h
            }
3 \/ f' y. J; d! [5 F        }
' C" h" Q8 M' G/ d: r" L        catch (NXException nXException)
& c2 h! y& j; R+ J! j        {3 r0 \3 \' X( r  [0 k7 |
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());+ ~" l% d4 i# g4 t% ~
            subType = -1;1 K4 C) e7 N: C( f) k  u5 Q! B' _
        }
" F# K* d6 o! t9 t. H1 `- `# k/ b: v! ]( A
        return subType;
/ t, u* X8 I2 l* z    }* b7 ?4 E! Z8 A5 Q

& z/ j% Z; P1 x' M! b" l    /// <summary>
- t2 W5 C- H# a1 ]! o    /// Display System Information( M# d- d) {/ T9 L/ Z+ W
    /// </summary>
" x; q6 \7 E: |+ ~$ E1 E    /// <param name="uFPart">The UFPart to Query</param>& x2 ], V% D( x" W- {4 o( s
    /// <param name="workPart">The Work Part to Query</param>
$ [. k8 ?' T( r$ Z4 p    static void SystemInfo(UFPart uFPart, Part workPart)
* W1 H, G0 Z7 r, U    {
+ d3 p1 ^" K# h/ {        try
, O* M) R* w# F$ B1 m1 ^        {& b5 `7 X2 Y* d
            SystemInfo sysInfo = default(SystemInfo);
/ P# f* Y, `1 \            theUfSession.UF.AskSystemInfo(out sysInfo);
6 P& P  r7 r* P/ M' g* b9 I4 |& H2 F  ?3 v9 O# i7 S
            string partName = string.Empty;) V9 [4 d0 F* ]* }
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
$ B2 o2 [0 }  D6 Q
, L" V0 J+ k$ |7 v4 w4 Q            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();2 X3 L9 [" @- t4 m  t& V0 E
            theSession.ListingWindow.WriteFullline("============================================================");# ^$ O1 Z0 r# c5 X
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());. v3 t* w- M0 Z) ?  W4 g
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());, U* p5 C% m$ A+ m  e# }
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);/ o! |7 V' |# \' N
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());- u3 U8 O3 j% A) H* P" p  A: v
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
4 s' k3 _% b/ o, F* Q0 ?* s        }) J2 r2 @# W0 j0 s$ ?- M! C/ I
        catch (NXException nXException)
: n" t2 m  q, C8 u        {
, o9 D6 i, T1 c) L5 |            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
3 I# z" h  ~/ a8 S- E- K        }' i- ?8 d/ @/ b  Z2 J+ E
    }0 r- A2 G2 p( Q. {1 Y2 ~2 d1 Q

5 v% N4 N. M. j    /// <summary>8 F) i3 _- `' v' b- h
    /// Unload the Current Image
. b6 x( D- ]9 r  D0 U- k    /// </summary>8 P, o* J  b! O: ^2 w$ b( d2 y
    /// <param name="arg">String Send by NX</param>* `6 z; N0 L, J1 z$ P  j+ X
    /// <returns>Unload Integer</returns>
  h9 g/ e% i3 z$ h* ~7 a    public static int GetUnloadOption(string arg)6 Q, T8 ^: b; X3 _6 j, G
    {4 |3 Q6 E+ x8 s. R/ P% ?  I
        /* Unloads the Image Immediately */
8 l! l1 \6 q" o: M6 ~# u8 X& o0 [1 n        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);; W# D5 P3 q9 i2 H$ L* {
9 M7 h7 I; I& Q* C' r; o  l0 [
        /* Unloads the Image Explicitly, via an Unload Dialog */1 L/ ]. ?' F& j0 \
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
; m: e; Q  Y; B. C3 s/ n/ s  m
. w, s) i- O7 l1 F' [) [8 ^# A        /* Unloads the Image when the NX Session Terminates */4 c' P( E' j% {0 _% o2 Y
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);8 O) ?7 F: u" M& n$ \, W# [3 C1 ]
    }2 B0 A9 c# r; h* t8 i+ @% T% m
}[/mw_shl_code]
( m5 g' T2 v+ f8 [6 x: A2 H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了