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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了: i. t+ _) i; p, `' V( F( S

: `/ J4 h2 f" \) f[mw_shl_code=csharp,true]using System;
+ y( R6 ?9 J; S3 b! i+ b, O) K' [using NXOpen;0 t; I. I$ |  _) n) H' N6 m
using NXOpen.UF;
) @% a6 @" v+ o. dusing NXOpen.Utilities;; h- Z2 m7 v; |' x+ z2 s
using NXOpen.CAM;
2 P7 I# S) V) qusing NXOpen.Assemblies;
9 h$ [1 Z2 N6 W' A+ e3 k' t5 w3 `# J. \% w7 H8 B0 Y& T
static class GetSubTypeToOperation" x; H6 U" D$ R# m  q
{
6 ?3 a3 q5 n7 \$ |# M# [9 }    static Session theSession;
; B# `. E! d) t3 f& d    static UFSession theUfSession;
; W. \. }0 l/ D6 F7 C0 x' j0 g) l    private static UI theUI;; x6 `" D; H5 t7 e; ]# q
  A% b) d* Y! R+ ~0 t
    public static void Main()0 r' t" }7 s$ V7 d; g! T% Y( c
    {
$ r2 O4 L; u0 [1 Y+ R0 j        theSession = Session.GetSession();
2 _/ [1 r, Q6 ?' C        theUfSession = UFSession.GetUFSession();* k+ H& x* @) E6 V! |8 s8 I
        Part workPart = theSession.Parts.Work;
# N2 v% f5 |0 r        theUI = UI.GetUI();
5 K+ C: a; q+ {3 M: t+ b, C$ E8 ?5 T9 V* G( I
        if (workPart == null)3 M* V( P! y: U8 ?
        {
( E/ |  R; {8 P. z' k! I            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");5 m! r. `% @( z! t# v9 W; X; A* x. D
            return;
- x4 a9 f  k8 N8 d        }. G1 I6 ]) n- q' }3 `$ ~
& F2 @' j4 i  G7 q- L* {* ^
        theSession.EnableRedo(false);
: y9 U6 f% C9 f9 [# a" r1 p* T6 j$ |$ ]: B) \; S* W7 Z. A
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
5 i! `1 L% B' h, I9 F8 v5 b- a# I6 m- z" F/ I- [
        SystemInfo(theUfSession.Part, workPart);
+ ?" P8 ], i: f& a! X9 L
. h" O2 [6 K: J# J( J* j- J3 ]        try
. N' }- |  C5 o! b  Z- w" M        {5 }* |3 L3 j4 V4 W+ x6 d; V! C
            Tag[] operTag;
  N: s. Q( p  x! s) i5 q9 m; s: h            Tag setupTag = Tag.Null;3 t0 E( {$ a- I( C" {. ~* l
1 i( z& p5 y# S! j2 j
            int countObject = 0;
; x! T* |0 \5 a! a( h
# K/ n3 x7 P" P  b8 J            theUfSession.Cam.InitSession();: K" X& C4 L" W9 ]) @8 m' w2 \3 K
            theUfSession.Setup.AskSetup(out setupTag);$ i' K# [% `8 C& E1 d; V, n  R" ~
9 G2 T  x" C- G) ]6 v
            if (setupTag == Tag.Null)
7 s2 m! q' s9 }            {
( x" ^' v$ E% _' y                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
0 o1 n2 \. f) Z: A                return;6 W* N% P2 m) R; `+ Q. A* r
            }
& A, V  N, ?% T% r
" {8 y3 R' l0 d" G            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);. b4 w- }7 _1 X; b7 s3 I9 |7 R  z2 \6 W

- H- [% G0 a; j. f            if (countObject == 0)
9 P0 e) h. E& z            {$ W" p8 `$ {1 {) S9 u. o& l) t
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
6 [5 ]+ u1 Y- i4 p                return;
" k, n6 W( E9 T) j9 i/ i! ~) z            }/ f7 ]* R. r& }
! S( h; \' @" _+ x
            for (int i = 0; i < countObject; i++)/ P# u( X$ _5 l+ i5 `2 s- ^
            {& E7 \; J2 R3 ?/ y
                int type, subType;
4 [2 |, {; U0 H* j  W' c0 N) _6 z% l6 m& j
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
% f7 V* i* p6 Y# L  C7 N1 m2 |0 _( u' r
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));5 z2 e: G# U6 p7 n. M7 N* W" [
" r7 M  [; i- |/ a) d0 Z0 [0 }
                if (type == UFConstants.UF_machining_operation_type)
# p) f- D  M, A% e                {1 r; w6 t7 m+ |6 V/ m- n: I# W
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));$ U" O, l7 _( f9 ~
, o$ X# h1 D) Z0 u
                    GetOperationSubType(operation);
* Y% \5 u) z9 u! T! A0 ~- s
+ X4 p" d0 P" U+ w) j( W: j                } /* if type */
# }, A) a9 e% ^            } /* for int i = 0 */; V  o: Q* i# L/ R
        }+ q& c+ C- I/ B- e4 q
        caTCh (NXOpen.NXException ex)
' a, z5 \, y, T! ?- H4 F        {
1 z: t9 ]# m1 U* X( d            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
8 D9 m4 [' D/ T# P) V6 T" o7 r        }
: j& Z3 v" R1 i! a- ^    }
2 c0 [$ p/ c7 v$ ^( g) Q$ j# ~$ }" W) Q  a
# X3 j" B' ^- G/ M- p! ~
    /// <summary>7 S' e8 C3 d, \  l* n
    /// Retrieve the Operation Subtype
5 E; Y$ g  u! ?4 N    /// </summary>
/ L! m, [5 m& k, q% E    /// <param name="operation">The Operation to Query</param>9 a" \- L5 L, g! l4 s  K" h
    /// <returns>Return the Subtype Operation</returns>) A6 c: l( @% M# d7 E2 }
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)8 P- \( X2 w+ k) }2 e( ]
    {
# N) G# _3 V. z- }- T' y        if (operation == null) return -1;; `: ]; w" x. Z7 P* d

7 {9 A5 G' t) l! R+ c4 w        int type = 0;
" _: l+ C+ I; f  T: }. M6 ?        int subType = 0;2 |8 b& c* b% m7 A
# u; l* _6 D# |7 _. v$ L* _
        try5 |& G- w+ u8 L" U: ]: ~% {
        {
; \6 b! P/ R4 N            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);- L: j2 N% Z1 Y4 K
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
; q( z1 I! X% S- ~- r" ?
$ _# i3 l. ], Y' F' Q            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/9 v0 `0 B! |  S( L  c- y
            switch (subType)% I) I% B& G' ?- |/ |
            {
+ u) Y7 N3 s' O) B; U# |# ?3 `6 @                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */. P+ g3 s' u1 }% i$ ]
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
% j9 i# @7 d% F$ P8 V6 v                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
! P* P/ Q4 g6 F                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */% q0 \( [0 S7 e3 a; q4 w
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */! ]. l' n9 d2 I$ y
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
6 D1 x) `) o5 |' W                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
" h' a+ Q: U" w7 {$ q                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
( h6 a" v( Q! Z' K' l                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */" d- x. Y3 B6 n6 e3 R  F" u
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */! C0 e- V7 M  q8 p( R- N8 ~, z
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */7 k: X1 ?* Y8 T6 P: ]
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
4 p! a$ Q/ Z" k; L( \4 P, e                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation *// {% t, W  \* N2 j, |
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */3 K  [: O1 }' J2 b
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */3 q4 N% [2 k3 q* @
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
/ \. ^2 [1 [. _$ X1 P3 F$ N: X                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
2 m3 `( b5 f: V4 O: r/ s) G                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
6 G2 a+ i9 p9 A; E4 C; e# J, m                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
( x: k2 q+ K1 h) ^                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
6 j3 |! {5 O) L" O                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */2 `# T9 W- l2 F2 B0 `
* C3 [& v( l& g( T6 }! G% r- ?
                case UFConstants.UF_insp_tolerance_subtype:
+ x$ y6 K! _9 p( Z4 W+ u- O) v) `                case UFConstants.UF_insp_path_subtype:
$ p4 o* \+ p' o% s, s                case UFConstants.UF_insp_output_subtype:
' c5 [6 X( k2 Z% a' S% l                case UFConstants.UF_insp_misc_subtype:$ r: E' C6 A2 \# q; z  V
                case UFConstants.UF_insp_align_subtype:
3 [+ S7 a8 Q+ v  ~                case UFConstants.UF_insp_sensor_subtype:+ R( `  s5 `$ J( j- w3 U
                case UFConstants.UF_insp_construct_subtype:
6 I/ R2 a5 L+ H4 u8 C3 |: x                case UFConstants.UF_insp_bounding_feature_subtype:
  P/ \8 Y0 }' Z4 Q" P) |                case UFConstants.UF_insp_feature_subtype:
# C' {! {) B# q* G
: z' U$ n. M8 {3 x: A4 `% J' `( ?                case UFConstants.UF_mach_canned_cycle_subtype:; |4 u( Z2 N# v
1 ?3 [' N" r+ c5 K0 D
                case UFConstants.UF_mach_laser_teachmode_subtype:
* @+ T# L  }1 W& g. L) n2 Q) @& e2 Q0 z
                case UFConstants.UF_mach_turn_roUGh_subtype:
, _; F& g5 f; s, K6 Y# L/ ~8 {8 ?                case UFConstants.UF_mach_turn_finish_subtype:
( v' \6 M* J5 O% j- k0 }                case UFConstants.UF_mach_turn_teachmode_subtype:
; F# c2 x( F$ ~5 d! E% v% g  T                case UFConstants.UF_mach_turn_thread_subtype:) l) J$ r2 g1 I% U* [
                case UFConstants.UF_mach_turn_cdrill_subtype:
4 \+ H" `9 x# f0 D. A) X                case UFConstants.UF_mach_turn_auxiliary_subtype:1 T2 D: Q" {3 g9 _
                case UFConstants.UF_mach_turn_probing_subtype:
7 G: |% Z% K5 l8 V, x/ x: q4 N                case UFConstants.UF_mach_turn_tool_probing_subtype:# V6 g' Q% M3 F3 ]5 X
                case UFConstants.UF_mach_lathe_mc_subtype:
+ h! ~& M+ {7 Y1 }                case UFConstants.UF_mach_lathe_ud_subtype:
+ H; e/ s3 z" z% c+ w
& f; |, x' b) [9 v: f8 V. X                case UFConstants.UF_mach_wedm_subtype:$ l; Y3 {8 o* z$ f" H+ t1 H, `
                case UFConstants.UF_mach_wedm_mc_subtype:
6 D) b# M3 u1 _6 z$ w+ I) U# G# Y                case UFConstants.UF_mach_wedm_ud_subtype:# P1 v- Z/ [3 Q1 [: C9 N3 \
                case UFConstants.UF_mach_mass_edit_subtype:
: C$ h% X6 d1 ~$ N; h                    break;, ~  c( F3 x6 [) |; d! o0 l; n# f

3 C. G4 D* J" ~$ L& {" c                default:' ^  V7 N" m: ~) Y- g9 |+ ~# e
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");3 s! P, J: ?& G! I: U
                    break;+ B' G- A  t0 ^
            }
6 k3 q0 X! M3 j2 x        }- `1 m( _4 {" o, A9 V# z8 f& z3 \
        catch (NXException nXException)
9 \& t. ~  C- _        {4 B6 _+ l( u' a: O- ^
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());& b: C6 D% T, ?  V) f( `  W
            subType = -1;
2 X5 d7 ?8 B( o- o        }1 V; E- \# l5 P0 m  w) j; _2 F% Y
- w! g8 }* C% }4 T( Q
        return subType;4 Q# B6 R7 T7 G# w
    }+ I! s4 z: W( _+ `; d  x! P

8 v7 C& l9 C9 `    /// <summary>6 @3 H# H+ }) F0 m
    /// Display System Information* S( L/ Z. b0 |" F( T' A
    /// </summary>
. A4 F- k& a8 u9 W; d    /// <param name="uFPart">The UFPart to Query</param>) c2 X$ G/ ~- c& O5 N* s6 }/ D9 x
    /// <param name="workPart">The Work Part to Query</param>% g4 b, E' T1 D( I
    static void SystemInfo(UFPart uFPart, Part workPart)
% y4 L2 e3 V2 ]+ g    {9 Q/ Z# V0 s. v8 h
        try
: R' W+ {+ Y3 n        {
$ r4 g0 i6 Y4 y5 c" e9 t            SystemInfo sysInfo = default(SystemInfo);9 g( ^' ^: v' ?2 B: v
            theUfSession.UF.AskSystemInfo(out sysInfo);: |7 v" P5 P) O! B& v# [

& e7 t% B0 y9 a# U1 S- Z            string partName = string.Empty;
, q& m% w' K2 g            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);; ?; {, y0 v" D, Z6 C: \0 w

) r: Y5 S5 T6 G' @0 u            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
3 x" ~3 X0 t$ G+ M            theSession.ListingWindow.WriteFullline("============================================================");$ {  I3 B; o0 f3 ?2 ]3 a" W: ^
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
1 v# ]3 z  {/ m, E: Y            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());- u7 Y# N; Z' x& y
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);' Q) f5 w6 {) b  j
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());3 k# ]& J5 d: _$ F4 n7 I7 ~
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
: o$ _$ V3 S( t6 B1 M! Z        }% y: q2 w! K, C$ e; Z) z
        catch (NXException nXException)
3 p. S& ?( j# _: X        {" @! V' V- j' N. n0 N7 a
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
# {+ T! V. H1 o! R0 @& {        }' }! ~1 i, W4 g: t6 o  @# U3 C/ b( N
    }
$ ]5 n9 `0 N  T7 P
$ h, E: o7 h% C4 Z5 g: o" d2 c4 d    /// <summary>8 m& ^5 Z2 Y9 d" C! K
    /// Unload the Current Image
- q1 P# u5 m0 N1 a: D3 e    /// </summary>
# u% w- O9 `2 w9 E) C    /// <param name="arg">String Send by NX</param>) W2 e& E( @( P/ y
    /// <returns>Unload Integer</returns>& C7 s& A! d6 U& o# E) W
    public static int GetUnloadOption(string arg)- h$ b, f) _3 J9 y* d; G$ |
    {. [1 H) [; f5 {# o+ y
        /* Unloads the Image Immediately */7 p/ M+ I% y3 E+ F( J
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
$ H7 E2 E" o6 Z& h7 R0 E, ?- H. \( J+ M5 r3 I/ a6 g0 g
        /* Unloads the Image Explicitly, via an Unload Dialog */
4 F4 y4 M& w7 k2 d; q        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
+ M7 q  \2 h* u
/ C# [/ ]5 j6 C( ?        /* Unloads the Image when the NX Session Terminates */0 P) s' ?! h" X7 T9 X
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
' _! ~$ Y( }! z% p: {5 ?$ ~* f7 W    }
' `2 J2 C* k% O6 |, m}[/mw_shl_code]" y% f) @4 r" u: z8 R1 R
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了