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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
, K4 k# U6 P8 ~/ I* ]+ a0 b4 |  d4 V+ r1 L3 H4 D/ {
[mw_shl_code=csharp,true]using System;' U! I* o- R4 Y+ X0 U! i- `. o  T' I
using NXOpen;
3 u$ A0 P: H, ~- e$ rusing NXOpen.UF;+ M9 V2 K+ }, W- l, z2 Z
using NXOpen.Utilities;: d5 U5 k4 B* d) n! i# `* U6 }
using NXOpen.CAM;
4 ^  _& t4 J  fusing NXOpen.Assemblies;
' r( _5 t) I2 ?) Z5 i
/ B6 f0 a, P/ `8 m# i! O# r7 ]) ~static class GetSubTypeToOperation
( o; H) F4 s, {! ?" w/ o4 \* e7 n{
7 K7 J- Z. l& N/ c8 G    static Session theSession;
# X7 n( g7 V8 R! _! x7 v    static UFSession theUfSession;
! q1 f( Z* h& L. B: `    private static UI theUI;# k5 R  `6 L. T

7 N9 c* r8 w1 R+ y/ b  C% V    public static void Main()
- N6 t  p# D* ]. X9 o    {
# u* U% ~/ w2 }        theSession = Session.GetSession();6 u+ S4 m- M9 k# d2 P1 V% _
        theUfSession = UFSession.GetUFSession();* a) \8 F  k7 R, z6 b2 Y
        Part workPart = theSession.Parts.Work;& W4 I/ p& n* U% ?- {+ \. ]. `
        theUI = UI.GetUI();. S9 v1 G* E% @6 e7 M5 q

! n+ ^5 m, B: T, i# X        if (workPart == null)/ O. M5 f' J1 n  P8 R! D$ V
        {
* L# {7 s! o5 O5 M2 h. R& C4 ~- ~            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");  g' W1 R( _* n* G& M% g
            return;
4 j# G" ~, ~7 r5 ~" p# b        }
. T0 `6 F1 d+ E7 }; z0 ~7 O  K2 g5 D$ T4 Z& Y
        theSession.EnableRedo(false);/ k. e0 V: x+ f
; l/ S9 h; \. D7 U+ P
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();" h) w) g& h0 T- Q  j

/ v# @8 i* ]+ n8 M* T! _; U8 r        SystemInfo(theUfSession.Part, workPart);: n. L' r8 e7 Z

1 ^# q  S5 U$ O        try3 j% u1 x( O: V2 K6 m$ x' y9 r
        {4 \+ X. v8 }) A
            Tag[] operTag;
2 V; [; ?9 i& j  j# ?; g            Tag setupTag = Tag.Null;: ]8 |! N1 c6 d. I
" l  Y# M0 X4 F
            int countObject = 0;
4 w" c4 V4 |0 _6 z% }7 c2 M7 h% A+ a" ], B0 |8 f
            theUfSession.Cam.InitSession();. Q$ l$ ]  m* r" e6 I8 A) q% p
            theUfSession.Setup.AskSetup(out setupTag);- h9 f( C) Z8 r" p  x7 _& T  w

1 J+ B8 F' B+ ]5 B1 v$ l9 i- Q/ F            if (setupTag == Tag.Null)
. _; _" x) n, g7 U8 y. D5 M5 s            {
, g& w6 h" l* v( B- s                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");7 U1 M2 N/ q$ ?$ x0 m+ r6 j7 _
                return;
0 c6 E! f) g. B7 S; @            }
% n+ Z  B; e. y, \; w" T1 q' B
. k9 c2 O2 ~( J9 b! n( X8 I3 X            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);0 w9 w7 W7 t& K  e& k$ i2 K6 c/ g) W; D

6 j* J& }$ }  \% o* M            if (countObject == 0)4 b) h' y3 B! _9 g
            {
9 e. z8 `& I9 P1 R                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
2 T& x5 A  i. u: w' E% J  ?7 ^$ {                return;* S3 P6 W) t! r$ W1 M
            }
% X2 ]" h  w7 T4 V* R& p' v/ A9 f8 p! {- G2 A
            for (int i = 0; i < countObject; i++)" Z  y: l9 T! p* l
            {9 z. H( G5 t% y6 H7 Q9 j! `
                int type, subType;
2 L; q( Q# Q7 s7 O) F- ?6 F
' C6 _& G1 @# M2 }                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
0 H; E; j! C4 h. L) |9 P' }. `1 x5 A, i
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
$ n* ^: r% i  `. `3 ]: K& C6 ]- I6 I
                if (type == UFConstants.UF_machining_operation_type)/ |6 Q4 w5 u3 g& i. A0 w
                {
% x9 [0 S: {' a. o* m+ I                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
0 \! n) D! y: O& l9 p4 p& A* O- w/ N: Y7 J
                    GetOperationSubType(operation);
. G0 b% [) a2 g, V8 W% {. P* L% K" L9 y& p# u( j! M
                } /* if type *// \  c/ y8 x8 w- z' e
            } /* for int i = 0 */1 t, J3 }: q  C  m( @1 s
        }
: C2 T4 o$ F+ O6 ^* A        caTCh (NXOpen.NXException ex)0 L$ t, v$ ]; k/ V
        {$ B& ?5 n: \, j& I6 Y& x; s4 t
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);3 k3 a% X: E- ?) J
        }& f, b0 M0 b6 n' Y: j- Z
    }
2 Q( c7 [9 J# d- {, a# L1 Y
) ]8 o2 ~9 ~7 H& W! }8 {
1 O7 V4 B$ o; R, T- x+ W    /// <summary>+ ]8 L  z7 b" E! ^
    /// Retrieve the Operation Subtype3 o  H0 j0 d/ x8 z7 Y
    /// </summary>& [; I! y, t5 X' o/ K* U6 D
    /// <param name="operation">The Operation to Query</param>
! _8 Z$ F7 i# U8 S+ B# ]    /// <returns>Return the Subtype Operation</returns>4 q4 g1 d) U6 |1 r
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
2 s- O3 H" V, U8 K    {
4 ~# d) ^1 K0 d. h. o9 e! F        if (operation == null) return -1;, r  g9 {' m4 j, i( c- g: d
/ Z( s1 ^( t# ]& e) b5 {. a
        int type = 0;6 v: W# k& m4 y$ y9 E
        int subType = 0;* c' S4 Z( T  g
6 f  x0 Z+ ?' o6 o5 l9 n
        try: F, X& Y3 S2 M* [  [9 L
        {  ^" c3 z7 |8 W9 ~$ R8 q
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
& _, L6 G( U9 q$ f            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());. i- k  r' m* r" A/ O
- V5 q7 \9 o+ ^( u" e
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/2 P" \- k$ Z4 v- e7 q8 S5 {9 i
            switch (subType)( i  ~5 h0 |2 p8 O! v/ g6 j4 \
            {2 _& i/ @+ i# m
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */- I  @1 `. X  H2 h* o" R
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */0 z/ A- v  v3 Q0 q+ ]
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
' P% I+ K8 Q9 }' D2 b                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
( y& r" ]+ A. [3 R" v/ D                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */, e8 y5 v' `# [
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */& k+ S, Y; h4 x* R% z
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
3 T9 R* ?" E2 P                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */( D8 U$ j( K7 D9 _
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
- i' @2 j# I" A# I+ u5 l) A                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */6 @) W) Z: f( `, ~9 X, ?5 a; ^6 Q
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
( Z5 F' h* h' M' |5 p/ Y0 h                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */9 s$ t9 U1 j0 s$ o5 q
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
- J9 f, g' V+ l) A                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
! \2 d+ I7 y+ x$ J( ^                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */9 U8 J! T* ]& B4 ~2 s- t! D+ t
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */% j0 J' w# ?: K6 I1 H7 F7 a/ [1 z
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
5 K* H- i/ ~: V) s) }                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
! I% b6 q: c/ x5 C% Y% G                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */, v* F, a2 f  g
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
# H& u$ b- a& ^9 ~3 P                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */! N3 L. V3 W+ ~- ^
' G& J$ F2 [- V. c3 V: x% h
                case UFConstants.UF_insp_tolerance_subtype:: l5 {: D. o! D* f" \
                case UFConstants.UF_insp_path_subtype:( w" `4 m. {( c1 c1 ~8 t4 W
                case UFConstants.UF_insp_output_subtype:
& B1 v- A4 ], b) K' L7 K& x                case UFConstants.UF_insp_misc_subtype:
0 `% Q- `! i+ n. Z# m                case UFConstants.UF_insp_align_subtype:
+ l5 A" M2 P, H% O: u                case UFConstants.UF_insp_sensor_subtype:% Z. a& O4 w0 [5 o1 u6 d
                case UFConstants.UF_insp_construct_subtype:! l( [5 O( B0 B
                case UFConstants.UF_insp_bounding_feature_subtype:
( ^4 \) a! r1 X% R1 U, n2 O                case UFConstants.UF_insp_feature_subtype:( s# P+ p, v/ K8 w5 u3 ^/ G

0 P6 J4 o4 L6 U# Y                case UFConstants.UF_mach_canned_cycle_subtype:
( n0 Q& [( y; p% ~7 d3 L, }8 \% v
9 t3 ~$ {8 O' H9 Q; ]. f/ ]5 y# ~                case UFConstants.UF_mach_laser_teachmode_subtype:
1 M1 d, n7 z4 j- X1 u# E; j1 O- T, x6 S. p8 _7 u5 r
                case UFConstants.UF_mach_turn_roUGh_subtype:
% T, Q: e8 U2 w# [5 _* r# e5 F                case UFConstants.UF_mach_turn_finish_subtype:2 x$ E0 c0 T2 |7 m& N( ]
                case UFConstants.UF_mach_turn_teachmode_subtype:' B5 ~0 Y+ S7 b+ y) s
                case UFConstants.UF_mach_turn_thread_subtype:$ f, D$ Q2 Z3 D- X, @* E# ~
                case UFConstants.UF_mach_turn_cdrill_subtype:
( b) U; Q$ k7 ]! A                case UFConstants.UF_mach_turn_auxiliary_subtype:
* {* @4 _! _2 l3 U& x# O                case UFConstants.UF_mach_turn_probing_subtype:
7 C) b3 ^4 C3 s; O: F, J                case UFConstants.UF_mach_turn_tool_probing_subtype:
* K$ B: }! ]2 T1 ^8 Y; }5 e; o                case UFConstants.UF_mach_lathe_mc_subtype:
! a2 p% k5 }1 f5 P) J# J* A                case UFConstants.UF_mach_lathe_ud_subtype:2 y/ @  Z  y" g  b
  _! {9 j& J% N) H1 [2 k7 K$ F
                case UFConstants.UF_mach_wedm_subtype:
. w" q" ]" N- x' u( M- _                case UFConstants.UF_mach_wedm_mc_subtype:
* F# r6 \1 J3 u1 b2 y                case UFConstants.UF_mach_wedm_ud_subtype:" d* V3 c: Z( q. y4 X6 j1 q
                case UFConstants.UF_mach_mass_edit_subtype:
- b# P1 Q  x8 D- Z1 U                    break;
0 B7 r2 P; C% F- |& F
' U$ [7 Y$ E% N& E+ e                default:
$ V, O: Y- A# s+ h) S& P7 ~: s8 \                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
" u7 `4 k5 F1 W' B0 d                    break;4 G1 L: W  l) k
            }
% e: n7 K) r$ f        }
3 |7 X/ c$ w- Q  S. Y; U        catch (NXException nXException)
  E& K: m5 p- l/ c0 [. b* ?$ D5 z        {- m1 v: t  j2 `: _, }8 n
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
1 q! d2 U+ N$ i) S% n3 G4 \# x            subType = -1;
: P% j: ]* E' @        }
; N( [' \- u: H' x/ d
# V% A7 x# `/ K- F! i        return subType;$ a$ c0 y( f) Y; [/ p
    }
8 h% O8 H& L3 f* P; ^$ R+ F  m$ F" a/ T2 ?* ]+ j+ H
    /// <summary>
' W& F$ b6 z) _    /// Display System Information  K$ {1 r  e7 x+ w! `( g
    /// </summary>
) A( b( A' H. i* ]1 b5 m    /// <param name="uFPart">The UFPart to Query</param>
% |; C5 k# \% q% I1 {9 l: y    /// <param name="workPart">The Work Part to Query</param>
* G' Q% E) u- ]    static void SystemInfo(UFPart uFPart, Part workPart)
6 v7 p( L0 _) z    {6 N2 Y0 _+ J/ h: C4 @) e& s
        try
  V0 i7 Z3 ~1 b' x9 l4 E! q& V8 h        {  p6 `* l" \4 Z3 ^9 q( i1 j/ F. A( L
            SystemInfo sysInfo = default(SystemInfo);
/ g0 e; L4 X7 X3 I$ \& C1 C            theUfSession.UF.AskSystemInfo(out sysInfo);/ z+ @) [% ]) }! m

  T$ a: X& k$ Q7 C            string partName = string.Empty;
* X& Y% G& a& K6 i            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);' z5 {, M: m( Z6 b; [
( A9 l8 Y' E( j- V" ^9 v6 {
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();3 s8 i  o5 N. H5 l4 [, Q
            theSession.ListingWindow.WriteFullline("============================================================");. L1 }" @; n" H6 ^0 q) n
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());. |8 C/ i2 N& u* W. l
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
" J- s/ m" C& }* R            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);$ W+ c& N) k2 t0 z" ?+ x3 _* k
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ ]) O& F+ j( p* r
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
0 z) S0 a" d+ B$ d. q        }
- t  x/ ]$ ?" p$ j( Y) h# V6 Z        catch (NXException nXException). s# B, v, y4 p
        {
! ~9 K6 j! w- W; {            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());3 n$ n; J4 N# b3 L) e5 E: H
        }5 t% c: G' q* }- n, r9 F( u; ?4 v
    }. r) |, ]- W6 P( E5 k/ X5 q
9 o( i. R4 ^$ Q% p# l7 A
    /// <summary>
3 e1 R* Z: A" t    /// Unload the Current Image
  d) k" a" H/ W: m' S2 Z    /// </summary>
, \5 Z2 Z( b& M, N9 o* D+ S3 d    /// <param name="arg">String Send by NX</param>
$ h: b0 i# K2 c& h$ m    /// <returns>Unload Integer</returns>
( [. S0 g9 \* _% W; M    public static int GetUnloadOption(string arg)
: g  Q5 o: _+ n    {
, D: g: |/ y6 |3 s2 \5 `8 ]/ o        /* Unloads the Image Immediately */
( o+ j, x6 }0 b        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
  k2 ~6 {- c' U/ [
5 Q7 e! {/ M2 L        /* Unloads the Image Explicitly, via an Unload Dialog */* n5 h  u+ K, l+ j  y
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
# H4 q; g, ?5 [- v
1 f6 M+ C) T' D& }( t" J$ h1 F  y        /* Unloads the Image when the NX Session Terminates */' Z% p  j# h8 I2 a  u3 Q
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
2 d( ?6 u! j& w6 x  U, ^, ^    }
; ~! _1 U: W3 U6 ~% E  Q}[/mw_shl_code]
$ X' g3 x, W, V' M. F+ w' W1 {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了