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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了6 Z* R8 o% F4 I4 ]

6 `  O, ~3 \& a[mw_shl_code=csharp,true]using System;- c& `  E9 U* Q+ _3 |
using NXOpen;/ e& a: g0 D6 Q$ j( ~
using NXOpen.UF;
; q' {7 l8 ]& O; wusing NXOpen.Utilities;
) M  r  b3 O! x0 q6 e9 rusing NXOpen.CAM;. h! B; _, D& C! m- E, F+ h/ Z  x
using NXOpen.Assemblies;8 N3 i* z( u! w6 j. P% f# n5 K! t

* k1 h- i  c/ F; w7 ostatic class GetSubTypeToOperation! o, H6 Y' Q7 t0 [$ j$ A
{
- M% |: b4 X. ]2 Q' C. d8 x. Y    static Session theSession;" |$ n1 Y) M  \+ `) t% W! d
    static UFSession theUfSession;
9 F; y5 j" |9 b/ L- T    private static UI theUI;
$ D3 P4 L1 T! j$ d$ u& ]' X5 S" @* U3 o, z1 |% A) N( X
    public static void Main()4 c6 B* y6 M" f
    {
. `& s; Z' @: z0 z        theSession = Session.GetSession();
9 W% `  D; a$ T" o        theUfSession = UFSession.GetUFSession();
$ s' F7 [# G7 }% w. O+ `' M        Part workPart = theSession.Parts.Work;
/ W; m; \3 g' ?4 N2 }( i        theUI = UI.GetUI();) I) {. p6 s/ i* x; f9 s
7 T& @+ h" ^; P0 A0 K" R
        if (workPart == null)
% R" H0 V2 n' S  C- u        {; @8 |- l  B& v1 F
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
( T9 {4 `! E1 V            return;
+ d3 l) b  Z" ^5 n        }
: c2 j% d2 K, K% l! y- A) k, `
" O* |( w8 t  n6 S& Z        theSession.EnableRedo(false);( _8 l4 I& `' M# [9 V/ H. ~
7 \0 n1 N! t  X2 ^* ^
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
$ d: d" ]  @" D
2 e/ [5 I" d+ k2 c, x- L( p3 E        SystemInfo(theUfSession.Part, workPart);
/ A' ^* f& O& w6 j5 c% }) [6 K0 U$ Q: u
5 l6 l/ }0 n! n$ i7 s4 k& c5 e0 j- _        try
. k! c1 n& [6 q7 ^        {
+ h: F7 y9 g& Y- O% ~3 R            Tag[] operTag;% j1 m* [+ h  A
            Tag setupTag = Tag.Null;* y% \) Q. \9 Z$ r- U$ B' x

) S; f( e  A3 L$ u) a9 p0 T! S3 w7 H            int countObject = 0;1 a! v3 z, a- |) x4 c
; o& s# |; G. m( u- ?( T
            theUfSession.Cam.InitSession();; ^( B' k5 G, t4 Q
            theUfSession.Setup.AskSetup(out setupTag);
; }, e% N9 Y4 c6 V2 g' `. U5 S- D8 r' r2 q3 k# _
            if (setupTag == Tag.Null)6 }- n( l0 x: v
            {3 J( u* o' D4 v) z* v
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
- J7 `5 c; P8 }5 G                return;
5 m9 N' I4 [% [! K2 D            }
+ t9 A' E2 ]% A5 I: r9 T0 B$ O( e7 ]+ X" E+ Z0 g7 Z: a( U
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);$ l" C0 ^3 o) T
! `& X5 G$ m* N3 i& |  |5 a( M
            if (countObject == 0)
) @) p7 \2 d% [! K            {
; {$ P; _- g6 r& j0 I# z                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
/ [! V/ O/ T% z4 F                return;
; \/ U* b+ X- o' o- l            }+ g$ A2 k$ Y8 u- {  Z% g6 S
; v& ]0 y' w7 ^1 U" U& |
            for (int i = 0; i < countObject; i++)0 p$ N4 W, r7 b& {9 b4 ^6 x, X
            {; \. q0 j' A6 ]( P6 s- p7 x% P
                int type, subType;
9 Y. K9 G0 Z0 q
# ~$ n: K$ a( ?  x4 q& S1 _$ }( o                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
  j* E' x1 T, m0 f+ {# @& W+ z4 C7 _0 T* {, w
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));# ?. a- o8 z% w& Z) N6 M

1 I5 W  y* U2 x; X8 p                if (type == UFConstants.UF_machining_operation_type)
' F; p6 F' ~) @: ]3 Q" N# N4 D                {
  e! u# N7 o; G                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
: W: ~9 j2 U+ t& ]$ {* ^7 c  s! v) d( ]# h
                    GetOperationSubType(operation);! N3 i0 }7 B/ ?* _

& l2 e3 ~0 I3 P' T2 r) j3 H                } /* if type */" W" ~# d" ~  f
            } /* for int i = 0 */
  z. |# E- c9 z& {) x% f* r  r# p" D        }7 T8 C! M7 p' Q) |8 S1 C
        caTCh (NXOpen.NXException ex)) H& X% s- t# o  i5 q1 r! ]9 S4 j! a
        {
6 p$ s& w3 T7 r% W            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
0 j9 O! T# J5 }$ M( L. p        }
. t& F$ [+ g5 e6 Q% J% E5 W    }
# V2 u2 Y. P9 C/ f9 A- h5 e& T* \8 ?$ ^0 i1 y/ X
0 j3 j2 |1 \6 b/ p  c4 h4 k
    /// <summary>
7 X9 F" v! h, f7 M    /// Retrieve the Operation Subtype4 v" X! s6 B; C3 R
    /// </summary>* t+ U  T4 J3 d7 L5 R# {6 Y6 y; v
    /// <param name="operation">The Operation to Query</param>
1 c$ y: [5 `, T: c2 H; d    /// <returns>Return the Subtype Operation</returns>- _6 x3 g) j* M5 ~
    public static int GetOperationSubType(NXOpen.CAM.Operation operation); K$ e! i% c( I
    {1 A; v+ O9 R0 m% T9 ~2 t
        if (operation == null) return -1;7 N. `  h- |" c
5 S% l2 l, v4 P9 E8 ^( A0 q- U
        int type = 0;
: L. n2 [1 W, I: v; M& @3 z  k        int subType = 0;  Y$ c0 w6 U# V. m, K

' n& b$ M( A, K* V        try
/ B" D/ Z* Y. X% ]* F        {$ G& h: F0 [" Q8 a
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
7 X5 ^. `6 D" ^            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());6 [" {# O, W6 W% R2 E
, d  U. m- v- k% F  n
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/  L" t- |$ B" X: S
            switch (subType); j/ T0 E$ C. Y$ b, V7 q
            {
7 `& |- X- \' L; ^# O. C                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
  z/ o+ W: a* u/ R2 o                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */7 Y% H" `/ J8 s/ v" s' l( u
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */2 A' j& Z6 M% K) h# K; s
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
4 I7 X3 c" N2 X7 T  T% A                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */% @. C  X+ s3 v- N0 l! o
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */% a: `3 C* f4 j. G& p) y3 f9 c( p4 N
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */% X3 {" n" d4 R  Y# c8 J/ ?
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */. h5 r7 [, G% n
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */% R2 w5 D2 E, r- b$ e
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
' y2 y) M: R. I* Y# o                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
3 x) \. G3 Y' V4 ^5 D* P                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */& B; w) n% j0 ^' m$ b
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */8 s4 P  _) U6 U9 F5 ~. y
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
, r. f, M( `* v                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
! \5 L) x# j& _: {$ H! j                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */' {7 f( q4 w& @0 `9 ^
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */1 p# _# v! V6 Q* w* }" ^
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */% a. I% e6 g' z. L$ e
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
2 W+ [' z( z* w5 ^0 r( h. V0 a( F$ v                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */7 l/ R0 A) S5 D
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
6 Y5 g! c0 I: x. c$ P9 [, E; H$ t# y4 R
                case UFConstants.UF_insp_tolerance_subtype:
7 R" n; N9 U1 ]  h                case UFConstants.UF_insp_path_subtype:; n( Q; M/ b% S& n* W7 {8 Y
                case UFConstants.UF_insp_output_subtype:
8 Y: y' E$ f5 }; e+ }" a                case UFConstants.UF_insp_misc_subtype:8 k7 {7 _- S1 q9 z& z6 ^- r. z" h
                case UFConstants.UF_insp_align_subtype:# p. B9 p+ n1 U* H! f: x
                case UFConstants.UF_insp_sensor_subtype:$ r  b. r, a0 j7 ^' v- r) @9 l
                case UFConstants.UF_insp_construct_subtype:4 t8 W$ w6 c( \& V
                case UFConstants.UF_insp_bounding_feature_subtype:4 I6 {3 @% s* `( a; f, e( p
                case UFConstants.UF_insp_feature_subtype:5 ]/ J0 l* ^) q* v! X
$ e9 E$ U0 }, b" G. G, b7 E
                case UFConstants.UF_mach_canned_cycle_subtype:6 l7 s2 J; |! h7 d
2 K( l: ~- L1 N( I2 H. Z; m
                case UFConstants.UF_mach_laser_teachmode_subtype:
' g$ N0 l3 C6 L; x' d  e" [: r$ ^  `+ Y$ X. V
                case UFConstants.UF_mach_turn_roUGh_subtype:
1 y5 _$ f/ Z+ K$ X% J1 M                case UFConstants.UF_mach_turn_finish_subtype:# b; j9 ~. A" l$ |; _, O
                case UFConstants.UF_mach_turn_teachmode_subtype:
3 c8 o* `8 o' g) X                case UFConstants.UF_mach_turn_thread_subtype:
7 Q: V' B" g# x3 y+ o/ f  W( d                case UFConstants.UF_mach_turn_cdrill_subtype:
1 q7 }- G4 I6 @- m2 [' l                case UFConstants.UF_mach_turn_auxiliary_subtype:$ j2 b7 ~9 J  h8 O* e  N6 B' W' ]
                case UFConstants.UF_mach_turn_probing_subtype:3 `$ n) I+ v- G+ w
                case UFConstants.UF_mach_turn_tool_probing_subtype:+ ~( Z9 X" m6 ?4 M% V/ n8 g4 v
                case UFConstants.UF_mach_lathe_mc_subtype:5 y1 u; a7 |( t1 q, o4 Q& Q* e* o
                case UFConstants.UF_mach_lathe_ud_subtype:
2 e- P% o7 X% O! S3 F" P4 u: z* b
: [% `* F% q- o  }. a' f5 u4 G                case UFConstants.UF_mach_wedm_subtype:  O% |/ r; `- K9 {
                case UFConstants.UF_mach_wedm_mc_subtype:
" v! ~: I) S: k                case UFConstants.UF_mach_wedm_ud_subtype:
0 E) {7 j& |) G) v3 a                case UFConstants.UF_mach_mass_edit_subtype:( q% Y8 w/ u  m2 u- L" W/ h: Z. \
                    break;
' P, w. h2 D4 L! O  H- H
  _) ]; R. u: m; d                default:8 b" _. l! E/ F9 U: C, q( v
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
; g4 X, M0 S% I+ m4 @$ k" o1 ~                    break;* o4 Q/ }- ]" n. y9 d( }  F
            }, ^( z2 G; q: m" i" g" G9 ~
        }
: ?& ?( \* p/ [5 S/ U        catch (NXException nXException)4 R1 ^" t9 Y  X
        {5 P* U: P* V( J* O* G) F$ p
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());: I5 [/ f9 L6 v1 M- D; i& ]6 J
            subType = -1;& H$ n/ ~# w& [* L2 N0 x
        }
% `7 ]  H  r' M! y0 ]$ C& `
& s# E0 y$ l8 Y' }, t! g1 ^        return subType;/ p" P  C/ }3 M& w  D
    }
- K; i9 k- E1 u) }7 y
: V4 z' l7 k1 v( ]5 e6 U$ a    /// <summary>
6 O: d( U; f9 j1 D1 ?+ P- q    /// Display System Information
! E6 q& T0 |+ V; a3 s# {' w2 h    /// </summary>3 T1 m$ Q+ Y# _3 o2 m
    /// <param name="uFPart">The UFPart to Query</param>0 Z  `# Q2 @& \- V" c' r8 j5 R% K# s
    /// <param name="workPart">The Work Part to Query</param>
8 z- o4 D' P# a; ~9 ?9 O% R    static void SystemInfo(UFPart uFPart, Part workPart)- s9 |  ?- O4 j" W# D0 h% {4 X. _
    {, M. H% y, m" V1 ?' j
        try& Y1 j6 ]& r8 N3 w
        {3 G" R! S& l2 G! O: o( K+ c, z, Z
            SystemInfo sysInfo = default(SystemInfo);
# W/ U% j5 f# ~% y9 f, i            theUfSession.UF.AskSystemInfo(out sysInfo);
4 }9 f1 k1 q# c
1 v; `; y5 G7 U8 E            string partName = string.Empty;
" z: \- i* Y$ l4 ^! ]. }1 F% ~: g, h            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);8 \( H; Q0 F, _! ~7 S
9 [& N5 U6 U5 g. ~
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();8 Z) @9 d9 p, h& Z8 s
            theSession.ListingWindow.WriteFullline("============================================================");: `& l% \. q  E7 V' t7 I2 ^
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());( b- W+ v" ~$ l" w; Q6 }4 e0 R+ X
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());' w  r6 F# `" P3 g
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
" R+ N, Q1 _: V3 v5 l* p            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
- L8 q: X" B+ ]! E- `5 ~            theSession.ListingWindow.WriteFullline("============================================================\n\n");/ `' ~0 }+ h7 U# j
        }
; ^- N: j; |- s4 V9 Y. {        catch (NXException nXException)( P7 L( _; w  F4 A
        {8 N, L2 k& {% T; w6 C! {6 F
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
3 @7 V. w; k! ]+ W        }( \! r. a  u( F0 f) X
    }0 I  w) M- a2 ~) j( ^3 C' {+ D
" n' ]0 q( n' o: |6 O8 R& \- W9 N
    /// <summary>
3 J& P9 |4 H2 [* J: `* t  ~    /// Unload the Current Image
3 Y, j9 M2 Z6 T    /// </summary>
2 {; z% g; X  u4 U8 _    /// <param name="arg">String Send by NX</param>7 N. K9 z2 R3 W
    /// <returns>Unload Integer</returns>
+ w7 M) l! }" c! ^3 V2 _    public static int GetUnloadOption(string arg)
' _1 Z+ T) \" w( t& M6 r    {* L) M" ]. c' v6 [& D9 ]! d+ ~  ]
        /* Unloads the Image Immediately */5 [5 M, y2 `# W8 `: i
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);, c! a( k, |3 S3 T* e# p
  C2 b/ k7 a% h
        /* Unloads the Image Explicitly, via an Unload Dialog */
1 n! x+ P: p' w1 }5 M! r- q) a        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);) F( l- G$ J. |- A9 [4 n& W

3 }3 L- I6 X/ C4 Q' s+ Q        /* Unloads the Image when the NX Session Terminates */# ]7 ^* j& z% M! ]) W- @
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);1 U' r+ J3 d& E$ X$ s$ d
    }
2 q( v) W: B) m$ a4 Z" ?( r  u}[/mw_shl_code]6 Y9 N$ b2 u; `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了