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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了9 z/ u; T% R( L2 s" t
. m6 n! i/ a0 w% U" @8 A3 k
[mw_shl_code=csharp,true]using System;
& i  t) V9 D8 T) pusing NXOpen;( U) a  ^+ b# N0 e* P* P' a& f
using NXOpen.UF;
  D, [- Z+ w- z) b0 e# L5 S2 Rusing NXOpen.Utilities;
9 B5 S' s. {6 H) J2 @6 vusing NXOpen.CAM;& Z; D. |! C. s  K- I; R
using NXOpen.Assemblies;- C4 I' ^; g* o; }# O, q, v- [* n

, F: n" j" \! m$ h: v" m9 [static class GetSubTypeToOperation/ T5 J7 Y6 z& e9 r+ Y
{
: N; X  S" F  A$ }* n" q1 ?' i    static Session theSession;, k; D1 D( `" {
    static UFSession theUfSession;
& @* U7 K- y2 ~. ]+ \+ j6 t" H0 E    private static UI theUI;
4 F& ^6 Q* W' y! l8 `! P1 k3 v
/ C/ E2 p# ?! n) T+ F) V6 d+ C& Z    public static void Main()
, j; I7 j! p8 R* t& b. r    {$ n; @, ~5 L3 u4 z) i+ z# Y
        theSession = Session.GetSession();! R1 C% J/ b" V, R: B* Q, ^1 k3 s
        theUfSession = UFSession.GetUFSession();
2 g7 v) J- k- A0 u, ~8 z        Part workPart = theSession.Parts.Work;( n( L1 h% Y! W( I, v. K
        theUI = UI.GetUI();4 Z0 M# c0 h9 o

; K# E) d5 h7 _2 v0 i: c5 l' D        if (workPart == null)5 E# f2 D+ f5 n+ g1 D; t# }
        {
4 Z  z8 O1 a2 h7 Q# f$ |4 B0 ?; P  V1 ^            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");- ^. b% e* ]8 h7 `
            return;
* O- c9 O3 E, ?. p+ K6 T        }
8 c& J0 l) l6 h- t# M  o; X1 a, J
        theSession.EnableRedo(false);( V! x! Y0 @4 |3 H5 E+ K/ ~' r

! ^+ g2 u9 ^: g        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();  g4 n- S7 `0 K; `# y' l
2 P& o4 f$ \4 K
        SystemInfo(theUfSession.Part, workPart);
' V  ?' r+ U8 Z" ?
4 r8 H3 s7 N0 O  s2 c7 {        try' {# M: a1 L0 d! ]6 e
        {
" [6 ?% ^/ t: ?            Tag[] operTag;/ D0 X8 u% s. e* `7 `4 q: B
            Tag setupTag = Tag.Null;4 O( l3 v1 H$ m6 F3 l. x
; }9 c& z. ]; O3 W: V6 I
            int countObject = 0;! [- m, `( e- n9 _  l- J7 c
2 }6 w0 W8 ]$ D3 j
            theUfSession.Cam.InitSession();
& J6 h% d) Q) _- a3 L            theUfSession.Setup.AskSetup(out setupTag);1 g/ S% q7 A8 c: ?: k8 v) T

: @# O) Z& z( g            if (setupTag == Tag.Null)' }' E0 c9 i& ?. g1 f' O2 x
            {
. F$ d' v; {& |  G                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");( H( ~) |, [# Y7 S+ S& m5 T/ k
                return;
1 V' Z* T$ ?9 V. j+ Z! _            }
6 A* r( ~7 ]; l; I5 G
  i& T" I; m) Z" a, o' x            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);4 \) U5 f' w9 ~! q9 n& ]3 P

, H. X5 \4 G/ _( \* S            if (countObject == 0)9 ?9 K/ ?0 a, u* A
            {
& b1 N+ Y; V8 r                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");3 E/ P& ?2 Q6 J: N: A( E
                return;
8 x2 P2 Z8 h- r7 X+ e            }  Y2 u; `( x5 |+ T4 n8 _, o2 v
( @2 A' p( n: l  |: m8 R5 N
            for (int i = 0; i < countObject; i++)5 x# o( g$ I2 Y6 d8 j, g
            {- ^- P4 X$ e. H3 K/ Q
                int type, subType;; x: ~+ A- k) V) K' e+ J( j

+ I9 @% z; E/ b' u$ E7 O. j; a                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);# I# L) c) J& S  A0 p2 G5 a$ V
0 A: `4 |; S# `5 e8 F# @
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));4 V8 E9 Z; K" E0 a- q7 N3 p6 r- k" ]) k

% g! R7 p& y9 x0 l' v5 g7 r                if (type == UFConstants.UF_machining_operation_type)
7 h8 Q' s% y! _" k  s9 ]                {
" A5 `8 Z0 {) N) Q; M                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
2 j6 ]  U9 n5 M1 F0 G+ B& _; N  r. g/ j
                    GetOperationSubType(operation);
0 z: z3 @9 U/ O: B. e4 g0 k
3 K2 W# N' @' r3 x7 `$ i8 N2 k                } /* if type */
" F. \& i9 K" T% r5 K; S- ]            } /* for int i = 0 */
2 N) U* d; [4 B  M- u5 c        }/ y" Z6 \( Z& q1 k. D
        caTCh (NXOpen.NXException ex)- }/ g) Q8 a8 z- q9 Z  p! V, X, ?
        {* i: x8 g/ w/ C) u9 Z, k
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
, g& r5 F* J. c4 k$ X7 ~        }
2 m  j3 L0 n+ W" y4 e+ d    }
" w  R) E& b# ]  z
1 ~1 a( |6 Q0 Z  [& `) F/ E# Y0 h
# r* n8 m0 |: I; R9 s" l    /// <summary>
! N, R4 V& J( `" Z/ e  W, U1 r    /// Retrieve the Operation Subtype
: K5 J, Q6 s, r, `7 ]: {" |    /// </summary>
- k* w2 _- N$ O7 l. A    /// <param name="operation">The Operation to Query</param>
1 Q" J! h( S' O* `3 z1 F6 \    /// <returns>Return the Subtype Operation</returns>
9 o/ H3 |0 y' W/ o# \" }6 I1 x" a: f    public static int GetOperationSubType(NXOpen.CAM.Operation operation)8 h6 T4 L' g2 z! U; S% B0 q# x) r
    {7 Z  U& I7 y4 N5 B
        if (operation == null) return -1;
7 A( u' F; l) \0 O6 }- H' K% U. f. x9 \! S- X8 u
        int type = 0;* M8 T% v6 I9 Z
        int subType = 0;/ Q0 t# D- y3 i6 j8 d2 Q
4 e# B5 e+ W& u6 x9 c6 W+ X# K
        try
) o) r; ]+ ^$ y/ u+ a        {
0 P; F0 r1 }" f1 G            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);% B* N3 l- Q1 W) Q* ~$ a
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());7 h& i, w/ m. {% F) z
# J6 g; ]" p9 K% u* m, C& t
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
# b+ O& W/ B' P; C# ^1 g9 F1 s4 w            switch (subType)
& T; x2 [, n, V/ h- L/ z: B8 [            {
) {! A$ n  m& v$ Y% i/ s# x                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
8 G: {5 k5 p. A" }: U) S7 _/ Y                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */4 C8 O$ a/ J: V4 R# H" g2 R
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */" b6 W0 B+ j- D2 S6 K6 x
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */4 T& D+ `- q' O
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
5 r7 Z. G, @/ ^) Y! }! i                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */0 m" A* Y2 ?# a1 }0 D
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */( `+ V0 M$ U6 t1 u
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */+ @& i- b: U) B- ?  S
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
2 f) g$ w# Q- \/ v8 W                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
/ j8 |/ |7 k: V. K                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */" z) c; z& N6 v9 E# P
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
# M; n  ~7 k8 B6 x1 c8 Q                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
1 p  m. @; s1 N9 l$ ^                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */" M+ }; ^  Y5 L0 s- A, T3 @
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */. s6 p4 Y5 [: i& ^1 {- i3 L
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */7 K" Q8 N6 H1 V: g, ~- o  M
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
# @: e: ]' r7 p& }* Z3 F+ k% e                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */: y3 H+ d- o- U% h
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */7 t% Q* t" v- d2 [4 N/ U( _1 D4 o
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */) p% H1 K5 O8 s  |/ L( _1 P
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */. n0 _3 l. K4 u5 X

, R# \* ^# a$ \                case UFConstants.UF_insp_tolerance_subtype:- D, X7 W9 @2 p9 v7 ?
                case UFConstants.UF_insp_path_subtype:  v6 i1 B2 j: A! m( T& N) B$ s6 L
                case UFConstants.UF_insp_output_subtype:- v9 P7 b: \- D4 v6 h5 E, n7 _4 |- A. F
                case UFConstants.UF_insp_misc_subtype:
1 Y. |" P  X- b                case UFConstants.UF_insp_align_subtype:2 H5 Z2 M# r2 u! \/ ]! C- y9 ^3 s
                case UFConstants.UF_insp_sensor_subtype:
$ s( Q6 i0 v* I4 p9 D5 t- F1 n! }                case UFConstants.UF_insp_construct_subtype:& i2 \* {2 b1 r
                case UFConstants.UF_insp_bounding_feature_subtype:
& J% U& o" U$ _  k/ H7 X% T                case UFConstants.UF_insp_feature_subtype:6 x, U: |" m+ T6 t: K

6 J' W' r& G; n) a! F1 V: F* N                case UFConstants.UF_mach_canned_cycle_subtype:; p  g2 U6 w) s' }' H
7 ^6 N# k7 p+ x4 z( G0 `! ^5 E: @
                case UFConstants.UF_mach_laser_teachmode_subtype:4 ^2 @7 t  I7 b3 _( A  Q

  }* X6 {% x# b( K5 ]                case UFConstants.UF_mach_turn_roUGh_subtype:
* u; \# n3 i# q$ M# A8 n                case UFConstants.UF_mach_turn_finish_subtype:: U, H5 Q! i7 i+ h
                case UFConstants.UF_mach_turn_teachmode_subtype:
( j/ k; p" k8 m1 |; M+ @$ i                case UFConstants.UF_mach_turn_thread_subtype:
, B# N& T9 p2 O                case UFConstants.UF_mach_turn_cdrill_subtype:
+ C$ x5 d0 U+ m  T2 u: }" b) ?                case UFConstants.UF_mach_turn_auxiliary_subtype:
% e6 ]* ~- h3 A# r0 h3 t' {. d                case UFConstants.UF_mach_turn_probing_subtype:! a" V* x0 p) f# Q) @, Z
                case UFConstants.UF_mach_turn_tool_probing_subtype:" g* I' d% _4 v8 L# o( o
                case UFConstants.UF_mach_lathe_mc_subtype:
8 H2 D; ^0 [0 Z" x6 r2 |                case UFConstants.UF_mach_lathe_ud_subtype:4 m7 H3 @$ `9 L, V

* |  U! U8 A+ \4 n/ e5 ^8 ?* y                case UFConstants.UF_mach_wedm_subtype:
3 G1 v( F' l$ ]7 K                case UFConstants.UF_mach_wedm_mc_subtype:
% K, t8 `: C7 E  M2 D( U% J  f                case UFConstants.UF_mach_wedm_ud_subtype:9 E9 a9 L/ O$ U, q
                case UFConstants.UF_mach_mass_edit_subtype:
$ }7 \0 t  o. x                    break;
, l3 V( k1 G+ t, j. K
7 G+ a3 i' {0 a$ _# w8 `5 v                default:9 p' s  Z3 Z% p$ |. z
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");% J0 t/ q: ?" ^7 M0 m7 Q" R! ~
                    break;( _- m* D) p! p/ @
            }& D& Y$ O: B2 T
        }7 `2 e6 X; w2 C/ t+ D
        catch (NXException nXException): a# a( u) k8 G
        {
3 u7 x$ D6 R0 ~+ `1 w& F            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());; u* m$ P" T8 w5 l+ A
            subType = -1;
7 T! P$ P* L0 R& o4 B        }
0 Y6 J, q" ?2 Y- c, m3 L/ B
! E+ J9 A) j3 g& X  Q        return subType;
/ z1 O4 ]. J$ e6 h9 ?    }- ~+ K- o6 T  Y+ p7 ^/ T

% M+ d+ Z  m# a# s! Y    /// <summary>
1 ?7 g1 C( i- S2 c7 O    /// Display System Information
; |2 {% @, o0 V3 V" Q# R, A% O1 @    /// </summary>
' g+ Y& I% Y/ C6 A; x2 F, ^    /// <param name="uFPart">The UFPart to Query</param>  Y' x! t' Q  {, k" }0 c
    /// <param name="workPart">The Work Part to Query</param>
0 }) L6 }: d. x9 z    static void SystemInfo(UFPart uFPart, Part workPart)
& a. r7 n& Z6 z    {
% f$ }& V; d. k        try
+ u9 \1 y- o- |6 R) p        {
8 K  @) b. h! j9 H+ ~0 ?            SystemInfo sysInfo = default(SystemInfo);
; m9 R6 H$ F  |  y9 P: Z+ W            theUfSession.UF.AskSystemInfo(out sysInfo);2 k! M- @/ ^0 i# G3 g  h

1 E- C' p2 l) K9 a4 r& G2 U            string partName = string.Empty;
) ?8 w2 y' `( r' U6 ^0 s$ T            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);7 S5 t  {8 a8 }: i& ^+ g1 a, O
/ Q, |0 p. j5 F' h( T) @/ n" W8 w
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
$ p! q2 ^: e: u7 ]& C( Z( g' I            theSession.ListingWindow.WriteFullline("============================================================");% `  H! u2 O, {2 s
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());8 W' F/ n. H9 l4 N% [
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
7 w8 }/ c; ^4 D& X8 a# K& T* x- z            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);) u" l- e) ?- |1 O& F& P. T
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());1 V9 ?5 v. L# X6 P# G$ ]
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
  F+ s1 Q- K. s8 y5 U/ a; ]        }( r' y0 c9 ^% U; d1 r4 m7 j
        catch (NXException nXException)6 c( [( M& J+ c1 [: D4 u
        {
& F- A- j+ j7 w) C5 b- g            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());5 w( @2 s: q; Z! _- C' y' P& k( }
        }
) P3 L) k4 ?. ]: J# {    }7 n# }0 k$ Q5 @8 `4 F9 V9 I/ g* z
7 R- S5 O( H- \% Y
    /// <summary>. _7 d. f; a, m9 L
    /// Unload the Current Image
2 t# u! \0 P- X, }    /// </summary>; t7 D& A+ r4 ^# f) w
    /// <param name="arg">String Send by NX</param>( r& R* k: X1 }# T& u3 C' ^/ y5 H
    /// <returns>Unload Integer</returns>
* l# p1 [$ d, h  Q$ M    public static int GetUnloadOption(string arg)
8 Q: H, A5 \4 u! z) Q. x% O    {1 [2 v7 A/ c& c5 B, e* Q
        /* Unloads the Image Immediately */
9 t+ O8 c6 A) n+ V  C/ O2 E        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
5 `+ n- {; o; F0 A# s, ^+ Z7 n' Y- d- U
        /* Unloads the Image Explicitly, via an Unload Dialog */
2 T5 A" d3 V, Y4 a3 L        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
$ o9 |% Q. H. H; v6 F( I9 H: Q: T7 R: N- J) D
        /* Unloads the Image when the NX Session Terminates */8 v/ f: F2 v- G$ ~" x* p( C
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);, b6 {: G6 `& I' ~& O9 X- M
    }
/ u) `0 X0 |) k" Y# f! h0 {+ N8 J$ ^$ _) W}[/mw_shl_code]4 L0 R2 O. a3 m2 ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了