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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了: y/ T4 A- d, U0 d

6 l7 d! ~/ I5 }2 G# Q[mw_shl_code=csharp,true]using System;
/ W/ C% u9 {0 ~+ A$ Uusing NXOpen;% {. x0 w5 u, W5 s7 T* Z8 W1 r# g! M
using NXOpen.UF;
7 w; d" }) Z: musing NXOpen.Utilities;
0 N3 u- n6 W. X3 \' A9 cusing NXOpen.CAM;
* Q. m$ T* v" m6 a% ?( Y! [( Dusing NXOpen.Assemblies;* c( G0 H/ H& d' `
& c7 t! T- M) G! Q& F* Y* V# _
static class GetSubTypeToOperation+ E4 Y4 M$ n2 e( ]8 U3 u& Y6 z% n
{
3 c7 E" q3 t6 @9 T/ R5 n1 |    static Session theSession;% M+ U- G  Y1 L; l! i2 k
    static UFSession theUfSession;; `! j4 p5 x3 @, d- Z, j) p* ?
    private static UI theUI;
4 O! l/ }' X5 }+ F2 t. M, B6 T. h4 ~+ i  Y& q& B
    public static void Main()
1 \& e+ J# \" E9 z0 v% A; G+ [$ h    {
2 Z8 X5 z% B8 {        theSession = Session.GetSession();
; s$ Y9 [, S' s& e: A8 m1 A1 |9 B        theUfSession = UFSession.GetUFSession();
# {' `" V2 j7 d* t$ n: X5 T7 ]        Part workPart = theSession.Parts.Work;
' n; x# L6 K" i% D; t8 s        theUI = UI.GetUI();% B" e- y  v# J

0 M, o+ ^; j2 I8 }# ]  c        if (workPart == null)- G4 E. {( F+ k( z7 w
        {/ B% O. Y! K2 Z
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");' O* U8 E+ V( B* z7 T
            return;1 l, A  z/ }5 K
        }+ x/ M# [0 Z6 R5 G+ F
0 }3 k* _: r6 f3 h2 V; g9 p
        theSession.EnableRedo(false);/ |& V5 g7 S, J2 U  Y. e
! z5 \1 a3 D! E+ E* r8 L1 n
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();- b4 T: U- t+ G6 W- c0 n4 O+ }* ~

: N/ G# j- Q7 [% i1 B! f2 g) a        SystemInfo(theUfSession.Part, workPart);
2 O" M1 W8 Z% ]7 y( U5 e
0 f5 v; H0 A9 k# D        try5 f! T+ s6 H- g: n6 S
        {0 K6 J/ M# V  f* k. c# D
            Tag[] operTag;; J2 k% F; V! u
            Tag setupTag = Tag.Null;
$ @) J: ~, F2 S. i- H! ]4 c' Y
. L* j+ N% I, z  ^) Q8 k: e: B            int countObject = 0;
" ^8 b* [+ ~- j' ]! z; |% ^6 W. U5 z: g
            theUfSession.Cam.InitSession();
- _+ d# a! I& m: F- n            theUfSession.Setup.AskSetup(out setupTag);! h) q$ g1 c& Z" P: t* r

" \: N" P/ G% T! Y            if (setupTag == Tag.Null)! ]  N' b* m2 x% q
            {' b, ^; |* h2 I; f
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
) j/ ~" `, d( R$ }7 |- v                return;  g% b! I" f6 }" N, ?
            }8 R# K+ j  D& i+ O8 _
3 S/ K1 K0 }! ]: O
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);* Q0 N* X+ N2 D
8 g, e# [5 s$ _8 T' Z' M% C: [
            if (countObject == 0)7 p6 Z, j4 b& Y- R/ r3 y2 \& E
            {2 z  A' m. G* b1 ~& f& h' c9 f
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
% I) g! [' o6 e                return;7 d4 @. Y5 n$ @7 h
            }! }+ r! z7 Z3 n) f4 q- F/ X

5 k1 [3 [- Q/ A2 _            for (int i = 0; i < countObject; i++)
0 J" }" v9 ^" O% x  I            {
. \! f6 ?. }! ~" b/ v                int type, subType;
& L+ F7 J$ l) k2 Q4 B( M+ y% }  `* h, m/ S* r& o- T
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
" J3 ^( U. g/ r7 G& n" c
# C5 ]+ R  s9 ?3 ^                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
3 F0 y1 z: I) I' q
0 E( {7 @5 Z+ y" @& Y9 Z/ c                if (type == UFConstants.UF_machining_operation_type)
8 W8 D% @$ g: A" `' v9 q3 v6 U8 I                {
- l8 b' ?$ m3 I% I6 r8 ?" k                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
# [; M9 ^- r0 C, t$ m+ D
, s6 Z- O4 d- h3 {* V5 A                    GetOperationSubType(operation);+ [. T6 u( r- X2 t6 m5 P6 U& h

9 A0 R: E' q( K  y+ b4 d- v                } /* if type */, K! ~# b/ x; g
            } /* for int i = 0 */
3 B* b" M: s+ \4 Q  G        }
' \. H0 L, T4 W5 s        caTCh (NXOpen.NXException ex)6 }1 v3 i' [7 ?& s& K9 C8 J$ Q# o
        {
( z( p% f( N0 N" w  v( v            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
  N5 e( A  _8 Z' V" s        }  P% S+ g# D0 G6 y& _. V
    }
0 ]$ m1 ?. Q% n1 g' x) S* o3 r& B7 |+ Q6 H; Z$ |3 Z0 h7 V

# l3 \, f5 w9 f* q; R- _0 W+ l    /// <summary>
4 J8 w2 {: R% V  _4 r' [4 Z" t    /// Retrieve the Operation Subtype9 d( n; g6 C- A& U" B. x& ^6 s
    /// </summary>
& L0 ?$ R9 Z$ D. A% w- P    /// <param name="operation">The Operation to Query</param>& k- D% b, v2 H: x. Z8 K
    /// <returns>Return the Subtype Operation</returns>1 ]0 F8 m9 ?3 Z( W* f! |. x  J
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)+ _$ c  \+ X& O8 o. E
    {7 A% i! k5 i6 h2 x$ O
        if (operation == null) return -1;/ N+ _% w: g8 x( R7 ?  {" W

4 Z7 R3 c) g* p1 `, e$ u6 I+ k3 j+ {        int type = 0;5 \* I' L& l6 v7 J, Y  y# ^- ~" @0 j
        int subType = 0;
! e  k& c0 r" N' @
" a5 s8 w# J7 t        try7 G/ S2 R2 G! K' R
        {
2 M2 u( r+ Q  i3 Q$ r; i9 |& u            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);4 H& U$ U+ R. I
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());, i4 Y+ ^; H- P/ G
9 w. y! g9 m6 n/ W% w
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/. N# N1 I9 K  o4 {8 e  b
            switch (subType)5 A: n: b, b5 {. F2 l8 k$ R; d
            {8 ?7 p+ I9 ~1 D
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */  ?5 f) F0 ]* {! X8 ~; [" _
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */# c3 K5 P# j  m3 h$ d
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
+ }( {0 H) V; f+ T( T6 k& a                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */, a# x! a% u* u
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */8 U" G& p; z2 U: c$ L
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */4 g! H, A$ x8 G( z  W6 `' l2 j
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */! |! y8 U  i$ {. G" N, n+ ?7 h
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */# X9 c0 G( Q4 K, v7 M2 o4 q2 A  Q
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
# q6 U/ p# L: p$ f& D% P9 T, w                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */: z+ L5 b% h5 n$ [2 ?
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
) K9 i6 o5 O+ i: y% @% l8 N                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */) N4 k( Y! C0 A  ^: o  r6 ?& `
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */- ], B, d0 J  o! M2 b7 C  c
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */; o' G: O1 k5 R2 t& X1 m1 P
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */: R" m& Q* O+ j) o  F
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
$ S  G) k3 {3 P* r7 A9 Z                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */1 Y& `* K/ f4 h
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
% c8 J3 t  _0 R; S  ]- R                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
% `  C  J1 ^8 p& V; g! W                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */5 U, t% h$ }' t
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
8 h+ v. S; ~0 B, G6 `. w8 P4 v1 _% ^
                case UFConstants.UF_insp_tolerance_subtype:* R! T" j3 F0 a+ L: a0 U
                case UFConstants.UF_insp_path_subtype:* }2 d$ ^" ^2 d: P5 y
                case UFConstants.UF_insp_output_subtype:8 v$ r) e6 f: S+ i- j
                case UFConstants.UF_insp_misc_subtype:
! a2 a% s3 J; f% s) y4 m                case UFConstants.UF_insp_align_subtype:
1 a1 d& [, ~5 h. F/ {                case UFConstants.UF_insp_sensor_subtype:) A8 F1 a4 S* ~6 E8 l; q3 z
                case UFConstants.UF_insp_construct_subtype:6 I& _! O3 _9 L+ f! e$ a4 P2 d
                case UFConstants.UF_insp_bounding_feature_subtype:1 M9 ?& i& }" ~( Y& ]
                case UFConstants.UF_insp_feature_subtype:6 c& a6 E9 S/ S. ?+ F% a' u+ p
( G* e# f- I! z, B# }
                case UFConstants.UF_mach_canned_cycle_subtype:
. R! b$ Y; J5 K7 ~2 m+ Z, y+ E8 V
" f; L) M: r- Z. D/ F3 r                case UFConstants.UF_mach_laser_teachmode_subtype:. w1 j% E2 `$ f3 n$ `2 j
. V% h" L1 Y6 e2 W/ U
                case UFConstants.UF_mach_turn_roUGh_subtype:
4 E6 A4 i- |) `1 Y                case UFConstants.UF_mach_turn_finish_subtype:2 J. H, g" c7 K* p( u
                case UFConstants.UF_mach_turn_teachmode_subtype:
) Q0 n9 g3 M7 O; c                case UFConstants.UF_mach_turn_thread_subtype:* O- r; P6 {0 K( a7 ~* u
                case UFConstants.UF_mach_turn_cdrill_subtype:3 m2 N( [# n+ D: L) t. J) ?: b
                case UFConstants.UF_mach_turn_auxiliary_subtype:
0 ?! n2 r% X( N+ T" }2 B                case UFConstants.UF_mach_turn_probing_subtype:
0 Z( j1 w) r& m' u                case UFConstants.UF_mach_turn_tool_probing_subtype:( q8 ~1 [* ]# F* |  M
                case UFConstants.UF_mach_lathe_mc_subtype:, b: c: L9 }9 w- G$ y5 z; q
                case UFConstants.UF_mach_lathe_ud_subtype:) X* G% g9 U& p1 p( w2 e
  \4 y2 h2 y' W5 E
                case UFConstants.UF_mach_wedm_subtype:# K* Z  Q1 k/ }
                case UFConstants.UF_mach_wedm_mc_subtype:' }8 }6 B; r+ Y7 B9 {! A
                case UFConstants.UF_mach_wedm_ud_subtype:
1 f+ }' ?+ q1 w% y: D9 R                case UFConstants.UF_mach_mass_edit_subtype:  c! M% s: n- r/ }/ z2 B
                    break;7 g; y. i2 ~2 v, ^" [

+ P3 W0 E9 v" U+ `5 D8 w, K: T0 M                default:
3 X# s6 W  V8 q: E- ~6 q. j  r- c                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");; ]. f9 {8 n5 \$ F8 q, U
                    break;
* K- q* [( `4 c- J) B6 q4 G            }1 |0 [7 I; b5 E6 n, a6 ^" @; V
        }
# b2 g" l; O  d2 f# y0 x8 ]$ Q* x        catch (NXException nXException)+ D, |# C8 |0 J8 U
        {
8 \8 _2 B3 ]4 m' A            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
8 g5 s8 z" E% i            subType = -1;5 h* u2 k9 ^* u+ s/ }  w9 v8 {
        }
  L* O9 l8 r- W- b! M3 c; ]
8 g& R, G. t; g0 |, o. X        return subType;
* k6 T( P; B# p2 l: X. W8 S    }
* }4 v" a$ P0 T: w- J! f0 |
7 L) }3 e- x6 z) I    /// <summary>
  l. [( ~. y$ x" |" A    /// Display System Information, V# S5 |" Q5 ^8 |* E6 c- Z. {
    /// </summary>) S  C2 i- a  v( ~3 \# e" Z; e
    /// <param name="uFPart">The UFPart to Query</param>
8 ~1 H8 O, b( i  \' E; Z6 M    /// <param name="workPart">The Work Part to Query</param>
' W. F1 U. l* `+ s- e8 x! \    static void SystemInfo(UFPart uFPart, Part workPart)- O6 r9 j3 P! e  V) [0 N& x. F2 m
    {+ G4 C% \- f1 m( l, x# E5 B& ^
        try6 x5 ]% l% b. e5 y% X. I( I
        {
, w4 X, T: O6 W* {, l! G            SystemInfo sysInfo = default(SystemInfo);+ ~& u2 ~9 v5 ?5 m
            theUfSession.UF.AskSystemInfo(out sysInfo);
! S/ Z% Z, Q( E1 t& ?2 W0 L6 d% S0 n4 Z% ^: n
            string partName = string.Empty;# a0 O" |; p4 X2 G. Y
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
4 e& D% A: r& j- h! b9 N: D
+ d; ^# b, `3 r* A) F            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();) c' x4 P  e5 n7 y, o5 p( H  ?* ^
            theSession.ListingWindow.WriteFullline("============================================================");
, ]$ P8 x" E5 V- e            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());; ~' }+ K- O) j& R
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
8 `, I2 D6 Q# y) U5 [            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
4 q1 O; I8 M$ {) W1 P0 x0 x            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
& f5 X/ m+ j( K' t/ ^8 x            theSession.ListingWindow.WriteFullline("============================================================\n\n");- F, V" M6 r& l' j$ F8 {# o
        }; f" a' {' {8 r$ h+ a. ]1 H% l
        catch (NXException nXException)8 o& y5 K- T4 a# o7 p  R) _
        {) e" F0 i' {3 H% d
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
' h/ {/ K: P0 H9 h1 L        }  a$ ^% U% o1 I# e
    }
6 F& y+ S( p2 j/ r  x; u0 p( M$ Z$ |* R& {! R
    /// <summary># Q5 q1 w$ I1 y. y6 R- c# t1 A
    /// Unload the Current Image2 g# |) j) k$ }# T
    /// </summary>: o% m( e) |) ~; h! B& s6 l' D% ^! E
    /// <param name="arg">String Send by NX</param>% O! p/ |3 O' A
    /// <returns>Unload Integer</returns>+ I6 z6 L' N; e4 t4 b2 f
    public static int GetUnloadOption(string arg)
" m! w$ u* H: [$ M0 u4 g    {
' o; M5 ]1 ]8 G        /* Unloads the Image Immediately */" S9 z9 p9 X) R8 {2 x$ u/ B
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
! A( P% ~- p* A" K
4 R- K3 P1 |8 ]8 A        /* Unloads the Image Explicitly, via an Unload Dialog */3 }  r  u3 F# p8 E9 |: p2 g1 Y: f
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
% o  {- r! H0 L/ l$ L: P' k# g5 ?; S+ E' @6 q
        /* Unloads the Image when the NX Session Terminates */: E3 h+ j5 f" E4 @+ }) H+ B
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);" Z& p& h8 j9 k+ Y
    }
* k- E# h3 N$ T* H}[/mw_shl_code]
* c' K5 p! z1 O0 g+ g
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了