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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了" _: ]; }' b& ]( |; S
) S: L6 x; A) l' A% c5 ]7 x
[mw_shl_code=csharp,true]using System;7 \. F- O2 |" K5 ]" ^/ }
using NXOpen;, g0 I  w  B! K; E& q
using NXOpen.UF;7 C! J# w2 v, I: \0 s
using NXOpen.Utilities;9 r' K* t7 M+ [/ Q
using NXOpen.CAM;
* z6 f, R5 n5 |+ Q0 }5 I9 fusing NXOpen.Assemblies;2 g2 ]. ]9 P8 f. b

( F0 [0 N' E4 P( bstatic class GetSubTypeToOperation
( }0 y/ m2 e" Q9 z  u{' g) k- i0 c1 P) w6 T" E
    static Session theSession;) F8 x6 C/ E: u9 n$ x
    static UFSession theUfSession;$ [( L8 C& `4 L: ?% @) ~
    private static UI theUI;
  m& e. ~# @5 X6 O. F; \$ C  r( u! C4 r2 A" q2 y. W$ G; |& ?
    public static void Main()
; B/ c% Q4 ~& R7 A* D3 s    {- P3 x1 `7 y; @( S0 R9 G
        theSession = Session.GetSession();
! b2 d- Z" K) h- U0 C        theUfSession = UFSession.GetUFSession();: t- B5 X; P' |& S; C% S6 a
        Part workPart = theSession.Parts.Work;8 j3 Q3 t, S0 R
        theUI = UI.GetUI();$ c) _+ ]. v2 q; L1 @5 G2 y& a
& @. v- e( S* t  |1 O+ G* |- H
        if (workPart == null)! b0 M; t% O' }: r  m% }* d( T( z
        {/ k! \$ w4 I, v* a
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");8 V) ~3 F+ q2 I- B  d: X( x
            return;( A  W  f3 k( b$ y. f4 M
        }. a& E9 }+ q* J* v" D6 A/ {" N! i8 u5 V
7 v- |6 n6 e. F
        theSession.EnableRedo(false);9 u* G  t* p# G: G) ?

' j% k; Q* y& q+ J& o# n        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();+ w2 ]' G9 O( M, m9 A2 ~

% M- h+ U  f8 C  G5 G        SystemInfo(theUfSession.Part, workPart);) k5 d! i% D3 ]: S. s

0 C. W8 D) z+ B9 H6 t" f3 E        try
4 }2 ^( J: U; R( `% o3 J        {, d: q( v4 R' I/ T% p  i
            Tag[] operTag;
* l1 c  X9 b3 F4 r            Tag setupTag = Tag.Null;+ P' ~2 w6 W" t  t
- y2 c( \9 Q' H. ?0 T
            int countObject = 0;
' ^4 \! f8 r: F# M  }( q: l3 o8 l% l3 ?
            theUfSession.Cam.InitSession();1 A9 i: M$ D" {5 @. L) s
            theUfSession.Setup.AskSetup(out setupTag);
2 v- e8 x& [  t+ Z. ]- U
1 A; C' t+ E& Z8 J( A" o            if (setupTag == Tag.Null)/ \" i* z/ r- ?* t
            {
. |! C( l' l0 d                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
/ [  I8 S) H$ J6 D                return;
" @+ H! V5 E3 U; I" q0 S            }' J, w6 m1 I. D0 F# j# g/ p

0 j( ?# M; K. S+ S% L            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
- T8 h5 H- f2 A  d  \+ A6 \9 v: S7 V5 \: l" N4 T
            if (countObject == 0)
6 a; S# X% P# x, r- S1 r            {. Z# G5 _# V% E, k
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
1 n4 P1 i$ F2 W, q8 ~) C                return;
; f. ^4 T! M1 W# ~( |9 x            }
" [  z/ A' X0 z# H/ M2 W( m% e- L7 R) k- y
            for (int i = 0; i < countObject; i++)
( {' |. p( \+ U* F/ l            {4 I  P6 H7 c8 U# K6 M9 H2 v
                int type, subType;) Z4 a# e4 h2 o: e
# b7 Y  y5 m# y' x- C6 H
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
+ ?: @' H( e. _( r8 j
% V6 a0 M  }  v0 t. E                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
5 x8 }5 ?3 z# z
2 R. S/ i' v6 t- u  [& M7 T                if (type == UFConstants.UF_machining_operation_type)6 q6 I+ K0 Z6 g4 Q
                {
- v: p: o6 L' a                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));2 |' B) f* J3 u' X1 L

# N  M) v' T& [% G& j& |                    GetOperationSubType(operation);
* F  s  h# r2 M9 W6 v) l
0 U4 N; \! A, S7 C4 {4 g! s$ V: y                } /* if type */* K* ~2 @9 ?% [8 ]6 k# ~% C) W
            } /* for int i = 0 */% N& w( [. i0 T: k) x3 O- z! R8 ?
        }
  v0 k8 U/ ]9 _0 P. o6 a        caTCh (NXOpen.NXException ex)8 T) M7 d5 D) P2 A& W# f
        {$ t; x. E( t( p1 ?
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
9 f: x$ M2 O2 T3 b" |        }
& z7 H2 u" S8 t0 n& [1 `    }
) g  E7 T/ p" O8 @
. {+ n3 G; u) N& z9 u/ H( `
2 J/ U  g9 `* O+ H+ I4 t5 a    /// <summary>
0 O5 w# S' s: }$ ]8 B    /// Retrieve the Operation Subtype
' B8 j2 |' N: }7 V- B    /// </summary>
+ A) f0 H/ d% m4 h  }. Q# W    /// <param name="operation">The Operation to Query</param>8 ]$ T8 ^# d& A0 K1 G- b0 b2 r
    /// <returns>Return the Subtype Operation</returns>
% C4 H4 M+ M  W- _6 }    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
3 T3 ]/ w. x( Z6 `# t    {! u1 A; h. N1 ?, S- U, m
        if (operation == null) return -1;
. ^& r& N% H, T  u) |: L. C8 x6 a: `9 k+ Q8 y$ A5 t
        int type = 0;
% u% O1 D8 ]7 D( r1 C6 a# {        int subType = 0;9 N$ S* P) d4 u3 R4 D

. P( \- ?2 X6 g' o9 `4 K' z: d; K        try0 d8 y/ @( b% N3 T. s  s
        {; y( r" v3 W' G
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);; j5 P- J$ |8 U% i0 b
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
6 J$ x' e3 S3 A8 _/ J2 G# I/ a2 G$ j" a/ u: z5 ]
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
4 h, W! l4 G5 h  `            switch (subType)2 X* [/ H' e" F( C5 n
            {
0 o4 V5 }6 @) M; c2 J                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
0 [3 e2 d8 @  s5 L                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
7 V9 _; p7 s/ ]7 x  K5 S                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
# K' l! l  G  \                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */" G$ P( B# j/ T- r( ?: r
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */8 G6 O6 _! t7 i) u! ~* D
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
8 B/ C% o9 \  X/ }                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */0 g4 f: D7 ~; d7 j$ i  E
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */0 {7 H0 T+ G1 J# P
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
' |/ ]- U: B" D3 i) R* `% b                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */% j2 [6 T6 _) G% t( b
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */: g" Z4 e6 ?! f$ m% J
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
' W; P% f- h; u4 x  J. r& N                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */. q4 q7 E) }( B9 v$ h! R
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */2 J  m, Q9 |: G% N8 ]4 V
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */' p7 N& V$ p3 d- `" \2 K4 ]1 u& r
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */: W  g6 c( @) \: y1 X; r) |
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */+ S1 B# M9 H% A( R) j( ^
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
, A6 O6 c0 @- E) ~                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */. `- H' W; v) E; V" s# z: p
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */0 {* M/ ~. X0 {  I9 H; ]
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */% X/ V( U( C  `7 W0 E

6 N/ r2 B: j/ F                case UFConstants.UF_insp_tolerance_subtype:3 H1 Y2 U$ b$ k
                case UFConstants.UF_insp_path_subtype:" K1 J% U: c  z- N0 g+ f
                case UFConstants.UF_insp_output_subtype:
7 Y, p' p- V+ W                case UFConstants.UF_insp_misc_subtype:) t6 |7 e, a0 B, y0 _
                case UFConstants.UF_insp_align_subtype:
; l& h5 E+ I0 O                case UFConstants.UF_insp_sensor_subtype:8 U% b2 J( t- n3 J% L8 b+ a
                case UFConstants.UF_insp_construct_subtype:
! ^7 B( {' v8 {0 n                case UFConstants.UF_insp_bounding_feature_subtype:
% O4 L8 X4 m& Y. f- n3 o; u                case UFConstants.UF_insp_feature_subtype:" q3 o$ ^5 f- k6 n. \

6 M1 f! c- g9 J. u' K; d! d% h                case UFConstants.UF_mach_canned_cycle_subtype:
+ }3 g9 p& Q' f
2 s/ `/ c- u( z9 Z                case UFConstants.UF_mach_laser_teachmode_subtype:
- Z  f) m8 Y* o* {9 }( i3 E$ D7 x% |+ t7 L, i7 D
                case UFConstants.UF_mach_turn_roUGh_subtype:" j; q& i/ c6 f2 {4 M: p7 {
                case UFConstants.UF_mach_turn_finish_subtype:
( v8 y$ G, ^- d( m) L                case UFConstants.UF_mach_turn_teachmode_subtype:: h; M. w7 ]) l2 Z1 Z: f
                case UFConstants.UF_mach_turn_thread_subtype:
8 t' ?0 T# m( n1 a/ a. b4 i8 ]                case UFConstants.UF_mach_turn_cdrill_subtype:
% F, o) m2 g% x$ j                case UFConstants.UF_mach_turn_auxiliary_subtype:1 O2 K7 j% b) O& L& M
                case UFConstants.UF_mach_turn_probing_subtype:
. R! U, b3 M6 u' G7 B' y' n( w                case UFConstants.UF_mach_turn_tool_probing_subtype:3 l3 H9 l. y4 ?/ K) m( V
                case UFConstants.UF_mach_lathe_mc_subtype:) V2 ^) \0 B7 d: b2 G8 K, [
                case UFConstants.UF_mach_lathe_ud_subtype:
, @9 S# P4 N# \# ?" ~4 H1 h6 k7 X: H* W8 J
                case UFConstants.UF_mach_wedm_subtype:$ b  V1 v8 Q3 p4 G# N# Z( @- a% O
                case UFConstants.UF_mach_wedm_mc_subtype:  Y% M8 Q# s& e6 e" d2 M
                case UFConstants.UF_mach_wedm_ud_subtype:
$ y- h. V& E6 i" s5 o& s                case UFConstants.UF_mach_mass_edit_subtype:7 ~( C5 J' u( {! l! G5 [( x
                    break;
& V- E, R% p, Y# Z1 r% C
3 I' }0 b9 N, `8 s3 k+ ?# ]                default:" [$ p) J  ~8 l0 Z
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
) N1 p8 |7 S8 M6 D. i                    break;
: i2 H9 U9 ]6 j+ a            }3 t+ A4 }+ a. w4 E9 |  a( O
        }
+ C+ s% Z7 L' W0 ]' M5 v        catch (NXException nXException)) E0 S- m& ^  v' _/ ?/ P8 N
        {
/ P, M6 I2 a! M            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
9 E$ S8 M# Z+ q7 s7 Y- O. g            subType = -1;& t1 W% b/ c7 G/ Q
        }
- V. q; t  R& f+ C8 O6 `/ |- L: l& q0 F7 |, L) _2 k
        return subType;
6 c0 u' [3 W9 o8 A1 |$ [    }
, ?& j3 j9 t. ]4 Z, o: V. W
0 M# @1 Y! h6 u: U    /// <summary>( o& N8 O5 \! `5 Z9 U
    /// Display System Information+ ~" e; Q9 D8 @/ G5 c4 H
    /// </summary>% f: |) p) n, ^7 d' Z1 e
    /// <param name="uFPart">The UFPart to Query</param>/ G) m% h  `; D7 `' w
    /// <param name="workPart">The Work Part to Query</param>
& C: `6 h- ?7 Q0 a    static void SystemInfo(UFPart uFPart, Part workPart)% W( ]8 c8 O, D4 A
    {
: v2 `' o* `+ S) i* A        try0 k: ]1 I: s2 p" C( |+ z8 w
        {7 ^' `' \- z9 m1 V  _2 j
            SystemInfo sysInfo = default(SystemInfo);9 |  y* Q9 j! T$ W5 Y7 X
            theUfSession.UF.AskSystemInfo(out sysInfo);- u- m: b3 z  j2 m2 H7 f  W1 z
' j% c' O- k( y
            string partName = string.Empty;! _6 |/ [8 \# i  S
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);, [, B- C* h; A- X  ^/ b

1 P8 t+ n3 s/ p. \, X$ A2 e7 ]9 q            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();- h2 @: J$ Y' z: V& o
            theSession.ListingWindow.WriteFullline("============================================================");
0 I6 t* y& a" h, v9 U; ?            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());" ~' E" h: t& J- \  s
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());4 L* F, d! {  Y  a1 \
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
/ t' Q: r; M! L* g& n2 r8 M            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
' \2 {  \: ~% W/ R! w$ z, ?9 |/ n            theSession.ListingWindow.WriteFullline("============================================================\n\n");" n/ S3 q7 ^+ h, |. S5 ?
        }
. q) {: ~5 v3 g9 f( ]% r' l, M        catch (NXException nXException)9 Q! B. W6 a8 @- V: q4 w0 b
        {
( k- x2 v& w8 g- H* ]+ M4 n' ?6 t/ q            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());& }( `/ E3 h0 y/ W
        }
" y) n# \" @& r5 u    }9 w& \. k" N8 _/ w! q
, |% t; P8 f: t( l9 d/ H
    /// <summary>
$ Z( H/ l+ o4 z& |    /// Unload the Current Image7 m5 v5 V. h4 ~, L/ N/ V4 M) |/ s/ @
    /// </summary>$ |* V2 K) g$ X( ^: L- j# P- w
    /// <param name="arg">String Send by NX</param>
4 r7 \) I) U: U  D: d+ K- h    /// <returns>Unload Integer</returns>& \" s$ V; [; B" p5 g  H7 V
    public static int GetUnloadOption(string arg)/ u' ~# F" {' X( T1 U  u  k3 u# w
    {
- A1 h' S8 |( m        /* Unloads the Image Immediately */
/ ~: ?1 n, F& g' |1 [        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);" Y3 Q& Z, D5 o/ n
2 k. E1 u7 ~* ]& L
        /* Unloads the Image Explicitly, via an Unload Dialog */
+ m9 D9 V2 W  H3 a        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);, e  @& B! X: `. N+ \( R
; t. A) |4 j9 K1 h9 ?7 s/ _. _3 p# ]
        /* Unloads the Image when the NX Session Terminates */  E( g. i! v) ]  [' Y! a
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);) j$ \3 c3 J# h( E0 T2 z
    }+ n  @) M9 x9 A; r, l1 C, K4 F
}[/mw_shl_code]& D6 B5 w( j/ a& f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了