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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了, O3 w8 p, V8 V4 d; F
- N. @3 Z7 p6 {  G5 ~5 w
[mw_shl_code=csharp,true]using System;1 p5 N0 Z% p3 Q0 ?9 S
using NXOpen;
/ ?' a% U- A! }7 A1 ]9 Y  X6 Wusing NXOpen.UF;
: T- ?+ o, G- A2 X- m* j+ Nusing NXOpen.Utilities;
6 T/ w+ J- ^7 E1 r* d; Ousing NXOpen.CAM;
" }8 Q% D1 @* \/ j2 ?) Pusing NXOpen.Assemblies;
- S2 {- c: G/ |0 ?4 W& R
% q% h# V% z0 }/ z" rstatic class GetSubTypeToOperation
4 z  N# ?* M( J5 h+ [9 E{
7 C6 x- L* W* J6 t( e! {    static Session theSession;
% g4 {* d2 G- A( G    static UFSession theUfSession;
6 r0 Q+ p  a1 g% t8 `& y    private static UI theUI;+ O# F1 h+ i( [" a. p
) b7 s! t) D' d
    public static void Main()
* M: c8 [6 g4 a) N% T    {
) A1 b! Z1 i* {! D* a        theSession = Session.GetSession();
; |. @4 }  R; n7 \$ l% g+ H        theUfSession = UFSession.GetUFSession();
8 h) v' Z/ Q% ^8 d7 z$ A5 y        Part workPart = theSession.Parts.Work;
6 I) h( y+ J9 o; k0 O+ i) h        theUI = UI.GetUI();3 B7 f  h4 E3 o) {) S& V4 s  t

; i* j- \0 x. e        if (workPart == null); r& j( A8 a5 P- P/ f  R6 T
        {) r/ T/ O. u9 R; k- ?
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");8 E7 E6 H* x: l) N
            return;9 l6 A  M; [' D2 _0 z9 P
        }4 I/ |! A. s+ i: v8 ?# m

, `) s' ]0 E; [8 d        theSession.EnableRedo(false);8 z1 L( X; S# z) h6 ]5 _/ t; _# G+ g0 l* L
. i* k) b9 ^! a3 H# g" V4 M
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();! W! P2 N1 m' c5 q

& j3 ~0 h/ @7 B& f0 @        SystemInfo(theUfSession.Part, workPart);
9 Z! m. Y0 o( c& z+ a* e3 m9 ^! R
! v0 L& y  f) ^" s        try
0 B. d- {; J% L6 D        {& z  ]5 ?# l! G3 D6 x6 }
            Tag[] operTag;3 i8 D' x" G* Y# U* d! a
            Tag setupTag = Tag.Null;
' O6 D. O/ i) [
- I+ o' y0 I, N: p            int countObject = 0;- E- H" m7 q& e) A0 K+ Y( q, L( `

3 c+ E' c% D( z! F. l8 |, d- m            theUfSession.Cam.InitSession();) H6 [" ^# l: u. y! i, I
            theUfSession.Setup.AskSetup(out setupTag);" D" v; ]- s5 y* @- H+ z
/ @+ e! j, @/ J5 {
            if (setupTag == Tag.Null)5 p) j  {' Z/ B' Y, J. Y( w
            {  n0 _$ p* ?0 o! i
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
, n2 }, k+ K3 T5 m5 `4 ^+ o                return;5 _+ T8 F8 S/ ^$ {6 d
            }
  x& j0 Y( o( l0 }# T, W4 O* g
# s" f$ O5 F( d3 Z            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);" s% Q1 \9 x$ W3 q/ b3 O6 p. y4 j* U
  U$ C  n5 Q% M; {2 _3 X5 C6 P9 X
            if (countObject == 0)
6 G  _+ b% q- m! n, E9 x. o            {
$ s" X/ L% y0 ~$ B1 x& F& F                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");- y# ^, j8 S. g  y7 r2 [7 S) c) V
                return;
' u' ~" R* M5 Z# T" S            }
; C- R# m& E. S9 t: K) b* I0 K6 _  r& P& D# ~; j9 H
            for (int i = 0; i < countObject; i++)4 X: @* f9 _% r3 H1 z& z! |
            {5 w+ p' x' L7 }4 {& B
                int type, subType;
0 C  u$ I+ @  n3 i, G8 a  ^" h
# W0 p# x; P1 ?/ Z+ U! P                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
0 U' q% V2 t3 ?' z
' g( E$ D! c$ d                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
1 |1 g( ?+ t4 m( A0 }) {1 k; a4 B# F
& e- h! C0 k+ R3 [                if (type == UFConstants.UF_machining_operation_type)
: L5 }8 H1 c; ?% ?1 r                {
  t" d* w. `1 U: C7 {                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
# H  j! v0 E: A- K* K% V# m
9 h1 L+ n; }' o1 A                    GetOperationSubType(operation);' _, Q" p$ }6 M; F" w6 @4 Q
9 t# u7 {  a* c3 }# U# G+ s; V4 x
                } /* if type */
! `# j; D3 P8 O+ M/ C7 h            } /* for int i = 0 */8 m7 x" m4 l0 {/ }' w/ O, u* {* @
        }, w$ w4 p; E9 f8 B8 X
        caTCh (NXOpen.NXException ex)1 j. F# ?  `( R& j% p2 M0 e3 Y( x/ a4 J1 s
        {( I5 ?& m# Q+ Q9 [; g
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);# r4 X: P1 z& K6 i7 m0 N% {& ?5 a9 V
        }
+ q. Q1 G& u. s$ E$ t, }0 C; [    }  M9 P" {& b2 {8 }, C1 w! ]5 g
+ h# x9 K5 n' y# f) r
) p1 V( @6 W# K: [; f
    /// <summary>* g1 M4 F3 T2 d. i2 p
    /// Retrieve the Operation Subtype
- B! c8 A0 G( N7 Q2 @  o5 R    /// </summary>3 [& R' c0 q' Q  J
    /// <param name="operation">The Operation to Query</param>
4 C* Z. x+ Z/ W# [    /// <returns>Return the Subtype Operation</returns>
  @" ~( R0 x8 D    public static int GetOperationSubType(NXOpen.CAM.Operation operation)7 m2 |$ {9 }  J/ T/ l5 {0 Z
    {
8 A& `/ X1 |. ?& V, I& {) ]: j        if (operation == null) return -1;' m  b  U" w$ T$ V" U- {4 Z

, p; f9 t: w- m        int type = 0;; A5 C! E6 z' }2 {* _
        int subType = 0;4 V1 e7 U9 a' p1 b$ V- n' w

, E/ {" }. y: X        try
3 |: W& P( l- f! p/ m        {" r, i5 u# y3 e1 {- o- g
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
- S5 j5 i2 m& U, f            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
9 @/ [) ]2 c1 w  u
  N6 u6 Z$ [/ R" c$ p: c) z            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
4 d) f0 E7 A6 |            switch (subType)
$ P* P8 o) C6 ?) {' ?9 r5 H" q) d            {$ o( D/ H. Y; r" a% r2 U
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
, h8 I6 f* A. P- d                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */& @, ^: a) l+ w" v& W: e
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */& c1 L$ G7 E' j. @+ b7 `& R' L
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
' h) h% z: o& {# Y% q                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */% J/ {7 l2 ?( f6 D. z# M
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */7 l8 {1 o. [1 O, n/ @1 {
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */7 O+ N. l$ q6 t" O4 C) d
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
  p! b9 A9 H' o* p8 q& z                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
# Z! p% d. D  h1 o) |3 h                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
5 y7 T/ w( e- K. c                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
) P6 q/ Y) a, K+ L2 k8 q) R                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */9 P0 X  E+ J4 C0 a) {3 {; ~
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */& ?2 ]2 @, c( {- ~. ~3 H
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */. N7 r- q4 @2 k1 a& l3 h
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */& p- |' m3 |9 @8 M- z2 N/ a$ N1 }& ?
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */7 W( V+ I; W! Q& C1 |1 c3 G
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */2 U# s4 f2 S( W- t, Z, o/ _
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
0 ~6 \: F; w' {0 f* M                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
: c) C3 h- l/ [* x: G  {0 I) w                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */9 t$ Y5 ~7 G* m* x8 c" Z
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
4 Q/ [& {  l' D  T* Z
& Z7 a' R9 l# T                case UFConstants.UF_insp_tolerance_subtype:% V+ J- K9 Q. v* Y+ k
                case UFConstants.UF_insp_path_subtype:
& k: D1 M# `9 f  P. Y/ h* h+ Q                case UFConstants.UF_insp_output_subtype:2 D" S/ O$ t# _% ?# E; b
                case UFConstants.UF_insp_misc_subtype:
$ }9 z1 k. A9 o$ G8 h- A/ T                case UFConstants.UF_insp_align_subtype:1 V& P1 N& [/ j0 V' O2 L, O: K
                case UFConstants.UF_insp_sensor_subtype:
: ]- Q$ y/ \6 y4 x+ t, B                case UFConstants.UF_insp_construct_subtype:6 W. Y( y' I0 ~. A* A5 D) f
                case UFConstants.UF_insp_bounding_feature_subtype:5 z& c% B- \& A6 E( ~
                case UFConstants.UF_insp_feature_subtype:
( U+ {6 ~8 e& `/ \( _; a7 M
8 I$ i( ~+ \4 Y8 T9 J: I/ t/ \                case UFConstants.UF_mach_canned_cycle_subtype:8 ^9 z/ ?" N8 M' X' ~3 {1 A2 H) b
9 E& }0 H0 m7 ^1 z! e; Z
                case UFConstants.UF_mach_laser_teachmode_subtype:
5 |+ c" ~7 i1 V& f6 o! P1 Z0 E+ H* C+ |; ?; e! M% w  N6 i; x0 E
                case UFConstants.UF_mach_turn_roUGh_subtype:" |& F" B- _4 g" y6 _1 l
                case UFConstants.UF_mach_turn_finish_subtype:2 x: R! t: S$ a" k4 V$ O! C: J
                case UFConstants.UF_mach_turn_teachmode_subtype:' g& [- ]# P9 J. v, g5 ^
                case UFConstants.UF_mach_turn_thread_subtype:( i! u6 n! w8 r, K* x: v5 n" O
                case UFConstants.UF_mach_turn_cdrill_subtype:
* A+ X( u6 P! N7 D% s/ n: C# t                case UFConstants.UF_mach_turn_auxiliary_subtype:( }/ ^9 H, E7 b+ @& Y1 j) p
                case UFConstants.UF_mach_turn_probing_subtype:3 E% b# T. b: C. U; ^
                case UFConstants.UF_mach_turn_tool_probing_subtype:& V9 l% Y, o" y$ I
                case UFConstants.UF_mach_lathe_mc_subtype:
' b0 X8 R% C5 @2 i0 U                case UFConstants.UF_mach_lathe_ud_subtype:- |3 h" S. a+ [% C

* R( }0 G5 @2 `                case UFConstants.UF_mach_wedm_subtype:) P; q% V- C( ~3 Y
                case UFConstants.UF_mach_wedm_mc_subtype:- K. c" [, \2 |" I# A
                case UFConstants.UF_mach_wedm_ud_subtype:. y  `, c4 U1 l& c6 \
                case UFConstants.UF_mach_mass_edit_subtype:8 [! y+ w2 w$ _  @# l# C
                    break;% f9 D6 s: ]5 T( Q1 o) c7 y
9 ]8 f( z, p' J( g
                default:
7 C; c* F+ L/ S* e5 O                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
1 w* d6 Y$ u+ U% J7 U                    break;
- O2 J. D& Y  q- i            }
. O, s% B2 G6 A3 F        }
2 ^. R! i6 o% @& w' |( u6 l        catch (NXException nXException)0 F- T9 Z, U8 G# b+ u
        {! c) C) I4 \( e; Y) I
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
1 D/ n8 y0 r7 ]& v            subType = -1;  u0 j% O& k! l* O9 J  K
        }. a% e3 P  o( T3 d+ Y

$ K) w+ f( d8 c# M% s  U% t        return subType;
/ q' R" G. n) ]8 H" d0 R5 C    }! m" M0 S5 U- P1 O; c

. z& }+ K7 R6 {  u7 R* X* n    /// <summary>0 b3 J4 g  t) s
    /// Display System Information
: @1 Q# E4 P! O9 N2 @& ]) T    /// </summary>
& ]; F8 w; `$ D( \* X+ V    /// <param name="uFPart">The UFPart to Query</param>  f0 X1 Z% S& k* s' M
    /// <param name="workPart">The Work Part to Query</param>- z( `1 r& k4 `) ]
    static void SystemInfo(UFPart uFPart, Part workPart)8 r8 K1 P4 T! J. O
    {" [& |! G/ m2 T& C+ l+ X$ c
        try; Q, _* K  j' y) ?' {
        {9 f  k1 w2 m4 N+ h2 r" A1 g: \
            SystemInfo sysInfo = default(SystemInfo);
3 }4 x7 J9 d/ K/ C: j# \            theUfSession.UF.AskSystemInfo(out sysInfo);
5 ~* ]9 M3 Q; C- k- M, g; \/ X# i% [2 |
            string partName = string.Empty;
1 T+ b" k9 C: U            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);8 d; ?  H( T4 j

; K( v: R8 w" x$ y8 C$ h            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();0 d8 f. r" O3 y+ |8 x* B
            theSession.ListingWindow.WriteFullline("============================================================");
0 }7 n+ [$ R; Q% w) d            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
- u( e9 W: `1 M7 u3 j, w            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());+ ^. j4 A! Z" J2 C" n  K
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);  z1 Q3 e; X3 c, f
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
& t4 V' I1 U( c5 t  u/ q            theSession.ListingWindow.WriteFullline("============================================================\n\n");9 j9 U8 q& w# s2 Y& I: [& b
        }
( C  O. m" B7 x% I# u        catch (NXException nXException)
# X5 L/ z, f( X' i! p& a# d9 n        {
# Z0 z) k: G! P2 z/ s8 t2 Q: `            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
9 ?( H0 E9 [* O- d% m! @4 J7 R0 }% W; z        }% x: D5 f- q, p9 G, S3 C8 e; j! ~5 J
    }
* w6 Q  A0 F+ a4 |* U/ R) @5 I
0 p( C, _1 ~; b4 x    /// <summary>
9 }# I% i) u2 |3 E  L  {    /// Unload the Current Image
& I1 f5 N6 W; v8 z- L" f    /// </summary>* {. ?1 M7 p( l/ Q7 @. i( ~
    /// <param name="arg">String Send by NX</param>
+ ~* X# s- a* D4 O, e- I, M    /// <returns>Unload Integer</returns>, }6 t  b- ^; u+ p# p( z! v) `7 M
    public static int GetUnloadOption(string arg)' _; v  z3 P! H6 l4 z* J
    {
8 y; o- e% B) P4 o3 \& ^        /* Unloads the Image Immediately */# n" o. n3 V/ F+ l8 X
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
: {6 y  t) ?0 _8 i4 {5 _. G9 O: c$ ]' t3 Q$ Q% z! v- B0 t; `
        /* Unloads the Image Explicitly, via an Unload Dialog */. V2 W* g/ r% }8 j( ~9 x
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);! J$ E: ?! i0 W. o" @- C
) `' w' ]) }/ x
        /* Unloads the Image when the NX Session Terminates */, y  q9 O; x) Y. M+ E% R
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);+ b# t9 i! H7 F
    }
/ {2 R1 \" D1 j1 p8 z}[/mw_shl_code]! g8 M8 |9 x; O  f* N
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了