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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
7 m0 [, M' P4 D6 s, |; n4 P
' q# [+ M# W5 F[mw_shl_code=csharp,true]using System;5 e) B7 `& }. b5 e  U# {, H
using NXOpen;  i0 |) o! n. K9 H3 w! q
using NXOpen.UF;
1 Z) `/ M5 ?( ~* e8 Dusing NXOpen.Utilities;4 ^& q4 V/ B6 S9 M
using NXOpen.CAM;
1 J6 e- o' N; kusing NXOpen.Assemblies;" L. H9 Q7 b% t2 `1 O* }
  x$ z; _0 W- \3 o1 T7 ~
static class GetSubTypeToOperation
+ b  u8 @; ^7 ~, G2 m{
  |' J  `' r; D  Y* T+ w    static Session theSession;
2 G8 ~; ]- ~( M9 o5 i5 V    static UFSession theUfSession;
# V9 G9 l# T9 r4 c    private static UI theUI;
! A/ k4 t. _( z7 \2 {! y; n( Y4 O+ f9 ^* S
    public static void Main()
/ S4 E  F  I5 P' s' I    {
0 `% Q$ B: X( F) q        theSession = Session.GetSession();
4 T6 A" A& f. J' l3 I, }        theUfSession = UFSession.GetUFSession();
/ v+ z# M  C* x$ F% b, W        Part workPart = theSession.Parts.Work;1 g$ i5 F2 j: l6 L$ B, h
        theUI = UI.GetUI();
* z5 e* w& C0 t! d; [8 ~+ P& \  v5 ^  a) h1 ~  m3 Q1 n  p
        if (workPart == null)
7 s1 k3 [' [( G% z* y# Y+ E        {
0 L& g! i8 I9 o            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");, ~: }9 K% i$ @8 [2 E
            return;) i' W5 x* R0 d% ~; F3 \* T2 @8 ^
        }
# c6 ?3 I( g4 k8 h$ i, Q1 w/ L# I3 Z, `& j6 z# p- a
        theSession.EnableRedo(false);; b. G, v1 c) k8 t- h- w2 E0 D
1 Y$ z- j6 q+ z$ g4 p% T& j0 c3 k
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
3 n0 q+ p- d/ ~$ r: m7 K# P+ {3 _( V* p. R- k
        SystemInfo(theUfSession.Part, workPart);4 J( {" Z, _/ Y. ], E2 E" l, r% H9 ~

6 B0 R/ B+ M8 Q8 e2 Y6 Q        try3 Q* N  {# f, [8 S9 E5 t& \- ^
        {
# s* U" z$ t: @9 {            Tag[] operTag;
9 d3 e8 {3 [& }            Tag setupTag = Tag.Null;- D, O# d5 r7 Q/ L# d4 [
7 N& g: d& ]! i- P& S, t. f2 j# s
            int countObject = 0;
3 s* Y) {$ p9 {! x; V. Z& y& k- a* P* L; V- R
            theUfSession.Cam.InitSession();) U: \5 l3 n  Q# D( W0 G  D
            theUfSession.Setup.AskSetup(out setupTag);& u6 ?# q7 @+ X) g2 y4 ]
$ c9 V: `5 @) ^# }/ p* a
            if (setupTag == Tag.Null)
, r3 J# R% |1 u7 p  u/ ^/ Y            {* }, W& y9 |' x# T2 r8 P0 q
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");+ S* q" U+ i# P, L# u' U
                return;4 O7 g/ `7 z6 {2 s
            }
1 O( m8 T- e1 A2 w4 ~
6 y+ d- o; J3 `            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
3 C2 S( I; m% b0 Y5 _3 R, e- J0 I( G
            if (countObject == 0)% M. A! N9 B/ d3 V& D8 E
            {4 w7 T, E* G9 o) [7 p
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
4 Q+ }6 S4 N( b4 C% {7 S                return;) C) x: R/ D) Q
            }
) I9 X. s+ Y# T3 M- D, X& ~- L
& |* n1 X- L7 x2 s7 h            for (int i = 0; i < countObject; i++), U8 a/ M, M' b4 {$ `2 P' h( M
            {5 ]6 e% G: W, q# h: g, c* g
                int type, subType;
4 E0 a% |2 W8 A3 e7 g* W
5 f7 c9 l$ A" l& B/ \3 N0 a                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);5 }2 J  a- N1 ]# k

2 e) ^" M$ G0 X2 a6 W0 q                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
0 \% J. |. l! }& F$ ~0 N- x& h5 Y6 J# }; J% Y  i8 M6 V
                if (type == UFConstants.UF_machining_operation_type)
" R; G" D  N# _                {
9 A5 {+ \/ L* R1 q" G                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
2 W, r, }* ?4 o3 t, X- ^1 v2 m: m) q
                    GetOperationSubType(operation);
1 `* e  {! i$ {  l1 \8 c: N: q# x- ?. B  ~$ K: q9 X
                } /* if type */8 e/ x  v1 G3 t2 m4 V
            } /* for int i = 0 */
+ U- b/ X6 F# z: ~- a( t1 W* F        }8 z+ l$ U" n% J8 t$ D% j& A$ E
        caTCh (NXOpen.NXException ex)
3 _" v% X+ z$ u; f7 b        {
( k. k& ^2 u/ W: ?            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
1 @1 U3 I# Y" [( ~        }
$ C/ F1 P) B1 X! B4 b' r    }& ?* d7 n- [& u# D+ b7 g" X

, y7 p3 ?4 _# b# q3 i" |' |* n  O
4 c5 Y7 T; }7 u$ V2 F  g    /// <summary>
: C* n; `* o$ p5 K4 p8 E    /// Retrieve the Operation Subtype
4 @* B- x0 D$ V3 h" ~1 S5 F    /// </summary>$ f0 I, _4 U. |/ d7 o  l
    /// <param name="operation">The Operation to Query</param>
; D: e+ J( \4 g1 E: y8 g3 `# {$ c    /// <returns>Return the Subtype Operation</returns>5 Q0 K4 A1 ?% J2 @2 l4 M
    public static int GetOperationSubType(NXOpen.CAM.Operation operation): {9 t3 Q: i( w2 L/ c" d; C1 z: B
    {
: e! y7 ^9 `9 f$ C( }+ F5 ~; ]4 }8 s+ B        if (operation == null) return -1;8 |% T$ O% A9 _& [- x
$ f, }: F/ O5 {4 g+ |4 [
        int type = 0;
. Y. `! n, c8 V0 R$ n/ k        int subType = 0;
( m. ~- r# |3 N0 z; W2 ~
. L" u8 J$ H1 d, r9 e" R        try- `& L& R& K& s* V0 L
        {9 L+ L: y$ x) B# ^2 Q0 k
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
* j% E# x; J' ^0 T1 }4 U1 u: l9 q            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
1 A- h  |1 u8 L# g; B' V0 S4 Q/ t+ b0 l. O9 T  Z0 j0 C
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
5 G+ K& c/ v; F0 t% o4 V; e            switch (subType)
. u5 b% K+ J+ r7 |. n( ]  |            {9 \/ R$ J4 t; l6 h
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
7 _$ C, `/ \7 m1 ~. K                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */$ \7 g7 a1 s8 `" v/ W4 \% a
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
$ r* q* ~/ W5 h9 T' w  }6 h5 w                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */: z$ j# V+ z) K" |1 M6 {3 ~8 d( f
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */" W  u7 F; K9 u6 [. X; W
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
! o1 o5 t- I, E/ y9 @* c! Y* g                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
7 B6 ?* ?" Y1 ^7 _, x; J7 L: h& h                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
! C' L  `) j4 b6 D" s2 w2 G  h                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */" t- E$ n/ }. U0 \! O
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */# I. h1 X" c% W+ f# V+ v& S* R4 k. ^
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
) X5 O3 H/ y! C. A                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */+ a8 _, ?; ]6 W5 S
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */2 _, z: g+ M% B/ J, o0 X! _7 R
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */1 `' i+ E, [  E
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */, {! H% O) L  `  @
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
3 e  m7 x. W  m" t9 ]2 ]+ l* ~                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */! ~" q' V( J: z* j+ T
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
! k, T; l$ C4 L                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */' G  e$ j( Q" X
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
3 g& d, @$ a% e/ q; j! d                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
! Q, H1 ^) P2 c
. l0 v# N3 z* @& ~7 [                case UFConstants.UF_insp_tolerance_subtype:
# G. ^* y2 B# x5 P; s                case UFConstants.UF_insp_path_subtype:
' X( E! W; \# k1 o- X% ]: K8 ?                case UFConstants.UF_insp_output_subtype:
$ Q- ~$ ]/ \  ~2 @) V                case UFConstants.UF_insp_misc_subtype:
# e1 d5 C5 G0 x2 G* h- z1 n                case UFConstants.UF_insp_align_subtype:
+ Z( L- K9 E) y) B                case UFConstants.UF_insp_sensor_subtype:
3 z8 Q" {4 p( r4 d8 ~1 P1 Q! f                case UFConstants.UF_insp_construct_subtype:" N9 S4 h0 W* Y1 Q& T
                case UFConstants.UF_insp_bounding_feature_subtype:
: U3 e/ y9 X) [4 ~: ]: F3 c! E* W                case UFConstants.UF_insp_feature_subtype:
2 p. V7 l. j) [4 A& q; b
: E4 o' G( |2 K5 l                case UFConstants.UF_mach_canned_cycle_subtype:' w5 J8 l! l: X8 Q0 u

4 L; @' p+ Z/ T7 Z  t: ?- S                case UFConstants.UF_mach_laser_teachmode_subtype:2 o* R9 e& h: Z  D

+ o, Q7 f3 W# O5 @4 T8 I: e                case UFConstants.UF_mach_turn_roUGh_subtype:! y0 S. Q: y' d! ]
                case UFConstants.UF_mach_turn_finish_subtype:# d: w! j2 w) B4 X1 ]- x# e2 M
                case UFConstants.UF_mach_turn_teachmode_subtype:
" W( T! y+ ~( S5 r  p8 w) Y! }                case UFConstants.UF_mach_turn_thread_subtype:  Y0 c1 [% G- \7 S
                case UFConstants.UF_mach_turn_cdrill_subtype:
& v( R5 \. v4 Y% O& ~# p0 k                case UFConstants.UF_mach_turn_auxiliary_subtype:
1 K7 X2 G& N( _/ C/ I                case UFConstants.UF_mach_turn_probing_subtype:1 N7 `  z6 P( a5 [: D
                case UFConstants.UF_mach_turn_tool_probing_subtype:
. Z+ ]  P+ A4 C9 r9 @* ]                case UFConstants.UF_mach_lathe_mc_subtype:6 r( p$ @3 a! f
                case UFConstants.UF_mach_lathe_ud_subtype:
1 G; U! v  j7 ]/ S- m  H+ F! Z7 z4 g8 p! w( u8 D
                case UFConstants.UF_mach_wedm_subtype:
5 X1 e' X2 v' W* c. C" R                case UFConstants.UF_mach_wedm_mc_subtype:4 @5 n( ^! B( A1 @: D$ ^
                case UFConstants.UF_mach_wedm_ud_subtype:; [/ R8 v" P9 `. w; X
                case UFConstants.UF_mach_mass_edit_subtype:
: t: `8 r7 R, Z! g( Y7 W3 }                    break;
* Q8 }# e3 J: Y, }# F' C5 s& P! {$ l/ F
                default:
  D8 Y+ G: ]" o& F8 ~) j# a                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
( x8 ?' U; W6 P. W1 D$ A5 S                    break;
( h1 ^. G- t( v0 }: Q7 j/ s7 I            }
1 O% q- ~* Z" _* a$ q# s        }
* ~# F# ~, b' F        catch (NXException nXException)& ~0 {7 T( f0 D7 t* L
        {) ?4 A9 s, a' _  F6 x& ]- }
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());6 S- m0 j/ Z+ D  H
            subType = -1;  M3 \+ P2 D, j' X9 g
        }0 k) `( O! \3 L# A% @
, W( |1 a, R- F3 {  A; z: ^
        return subType;
  p9 ?- o8 G1 j& y9 [  c) H  m- }    }: V, v4 b. Z8 F5 {* s
3 s6 K2 M, T6 E9 M3 N9 `/ T
    /// <summary>
5 H! P$ \7 }0 b1 |    /// Display System Information, w( @4 B6 L8 K- S
    /// </summary>( B! R) [+ n7 @
    /// <param name="uFPart">The UFPart to Query</param>
# ]: O5 J. K( u1 m! |    /// <param name="workPart">The Work Part to Query</param>
& |% P# P$ H8 w7 Q2 T# Z) r' \( P    static void SystemInfo(UFPart uFPart, Part workPart)
6 T+ I1 L  ?1 S+ v    {
8 c+ p2 ~0 P0 d! X$ s! k        try
# S9 Y7 G/ ]& O' f/ q& E        {0 Q2 X7 y' n4 F' G1 S1 R3 F3 R
            SystemInfo sysInfo = default(SystemInfo);# w; R  D! G2 ~& D) \
            theUfSession.UF.AskSystemInfo(out sysInfo);1 K0 `: o& p" O  V  g) o  s: Y

. e/ C. j& K3 c7 d! b1 D4 G3 j            string partName = string.Empty;
  v6 `' f9 |, f& k/ D4 h            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
3 ^3 u6 [! L5 d  V3 g& F, t
9 D) |5 p8 I  U- f            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
2 q, z. @$ o- E, k) s6 h6 G            theSession.ListingWindow.WriteFullline("============================================================");
9 s. N/ H2 V% t9 U            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());% t& h% A: e, x8 A% g  G, z' P
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
. b- |; ^+ X! h$ J1 G9 @            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);$ W$ o$ O2 ?/ T) P7 J! K) D1 u2 z$ ]
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());# U3 j5 m8 e6 H( {! x
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
# F7 J8 ]# }  E$ F2 c) u1 c* r        }& Y8 y. M7 U, q1 j* N
        catch (NXException nXException)' Z' R) ^/ U* |. S8 r7 W
        {0 E, D1 H! e9 k1 \* z
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
( e: u; c+ W' D; j/ z0 l( v        }1 l. y, V: R  Y9 T- W& u
    }
$ e3 A. c# K2 o4 q. c
& r( j8 C. A+ H    /// <summary>3 U5 P6 ?7 `; R
    /// Unload the Current Image
% |5 ?7 Y8 M% {& ?& T+ n, A' z    /// </summary>4 n- r6 i! I8 V- p. C3 b
    /// <param name="arg">String Send by NX</param>& n) a3 D' S/ l: U
    /// <returns>Unload Integer</returns>0 T2 w! V& \0 Y5 J
    public static int GetUnloadOption(string arg)
3 d3 A7 Y7 `4 \9 g$ a5 M    {5 x- Z; ^* x* C( f2 N2 ^, ^
        /* Unloads the Image Immediately */* P/ p& a: o6 L9 O! t0 d8 x0 S9 K
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);+ {4 E' k7 ]/ Y4 e- b' E! h5 J+ b

* m6 X' J( H$ B, O: O        /* Unloads the Image Explicitly, via an Unload Dialog */. W4 b  Z' @  O& n$ _
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
7 T- I& T* a" [; E$ l2 ~+ o
1 r! |5 s  Y  C* n        /* Unloads the Image when the NX Session Terminates */
& g3 y. w# e+ ?        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
8 B: U. p4 ^: ~" s5 R* D! b- Y    }
) W- h$ ^  c1 t& r- H+ y}[/mw_shl_code]
, g; `3 O4 X  P
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了