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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
/ T! C0 p6 m1 l: }3 E4 I8 G, h7 I; e" A9 X- i- E3 w. ^
[mw_shl_code=csharp,true]using System;
' n# b6 w" G9 y- ousing NXOpen;: s. E/ ]1 k) s5 A- J' ]+ l* ]
using NXOpen.UF;1 A0 u8 |- F, q, K% S) E! x& e
using NXOpen.Utilities;
9 O7 c; n3 X6 U; Tusing NXOpen.CAM;" }5 b7 A" M  `, s0 I6 c4 F! C: y6 V
using NXOpen.Assemblies;6 e3 j9 G: ^% w: q9 y& ^

8 E4 m' _" B2 A: f+ astatic class GetSubTypeToOperation1 O; @: x) X3 k. f" ^+ w
{- k: |* W2 S8 |$ |
    static Session theSession;, S" o) f, d. [1 D2 `' {7 u9 E
    static UFSession theUfSession;
) O0 y1 @$ P# o9 T    private static UI theUI;
% L, E# F  f3 Z# J/ H# o
/ A) b% H% l/ Y' V* E    public static void Main()  y& g+ D* ^2 q% H5 `! [9 V" }
    {
4 e5 A! a# E4 A* K) o        theSession = Session.GetSession();
2 w4 M* v" c' D        theUfSession = UFSession.GetUFSession();
2 P$ ~$ l% f7 ]7 {3 c, k        Part workPart = theSession.Parts.Work;6 O$ ], O0 `9 ]' w$ |6 w9 t$ \
        theUI = UI.GetUI();
6 \* Z/ j+ z+ `7 C! G
, R  B# Q2 \" V4 m8 P        if (workPart == null), Q& L& G# g5 j7 X" g' u& G
        {& F/ m. V3 {; K) @' d1 r8 O% A3 o
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
7 A9 s2 s& k( Y6 n  n* }7 |            return;
2 M9 S% r; Z+ l2 U9 H- S        }2 E) O8 H  s* a8 }
. C, s- M) d! y8 _, x8 `8 m2 k, p+ F- x
        theSession.EnableRedo(false);
) D6 Y  [) w7 Z9 m
7 Q. T) j; E1 }  K8 P' m        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();/ z' `( W  k) A$ e

3 ]7 Z' G5 s0 v7 k9 j; w        SystemInfo(theUfSession.Part, workPart);
) |* d8 [: x/ A/ e- s7 F) f  v" d" N' D3 j& i1 d
        try
. Q/ `7 G5 T1 ~/ _        {
2 I* |8 ]( D3 T4 I            Tag[] operTag;5 F5 ^' {* h$ D/ o% V
            Tag setupTag = Tag.Null;; m# i) |/ n8 L" v" P0 s

) z, G+ u$ d+ A  n" {! c, m            int countObject = 0;! F. e9 @" d' p5 l) ~* a+ |6 E

4 d  q% c3 S! g2 H2 {( W* T5 c  n            theUfSession.Cam.InitSession();3 S) v7 p( c( @! l: o9 m
            theUfSession.Setup.AskSetup(out setupTag);
4 {  m& o$ h+ W1 p& B
5 l0 r) k! [) d/ T0 W# [1 F            if (setupTag == Tag.Null)5 ]0 k  t7 f5 S3 R' D( o7 P5 l
            {
0 ^1 @4 @( e6 q# d# u1 a                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
; S: |( s" b( x: a4 V; L                return;* Z1 _- q5 b1 ]' ?! i, w! A4 v
            }% k" E! j5 K! O

. Q8 I1 \# V, o; z0 k2 {8 j% ?9 n            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);( _. ?: l3 n3 b& i

+ \% w4 U- [' D4 J8 I            if (countObject == 0)3 ?( R4 s: I3 D0 g( L# o! ^/ o1 k
            {
/ C, t5 A, P9 D                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");9 u% k$ T! z: W, V8 P
                return;
! |% o: I- C! y            }
% |; J3 R2 {7 i5 r3 p- J
, h$ d) M8 J) z' j8 C            for (int i = 0; i < countObject; i++)
: {, `! s9 J' A" a! k' R  j            {0 q# `1 S" ?6 q
                int type, subType;3 r) q# \$ z* p" T; @, T

& r2 o6 G( E1 g1 H4 H" b3 F  l                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);2 v& c3 c" B! i! L: `

; `9 ?8 G* K2 \, g0 h                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
3 X4 N6 j; {0 R) I, e7 }# V& i7 a4 y! c4 |9 _! s- X, e- y
                if (type == UFConstants.UF_machining_operation_type)4 I) ]6 n1 ?9 F, `
                {
. W, z  m6 S: N4 V+ ?# C3 d' `4 I                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));& ^! J2 L' T0 {8 S/ C1 I
& D! T5 h2 o) t* ?7 Q# j# {
                    GetOperationSubType(operation);
( r) g% J! H. p
" k$ i1 N+ ]" Q' c                } /* if type */
/ ]6 w* `: ], k            } /* for int i = 0 */$ S% {# ]% |9 ^0 ~, E
        }' ?; ^# i& K+ Z" |  g8 k
        caTCh (NXOpen.NXException ex)
3 V: F) |3 Q$ y+ M  X        {
; N3 l, t: A+ `8 a0 _7 |            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);" N, ^' D5 \/ z  V8 y; B
        }
# q+ Z. x% ]" V    }
+ L; `+ T) p. ^% P3 J) u( I
( j+ d- m* {: |0 Q
" G* h* H! \2 Y: j    /// <summary>
; t" Z2 w. K/ L5 l    /// Retrieve the Operation Subtype3 Y0 _7 Y" M# L; ~* Q
    /// </summary>
8 i' X0 W& f' u, P    /// <param name="operation">The Operation to Query</param>
) |8 }5 g! @7 ~/ D2 g  v    /// <returns>Return the Subtype Operation</returns>
* a6 _# b; W* E  @+ D* C; @, J' ]# R) X    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
, Z% j( D8 w3 k    {
& a4 u8 P6 l- b. F4 R1 T0 e" ]        if (operation == null) return -1;
# l8 O) @: `/ T
6 N4 c$ O; X$ U  d# g        int type = 0;# b" _8 X9 s  w; p
        int subType = 0;
% C1 x! m; M/ G) n% F( I' k
  w7 |0 i- Q* e4 R) f' Y) a        try7 y0 j0 h! s9 C1 c2 N* I4 g
        {
3 M9 K2 D6 T) @% Y( w* c            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
9 r3 B8 T4 D6 I            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());7 N- t/ c7 q, p5 x

& N. G8 }7 ^/ R4 Q            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/0 l2 N* C. f$ R5 v
            switch (subType)  [5 C8 \4 {! Q0 x
            {* z' N* Y, T7 P+ E% R
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */2 K, \( T, i  I1 {6 _3 N
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
* J! h4 t- N) c/ \2 ^                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */4 c- b* m8 [, C$ T3 ~
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */: J" v7 w" q' Y" ^2 @0 B
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
$ p* n% a7 Y; n  @, D                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
/ q3 D! [6 T7 l, D3 k! N                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
: ?2 s8 s1 P* t( |6 l7 L, U2 q" r- d                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
) N3 y, `+ k- C& c0 V                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */: [2 w  M8 Z- H) X8 R7 p" t
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
6 {1 {  O' U) E                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */1 i; {6 M' d3 c3 V) Y1 ~6 ^
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
3 {8 Q) }5 m- V. Q                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */" u. u0 }! W; t% a
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */5 S; Z% t  b9 |8 h
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */! X+ r6 v* I2 B; F4 R
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */; M% R; B! p1 L
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */. W, |# d' E+ W0 u6 p9 S$ z& J' F
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */" C& W9 e: d) ?3 S3 f
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
* {% z4 K0 a0 q2 g                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */2 L, u/ W1 `. F( W+ J
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
9 R: F/ v( Q0 J7 {7 W7 T. K/ F, A" V8 D
                case UFConstants.UF_insp_tolerance_subtype:; Q( z# C$ J2 d9 |
                case UFConstants.UF_insp_path_subtype:# t' Z, c' k0 o9 T7 L: Z
                case UFConstants.UF_insp_output_subtype:
- _3 e8 ^' U1 |) Z                case UFConstants.UF_insp_misc_subtype:
) J, G  v! Y/ e5 j$ }                case UFConstants.UF_insp_align_subtype:
1 X0 I. l8 k& v! _4 _                case UFConstants.UF_insp_sensor_subtype:
: ?# _, C( G1 \4 D% b5 c& W, I                case UFConstants.UF_insp_construct_subtype:
, I: U* m% H( z! q- M                case UFConstants.UF_insp_bounding_feature_subtype:
  A0 {  |; q- u6 o2 Q                case UFConstants.UF_insp_feature_subtype:
7 q* }  k( t9 W+ N
$ h" q, v: H1 C( o! U% a                case UFConstants.UF_mach_canned_cycle_subtype:
/ F3 D1 k: U; j6 C- U
% C! w" e- c. z- Y9 f) k" K1 e                case UFConstants.UF_mach_laser_teachmode_subtype:8 [' V% h) y; A/ E) G/ }. a6 y
: `% e( ~9 V7 P# k$ ]
                case UFConstants.UF_mach_turn_roUGh_subtype:
# p' R) z& n3 ?! _. a# @+ u                case UFConstants.UF_mach_turn_finish_subtype:4 e( C' Q8 s  r3 z4 L, B
                case UFConstants.UF_mach_turn_teachmode_subtype:% _. l$ @, }! {" a3 K( R+ @2 g- r
                case UFConstants.UF_mach_turn_thread_subtype:7 ?  u. _" B5 G9 _- B
                case UFConstants.UF_mach_turn_cdrill_subtype:& v! ]* E1 H. K# V; z- K& A8 y
                case UFConstants.UF_mach_turn_auxiliary_subtype:
, ]1 U) x  S1 o+ Q, c                case UFConstants.UF_mach_turn_probing_subtype:
8 t' u% e4 |0 O9 t  Y) W                case UFConstants.UF_mach_turn_tool_probing_subtype:% a5 [  k# B8 G  `( F
                case UFConstants.UF_mach_lathe_mc_subtype:1 P# ]5 Z0 L# O5 K- m
                case UFConstants.UF_mach_lathe_ud_subtype:
& h' {( B6 B4 j" I0 r
( }& r, H5 w! e+ g! a8 s$ o7 b                case UFConstants.UF_mach_wedm_subtype:. @, G6 M  x4 L; o" B
                case UFConstants.UF_mach_wedm_mc_subtype:" V4 J, L* B( X- V! }6 ?
                case UFConstants.UF_mach_wedm_ud_subtype:
' [" Q) Z: x. c- u" {                case UFConstants.UF_mach_mass_edit_subtype:" N; r2 m* ]6 V) X5 r0 s4 G# ^
                    break;
" G* Z; J# i/ W/ |4 v- s1 M# J7 ]
                default:( G" G0 J6 @, e% }. L1 m$ k
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");, c( i/ b: j$ i: V& G
                    break;5 v' c3 a* S% @
            }1 p, }( A- I- u. A
        }2 K# D4 ~0 A* X$ f2 Z* T
        catch (NXException nXException)
. j- d  a7 ~9 f1 M5 k: A: ^! J        {. j" _8 O: p6 T4 b2 r
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());! Y3 l( X- N/ L! t' o3 x
            subType = -1;
, D9 b4 }* ]' E. J        }( z0 @0 `- r- o) o& R

) b6 H% Z. C( ~        return subType;
2 S" ?: ?% |5 F( A    }- q' Q. e/ h9 t5 X/ _( i
8 i# T! U- k7 [. n) X2 I& p
    /// <summary>9 O# h) v+ C5 F- ?+ {7 W
    /// Display System Information  F0 S, Q" V, ]5 X/ y' J6 J: W
    /// </summary>
4 @5 q& B3 A9 Y/ o" t. n) Y" A    /// <param name="uFPart">The UFPart to Query</param>. N. ^3 m# Q0 B6 L
    /// <param name="workPart">The Work Part to Query</param>+ L8 v& s0 K: U+ V0 t9 X$ x
    static void SystemInfo(UFPart uFPart, Part workPart)5 c8 a' {. |. l" H7 }$ v; B0 y
    {
! L8 Y( E; D; ]& f4 l        try* p/ ^" M' N1 h+ z  {7 m/ I
        {
0 Z) H' U4 ^% D1 b7 v$ D3 \$ m            SystemInfo sysInfo = default(SystemInfo);+ b0 @! {7 V/ @* v8 o" J
            theUfSession.UF.AskSystemInfo(out sysInfo);
. x' _" U% y3 W, B1 V# n$ K. ~6 `( v8 X
            string partName = string.Empty;
: ]" v: j3 }0 P. k: W8 [            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);2 |% v8 k+ w6 t% Q
, s( ]/ k' m( ?1 w$ m4 H5 {' H
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
' G4 J/ R0 D# y4 [+ ]4 t            theSession.ListingWindow.WriteFullline("============================================================");. Y( S. G2 u" m
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());% L) z  [( C: U  Y6 p
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());6 ^- |6 ^) g3 R8 \" B0 S
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
; h3 [- A8 K; J, N& A% k6 s: m+ ]            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
1 _# y) Y# ^% v0 k8 R            theSession.ListingWindow.WriteFullline("============================================================\n\n");
3 w: z9 r( P+ T5 k        }* o' S, ]# F! b. S$ p
        catch (NXException nXException)
6 m9 T1 v  r/ t8 M- P        {
8 Z" U/ Y# H1 Y) P            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());; ]5 i8 m  S. L1 j5 N7 N) E' F
        }1 ?6 y* F; p5 S. p3 i
    }  }( Z  d' Y. B9 R

1 n& X5 l9 b0 ^  O3 e    /// <summary>2 ], I/ a" r/ n8 h
    /// Unload the Current Image
  R  w6 o$ f+ z    /// </summary>6 m( L- h6 k/ P9 w7 b
    /// <param name="arg">String Send by NX</param>1 C) x1 y8 [/ o3 H6 H" Y
    /// <returns>Unload Integer</returns>
+ J- h+ ^: [% X( G  q    public static int GetUnloadOption(string arg); T5 r4 t" z) d. C( p/ D8 A7 G
    {
2 j  O; m9 `4 O3 |7 _        /* Unloads the Image Immediately */
$ N; c4 E5 J3 Z' Z$ y7 v! ]1 L- o3 a3 k        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);. s9 j! G8 F, ~" H

. U/ D. j* q: A- I9 y        /* Unloads the Image Explicitly, via an Unload Dialog */; o! D# u- u1 |, F: z: e2 y# Y
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
+ Q& h" |) o9 N7 Q1 w2 J9 t
5 b- }0 E6 B& z  h$ F1 F        /* Unloads the Image when the NX Session Terminates */
8 o6 [( _0 T2 X$ \$ M        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);  z9 K+ o( ^6 y; r) Z% d
    }
% S% b/ U' e* X* ]4 F* a}[/mw_shl_code]
0 @6 d2 X% n1 ?% m
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了