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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
0 r. P6 Q4 _" C
# |: V9 h* r* Q8 p9 o4 l[mw_shl_code=csharp,true]using System;! g( R" e7 {. P1 _7 }
using NXOpen;8 ~' b* r1 |; ^! O; O' P4 o8 X
using NXOpen.UF;
, W6 ?4 S, N% T# r# M/ ]using NXOpen.Utilities;+ O( J2 ]( R; R1 X
using NXOpen.CAM;
9 @6 x, L, m" W/ Q) O8 Zusing NXOpen.Assemblies;+ X" N6 A$ D1 c& g

/ t9 `/ `- m2 E4 ystatic class GetSubTypeToOperation
, E3 o, G5 c3 N/ a0 W/ B{
0 C0 X# W; H) k3 D    static Session theSession;
& j, |5 e; A4 t    static UFSession theUfSession;4 v, H6 ^; g! E. G5 q" K
    private static UI theUI;
% q& F9 L; L  C. F" H6 U  ?% k- m7 ]: Z
    public static void Main()
) P) O& K) {0 B) u/ U1 W2 L8 o    {
6 z5 U" Q& ]5 g% J: G1 ?* T. k6 u3 Z        theSession = Session.GetSession();
7 A7 }/ I+ C2 j* X% j        theUfSession = UFSession.GetUFSession();
" e: w; S* ]$ R0 z0 S        Part workPart = theSession.Parts.Work;
* _2 J& u. k# m        theUI = UI.GetUI();" y. B. H5 E7 W$ y
2 E# w" Z. A7 u! j; C# \
        if (workPart == null)
& @2 d, \# O7 X; C        {" Q/ H# b" f: M$ n% O
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");5 H# _% z+ B6 ~5 d9 L
            return;4 z* i4 a' e. @# j0 [0 @
        }
1 Q3 }' {1 v9 ?; b" |2 U" B; x! H, ?
        theSession.EnableRedo(false);  I# c& V4 V% L- F; z

+ r# l2 y0 g1 u, l2 l( J        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();5 V6 w7 ^1 _; s$ n$ k$ q8 A
& }. T# f1 O$ K0 P9 ?
        SystemInfo(theUfSession.Part, workPart);
. {! ]2 K! n1 S0 K8 T7 C5 q( K2 N& l
3 V1 H$ Y+ ~. h        try7 |0 u8 j* ~. r& j
        {: `& l9 @7 K# h& `3 f* B
            Tag[] operTag;% a+ x0 R+ s0 H; K% A
            Tag setupTag = Tag.Null;" X7 Z- `- F$ c  m! y2 ^) |4 b

2 Q* d) Z% G; P3 ~6 L6 ?* j            int countObject = 0;( [" n8 m9 M' s9 K2 U, X0 p: u0 D

7 s. F: w9 ^6 F% I* [            theUfSession.Cam.InitSession();, Q/ \, \. A$ T+ J6 ^5 g
            theUfSession.Setup.AskSetup(out setupTag);4 w3 c; R2 U* C$ N7 D3 @. N

3 P+ g; k1 `  G8 @& a+ H            if (setupTag == Tag.Null)6 {# F2 g0 Q2 E" s( O4 j( w
            {
) a: T3 V9 V3 J7 W* `* @; z# ^                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");* Q% n0 X% G8 ~2 ~" R$ N
                return;
0 E% W! ?- x, e* ?9 v9 u  c            }: t5 B5 J" u9 e( J1 @. L
: E3 A3 j. W3 ^
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);/ f; E& o8 I/ ^) a& ~+ w( d

9 m1 y' @+ J+ q: M7 b5 C            if (countObject == 0)/ f! O. P1 w: _. c- H6 E, f
            {3 M! O, n6 c' r" u6 X
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");2 Q1 r, L1 Y+ i( d: D
                return;
% ~4 l) a6 ]( C' c, R            }, G+ S3 Y% X( m; F$ ^' H, |& R- T

3 D6 ~- [' ~6 e# ]$ d3 F/ }  i' D            for (int i = 0; i < countObject; i++)0 ?! ^! \. W: I. W4 o! m
            {
6 R% c% @- V- P/ k0 L! g; U                int type, subType;
$ m, w9 x# H# J" |; G) ^# v- k2 s1 O0 ?
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
0 k1 w: f. i7 @" l
8 f+ V5 m$ u0 ]/ h: v% z( s                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));1 ]9 R. T, O& E/ @& s. u* j

( I! v& ?6 @/ S& w                if (type == UFConstants.UF_machining_operation_type)& o9 q9 ?! A5 |2 ~6 [5 R# j
                {
1 _6 g# u4 _0 c# ?' d9 E                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
/ x- X- Z& L3 N. A5 p$ M7 O2 D
6 n! N" w; O: V4 T  o& ?                    GetOperationSubType(operation);0 i3 T& F/ o2 A- y
1 }. R" J9 f8 B; j, I  j: N
                } /* if type */( j7 _0 k' L  w
            } /* for int i = 0 */
/ w0 _$ p( ~% `1 ~0 ?) |        }
5 [- {$ ]3 S# W# R( N: w        caTCh (NXOpen.NXException ex)
7 b. f& a1 p3 {        {
( M4 N, [  \0 q5 q" n            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);8 `! C8 Z9 y. w2 \  _8 W$ _
        }9 N. K/ H/ y3 J
    }% V. ]% |0 W/ }
' R: s" N, R. w3 ~1 n  z/ F

6 I# [5 R" O0 l7 Y& s    /// <summary>
6 ]6 ^  ?! E& C8 w9 U& w    /// Retrieve the Operation Subtype
. I& r% Q) T7 @% ^    /// </summary>' O8 |$ n$ N5 N: d
    /// <param name="operation">The Operation to Query</param>
5 M# I4 ?( {1 `+ G( t# l9 p# _    /// <returns>Return the Subtype Operation</returns>
. T! b. h4 H% z    public static int GetOperationSubType(NXOpen.CAM.Operation operation)% [( I0 F# @, X" ~6 o, Y% I
    {0 }2 ]; i8 s' z! S: P5 Z; B
        if (operation == null) return -1;+ k& i! Q4 e. ?8 c% E
2 r9 d9 J; e; q+ T: g$ D' h. [: e
        int type = 0;4 F: `! T+ a( \4 }
        int subType = 0;& \0 @# U1 K+ M
+ \7 H% \8 h  x& W- n
        try
7 @: k/ k& H/ a" ^7 M        {; E+ U8 D7 e& @  R0 X; I/ M5 E" x
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
2 |' q; i5 k- Q; }% t' n8 ~5 \            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
# `/ ^' r, R2 c' c6 c
5 N! x: X: v- o            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/6 @2 t6 U5 c5 {) X) Z
            switch (subType)" l* ]8 Q. i0 D
            {5 ~# S- b" D) m$ b, K& z
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
2 X; l! K; B0 G+ I+ k! p9 g                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
/ u/ m6 H  n4 G' |9 q* b0 T                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
6 U: J  ^" K  F7 @4 j; [: p- \                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
% K, K5 w  u* Y- j1 A" o                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */3 c- l% ~6 K! ~
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */# M0 y# \) z/ b: H: H
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */, k8 X9 @/ R. \- U0 M2 m% [& w
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */$ E1 l$ a* A6 O- r' S# S
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
" n$ V& o6 j/ E6 c4 b/ |2 m. y                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */, R9 s9 }0 Q% y. f
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */0 }1 L) E0 a, a) v0 a& H: F0 g- i0 Y  K3 j
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
8 ]. V  \+ ]9 e  Y) C& b. v1 D                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
) {  f1 v$ I% w& i4 X3 n                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */* z" Z' V( Z2 I% L5 f; e! }
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
; Z# K6 V( g$ j" ~                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
! B# i7 b4 ?" S1 o# g* I4 N* i                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */; s* `8 N0 [$ F, n) r' y
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
$ {9 X5 w: q5 h; E9 e3 K                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */+ F" B& F4 o9 N5 o1 F: F
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */  _; I# z5 a3 @9 t
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
: c9 P8 b  m7 {" Q9 n% h! |, N- t( q6 m( L2 Z0 J
                case UFConstants.UF_insp_tolerance_subtype:
7 B. q: D2 V! o2 q                case UFConstants.UF_insp_path_subtype:1 s3 T( Y! |- v) S& N
                case UFConstants.UF_insp_output_subtype:% \3 x2 {( h3 A: Y- J% P
                case UFConstants.UF_insp_misc_subtype:  J9 l0 L( G; \" z/ Q- K
                case UFConstants.UF_insp_align_subtype:1 Z7 H$ m  l% Q) U
                case UFConstants.UF_insp_sensor_subtype:
4 E) L6 M) N) k* @" y' R                case UFConstants.UF_insp_construct_subtype:
' K: y) K0 {' U  J! E+ ^4 ?2 u                case UFConstants.UF_insp_bounding_feature_subtype:& ^" Y) C$ ^/ b# x8 c
                case UFConstants.UF_insp_feature_subtype:
+ V, r/ E. p9 S7 G: X; L* m, x* C8 i8 X' \+ P* D
                case UFConstants.UF_mach_canned_cycle_subtype:! P4 v% o, [; q' a- F; D  F

7 p! k+ e- B8 I; D' `- [                case UFConstants.UF_mach_laser_teachmode_subtype:
% g8 @' j# m. c* o; w# g7 Y" Y
. u4 b, u% H8 n7 O# V. o, Q                case UFConstants.UF_mach_turn_roUGh_subtype:
0 M9 W) y$ f# v                case UFConstants.UF_mach_turn_finish_subtype:
" ^0 t; ]1 e: P                case UFConstants.UF_mach_turn_teachmode_subtype:
# [# J+ j" a0 V- _+ l                case UFConstants.UF_mach_turn_thread_subtype:5 O5 }) W- m+ Q+ i6 \0 O
                case UFConstants.UF_mach_turn_cdrill_subtype:/ T3 N0 L5 e* q& y, n3 M$ e
                case UFConstants.UF_mach_turn_auxiliary_subtype:/ ]4 |( W# q8 V
                case UFConstants.UF_mach_turn_probing_subtype:# S: k9 y9 [4 n% l# {  ^4 v
                case UFConstants.UF_mach_turn_tool_probing_subtype:
( K; _  |" n/ u0 Z* U8 h: x                case UFConstants.UF_mach_lathe_mc_subtype:
3 R' s. i. m, B2 Q+ y                case UFConstants.UF_mach_lathe_ud_subtype:
7 c7 q% s* o3 ~0 |9 y( |2 K/ a  r$ o# y
                case UFConstants.UF_mach_wedm_subtype:
% k# M# O& _0 L. S4 t3 X, a$ d4 Y% g) {                case UFConstants.UF_mach_wedm_mc_subtype:
# ]/ n! N2 A: B9 j) ~1 O                case UFConstants.UF_mach_wedm_ud_subtype:
; v) c/ K7 ]* }0 [/ W' e                case UFConstants.UF_mach_mass_edit_subtype:
) ]" \& Z" k# z+ g                    break;% _8 o! D9 q1 X6 p1 N- ?
# i" Z) o* [8 K- C
                default:
' W8 T" s! e( X6 \9 h5 }6 U  N5 p                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");' s: \6 Z2 H! ]/ g, U
                    break;
- }( t. Q# H# Q! W            }
, G1 x/ M; A$ k" ?2 B        }( h! s7 q2 K& S1 K! M
        catch (NXException nXException)1 R" z5 r% X' \
        {
2 G! p7 Y6 G: a, M5 @            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
% t% d& m/ P) H9 `; B6 Q            subType = -1;
! a( O" I. Y- L- d5 ]9 O        }
2 s  Q+ A/ x  u
1 D& j7 T- a8 o# P        return subType;2 b% g2 L% l! i2 c) b: k$ P# T+ [
    }
6 A* u+ _# P% w0 f( W+ b+ }- e. B/ u- ~: p
    /// <summary>
( o; X/ D2 H# J* o) j. P7 T% K    /// Display System Information; ~# t6 @( w6 B1 b( n" Q
    /// </summary>) B- O7 |9 }( I2 M/ r1 U9 G
    /// <param name="uFPart">The UFPart to Query</param>7 A! f9 j! Q: O6 `( ]6 E7 C, N% A
    /// <param name="workPart">The Work Part to Query</param>
. X% P. S3 F- c2 `6 O% W    static void SystemInfo(UFPart uFPart, Part workPart)
5 |; K/ ]+ v4 Y0 w. T3 u& r    {$ C" U' G. ?' u- }/ \" j4 V
        try
- }1 K6 u* \/ q' A        {6 a& c  H: Z0 E& I8 P7 `
            SystemInfo sysInfo = default(SystemInfo);# S7 |0 Q3 u5 J$ m) _% Q4 [
            theUfSession.UF.AskSystemInfo(out sysInfo);4 K; u; Q, X2 I
9 L. c8 }7 L$ W9 B! W/ a
            string partName = string.Empty;
9 k* m8 E8 D( f            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);$ L& i+ e. p4 x; R+ ?1 w6 w6 w

! o% C2 T* n, c, e- T, h            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();7 R  h+ H: Q1 o( L
            theSession.ListingWindow.WriteFullline("============================================================");
) N2 Z) X+ A, U' S5 f0 I            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());5 Q; d5 L4 M$ v+ `+ S
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());( O, X  k. F6 z! j; S* e
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
4 h9 t& U4 `, _# P7 \/ {; F  Z            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
" \* ?, O3 R! c! V; t! Q( x0 w            theSession.ListingWindow.WriteFullline("============================================================\n\n");4 f+ D' t0 F- x6 Q1 L$ ~" y
        }) s8 I2 U1 p6 a) _! _5 }
        catch (NXException nXException)
4 G8 t$ Q3 m1 `        {% ]3 B* V$ M# b9 Q' F1 W
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());: c& p* K7 X5 u6 Y3 i0 O" P( g
        }" Z8 T+ a6 h( k4 B$ S! G( L9 z
    }4 s* `) k- r& j" V

) v' P6 Y, h0 X& h; u) l: X, G2 U    /// <summary>3 S6 z4 R6 O4 G0 t! Z$ D# K
    /// Unload the Current Image: o6 N( g: @( K; ^' _8 f: M- d8 C  V
    /// </summary>
" E- n% r# U2 f' h6 X    /// <param name="arg">String Send by NX</param>2 j6 |' c6 J9 g' M9 b/ ?2 d
    /// <returns>Unload Integer</returns>
  W: c6 ]! E# C/ J- P' r- ~' J    public static int GetUnloadOption(string arg)* `. |) x9 C  I% L- R' K
    {, q4 e) u( b: b$ w% ^) x, y- G" t
        /* Unloads the Image Immediately */
3 T7 Q% ^8 e0 T- M( E: |1 F        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);7 t9 h5 p$ s( J) j; t, Y

. s! |0 c0 g0 C5 `' Z. I        /* Unloads the Image Explicitly, via an Unload Dialog */
; {2 {$ w8 [& t- E        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
* ^6 h3 m! M) @% l1 ^4 y* K# U$ ~$ e. `/ ^
        /* Unloads the Image when the NX Session Terminates */
! O# k5 `6 _; s: I) y. T$ _) M        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);# n" B/ B: A  d: l
    }
( q: C/ {; l  |$ y}[/mw_shl_code]8 ~0 K+ Y+ v- j" ~; @9 t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了