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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
9 H6 B9 K+ B6 [( U: M, {
: R2 a( y- P' }9 H  ?7 i/ d4 v% c2 F[mw_shl_code=csharp,true]using System;
! H% R: ~' N9 C5 O4 xusing NXOpen;
& G/ I9 w( B5 e  xusing NXOpen.UF;; g4 \5 H9 g' T/ E" e/ C
using NXOpen.Utilities;
: I( o' T. x7 M  O5 W1 Susing NXOpen.CAM;
: n+ a; D9 v, x! D# L2 Ousing NXOpen.Assemblies;  S7 M1 F6 x0 n8 U$ U5 N

  {4 S% [2 ]6 x7 E1 z' R0 z% Bstatic class GetSubTypeToOperation
' a& I- m/ A9 Y4 C- g{2 U( z. [$ T" n# `8 J6 n$ {
    static Session theSession;8 O; i$ Z) \4 C5 Q4 x1 ?+ b
    static UFSession theUfSession;& c& {- q+ `( q2 J. N" k
    private static UI theUI;* v5 f( k( k/ F8 ]6 R3 _/ N4 M
5 p) P( l/ X( i
    public static void Main()7 J' x9 R2 u+ g7 l; D
    {  |2 e, G. k5 i% }
        theSession = Session.GetSession();
( M: C/ v  Z8 a& T) U! r2 w        theUfSession = UFSession.GetUFSession();
% J$ r( Q+ B- _5 n. e' b8 R" o/ N        Part workPart = theSession.Parts.Work;
8 N3 z/ O7 i* X5 a. y: V        theUI = UI.GetUI();
0 C# F+ s9 F9 v2 R3 E9 J0 a4 _  X" D. r9 i; n; L6 I
        if (workPart == null)
% r2 r  p( i& k2 y9 S        {4 M! }- @" p1 c& J
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
# G* h1 }/ [; h8 k4 |4 k            return;) v) K: }6 a/ O  ^2 r
        }
' _& E  M6 d0 }# d" X  [! V! C; ~' S1 o6 t! C) L" B
        theSession.EnableRedo(false);0 }* e  `* U5 W2 `& H4 f

! w' c& O8 u6 Q* z        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
- H. u4 V2 U" p% V9 d- ?7 M
+ p' N+ z+ R  ^# u. x8 i% U) d        SystemInfo(theUfSession.Part, workPart);
. b# W8 {1 T: U7 \
& p' |5 j- ?5 J# M9 b$ k3 y) S        try" @+ S( S# V* }) D" Y- m2 N( |( B
        {+ u' ?& L0 M" j
            Tag[] operTag;
2 ?1 ]$ N' k6 G9 E            Tag setupTag = Tag.Null;: H2 K5 N* u5 D1 {& B$ M+ F$ F

' B) u  m# ]6 r            int countObject = 0;3 [, h  }% i5 Z

5 _+ V- D8 D! R1 y            theUfSession.Cam.InitSession();
/ k; ~5 Z& V3 z& Y            theUfSession.Setup.AskSetup(out setupTag);6 P( Z- F; \/ d

6 `( Q: @& j3 t' T# Z) X/ h            if (setupTag == Tag.Null)
- x( K# z6 q, j- p            {: L! y! L9 T  `0 _- i
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");, I# ]/ p4 D9 g. z
                return;" m1 b( ^* F8 L; r9 x
            }
. v3 O4 P$ Q$ L2 f
, O' U4 R& D2 x/ g9 H% @5 w7 D            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);2 }+ d+ P/ k0 W
4 `7 ?+ k% j6 Z+ E0 ?$ d/ y# T/ h
            if (countObject == 0)7 U* W* L& b! U0 T. ~
            {
" `6 z; n4 J9 [- {" w! Z                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
% r9 e9 j# q: l" a9 A9 S                return;1 x" Y3 {& o. A2 r
            }8 a' ^. g- q1 `6 ~

1 u" N$ Z; P, K& _4 Q2 x, G/ Y            for (int i = 0; i < countObject; i++)
  ^2 U! y' N1 i% J8 U% g0 P5 `' R9 J. p            {5 X; ~% ^& \2 |, d: ^
                int type, subType;
" Y+ |4 m$ I! I& K9 ~: Q
$ M1 I/ ~" s$ N; l                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);! A6 w' y+ f) U9 p4 a. h7 @
# D1 \% M1 a6 X/ u/ ^  i
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
. ^/ M& R/ D  j% E9 m2 V* @( O. t$ W; d( Q) u
                if (type == UFConstants.UF_machining_operation_type)
: |3 V# r: d2 h0 M- ^8 E                {2 c' U; _% _/ r$ \! m* [
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
/ X. l1 i# j1 T$ c0 X: C7 I8 X0 ]% A. p- c1 f! s
                    GetOperationSubType(operation);
& d4 r& [7 U2 g5 F" R; }7 U2 Q) b1 A/ Z" |
                } /* if type */
0 ^- i1 Y; x) u9 z! W4 t1 \            } /* for int i = 0 */
3 R  I# y& J! v7 N  I& I        }6 i4 o$ r, ]$ j7 \# N' K, z* [
        caTCh (NXOpen.NXException ex)% N3 o4 H4 I1 _  I. \& \! j- ]$ A6 |8 o
        {9 K/ y: \5 q' ~! Q4 l
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
$ B& y9 S. n$ a0 v$ E! z: s. g2 P        }
. J2 M$ A3 ^- I+ K: U  f. H6 a! c    }
9 j# d; @1 M: v. N6 r; L& Q$ f% B
) ~* z1 [* ]  `9 g5 P7 U. y6 W7 D7 ]
    /// <summary>
9 F6 ^$ V6 H3 ?    /// Retrieve the Operation Subtype
: j: \2 g% w  a9 G% B) ]4 z: u    /// </summary>2 k. y, A; g0 S
    /// <param name="operation">The Operation to Query</param>
! Y6 ?: `9 S  Q$ k" |5 B    /// <returns>Return the Subtype Operation</returns>
5 J$ t2 z* ~, O4 T1 ^  H% }    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
; x0 H' t6 a) H. q# W/ o    {2 K6 y: d3 B8 m; S
        if (operation == null) return -1;
* d5 Z  m, o# _5 A* _9 \3 S9 v3 }* t( R% W# e2 f( H6 ^
        int type = 0;# v: s5 W' p* w5 o
        int subType = 0;, _/ B$ R  V5 l' r! Y; J6 _9 k% A
. p. o" b! f4 [5 C0 {
        try
5 S( G6 _" N, |1 P  x8 l/ i% x& ^0 ~) m        {
1 [# H' z5 ^" _0 ]            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
1 p9 S7 I! A9 x, B: `            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());5 G( S3 ?$ ]. v5 P: D

5 [7 v0 R: L+ v; u            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
: ^, g% N6 w% p3 z* n: w            switch (subType)
, N* b7 J% a  f9 L2 _            {. U: Z8 w9 ]- z1 q/ M# F0 k) K
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */3 U$ V; V3 B, f; X  W9 j0 X
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
) R5 z- \' n$ o* Y1 v$ w- }                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */( i! a' z8 n6 V0 A* y
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation *// D! [1 l  D; I3 V
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */" z: [1 A' Q3 Q5 A2 i7 ~! @
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
% c# _1 J! F# i5 o1 B                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
6 E) d- c' o( X) C2 Q4 n                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */3 p/ I, m: ]4 S9 u( K: H9 ~
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */# y0 j2 l% l! `* Q( Y
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */: z3 ^( l) Y' _% f1 ?
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
( u9 h' `3 j9 z" {; H, {% M: b$ q: H4 Y                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
2 q. K5 l, u: V' P  W- m                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
0 ~! h% g7 @5 T) ^- ]2 d1 o, f                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
# r! _) |% K9 J* u' `; @- {                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */4 K* T" e( i2 f, n7 R7 v2 z
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */- y5 A2 [& }* `. z
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */' s. H; Q6 W3 d; O/ ^* J
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */9 t5 B$ ]& j9 s: _
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */( g; E; e& n7 Q% d# B* b- A
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
  o3 c& {- H' K4 x  Y                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */* a* s- H2 k5 g

0 R& u: }# T$ O2 Y& [8 [$ z' l                case UFConstants.UF_insp_tolerance_subtype:
3 l2 I! @7 H* T+ }                case UFConstants.UF_insp_path_subtype:
2 w$ Y+ \- a! \: ?. v                case UFConstants.UF_insp_output_subtype:
: I/ c# Q7 U7 @                case UFConstants.UF_insp_misc_subtype:" a$ x. C; ~; o' J
                case UFConstants.UF_insp_align_subtype:
8 D2 o% V0 T6 b* Q+ y& S! z                case UFConstants.UF_insp_sensor_subtype:
4 V( p7 c7 Y3 [3 T0 _% F7 h                case UFConstants.UF_insp_construct_subtype:
  E6 t% T. k, }  V9 ]0 E. W( Z                case UFConstants.UF_insp_bounding_feature_subtype:3 q3 m9 }8 P( {  c0 I$ o2 y+ ^
                case UFConstants.UF_insp_feature_subtype:6 m7 }! I( d/ e7 G; D. s
$ u% j; B3 V: N9 r8 a# m3 H& e
                case UFConstants.UF_mach_canned_cycle_subtype:
% j, S5 Q- z/ \( s
# P  {" Q( L) V5 `( e! k                case UFConstants.UF_mach_laser_teachmode_subtype:
$ I  i' O" P% M' e, ~* H% `$ ]# X
  W$ N4 p; i0 l3 m. t                case UFConstants.UF_mach_turn_roUGh_subtype:: y6 N" Y% a) H* j' D
                case UFConstants.UF_mach_turn_finish_subtype:
' l( q: _( a+ d- e& `+ `% v                case UFConstants.UF_mach_turn_teachmode_subtype:
  _* k6 {* m, L2 d; i9 B, r+ _                case UFConstants.UF_mach_turn_thread_subtype:
9 ^7 G- b& B) z4 I( B                case UFConstants.UF_mach_turn_cdrill_subtype:
2 K+ a( a2 Q7 \6 X0 N                case UFConstants.UF_mach_turn_auxiliary_subtype:
( o, B  Q- K  z2 E+ o1 s                case UFConstants.UF_mach_turn_probing_subtype:, G' M7 g2 v: m, [2 Z( k
                case UFConstants.UF_mach_turn_tool_probing_subtype:
5 f5 b8 |6 \& h0 a! B                case UFConstants.UF_mach_lathe_mc_subtype:6 f, w+ G, T3 R: W
                case UFConstants.UF_mach_lathe_ud_subtype:& b. k4 d' P# {1 s( J' _7 {

' z- a0 T! ~( d                case UFConstants.UF_mach_wedm_subtype:
& F* w# E' l. W# E: B! v% E                case UFConstants.UF_mach_wedm_mc_subtype:; ]0 e- b# l1 C" ^, l# S- [
                case UFConstants.UF_mach_wedm_ud_subtype:
; ^0 P0 p: d7 o, _4 N                case UFConstants.UF_mach_mass_edit_subtype:
, {* [/ W/ _) _" E+ C! E) e                    break;
  n1 D3 Q: _" |7 C2 z# H  I. ]' {, d
% P: |4 \$ d7 v9 l/ E& T                default:) X# W) B- y% I& v4 ?5 d8 i
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
& m2 ?$ H7 H1 v                    break;
: }9 i$ S, Y$ o7 \2 l9 ?            }! Q. q- P! Z4 b+ }$ l! O7 e0 r# X
        }
0 }+ T3 z5 @2 }1 G        catch (NXException nXException)/ u2 j8 `8 M. S: q, Q: d
        {
- F6 o: ?- {$ e8 F0 s% w4 Y* t* z            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());* W7 [* r! g: R! n
            subType = -1;
% e9 f) s& A5 J4 v6 M        }+ ^) l4 M) x; o5 Q* z# t4 L8 I, C& ]

+ G% Z  s/ ?. {1 D, R) W, u. r        return subType;/ l. W: V+ c8 G$ s5 _8 z  U
    }
0 a3 X: j+ e  ]  ^( I( X' v, \  @7 d' n( i( e
    /// <summary>" q- ^& Y* W( K7 y5 S- c5 I- b
    /// Display System Information
, {2 @5 p- g  \4 F2 |9 s% F2 p$ i) w    /// </summary>4 |3 j/ P6 P/ @- J' e
    /// <param name="uFPart">The UFPart to Query</param>
" Y1 Q+ R. q* h* F5 P0 s2 K    /// <param name="workPart">The Work Part to Query</param>- ]* N! ?! X) ?1 u. S9 U& I! ]( s8 j
    static void SystemInfo(UFPart uFPart, Part workPart)
* ~' ~3 i' }7 C% N    {
: O1 x& c9 Z( s! n; G4 Y. p  s' [$ o        try1 O3 z# o7 O* ]3 P  F9 G0 W
        {& V1 l6 i0 X0 u/ F$ p
            SystemInfo sysInfo = default(SystemInfo);
, d- m1 ?( \1 @! v4 l            theUfSession.UF.AskSystemInfo(out sysInfo);
' P5 h+ A  D+ U, Z' w, H: a& h+ }
! c* v. o0 S$ t/ q: A$ t            string partName = string.Empty;/ G6 f$ B2 D5 ?8 g7 V3 F
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
( R3 e" h5 r4 l! U' m. J' w2 ]' M- U  y& _" z. ?7 x
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();  w' |; q, x6 k7 s0 f. R
            theSession.ListingWindow.WriteFullline("============================================================");2 B; k" r% T. ~" ^& H
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
4 W8 V% g; |, P            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
2 }- A6 H3 v. ]3 D$ h) H0 _            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
! s( S, R: K4 n            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
; d8 r$ a! \9 p4 ~1 X7 D$ |4 Y+ u            theSession.ListingWindow.WriteFullline("============================================================\n\n");
# [, c- ?5 c! W) {3 m4 `9 n( S        }# H( R$ `  P, `, Z, g0 ~. t
        catch (NXException nXException)
: B/ a- q0 [% X& R0 ?. a        {
3 a) r# S6 r" `4 _            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());7 l" x9 o( I8 r
        }' X  M; A2 t- ^4 j; N" p
    }
' v3 a( x+ }$ @/ ^' ]" ~) M% {8 y0 {- h& B% o3 i0 l
    /// <summary>1 n5 S9 Z* @" ]# `+ j) M# R1 n* Y
    /// Unload the Current Image
2 x; d. M  U5 W! v5 @5 \9 c, s7 J    /// </summary>/ E9 F. Y( |; G$ e* [! Z
    /// <param name="arg">String Send by NX</param>4 l/ L1 M! r( P2 O2 [
    /// <returns>Unload Integer</returns>- n# d/ l  Y$ f) \3 h
    public static int GetUnloadOption(string arg)
# L6 h9 K$ c7 i7 X9 D# k4 h4 C    {
0 l0 Y! r8 v* u% v' L5 u4 w        /* Unloads the Image Immediately *// w& n$ l" x9 c& P
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
3 D& S; R) U( D* O) r& i+ ~6 d; A9 V0 Z
        /* Unloads the Image Explicitly, via an Unload Dialog */+ B3 t& G  t2 v. j9 V: v# u0 ~9 P: N
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
/ k& ]" _0 r8 m# }1 y1 n
$ C. r& S8 i* Z        /* Unloads the Image when the NX Session Terminates */$ @5 Y$ l" f: z: B( m
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);: [9 ~* x5 u/ z# E5 ~
    }
! ~% d1 Q' N% m& J}[/mw_shl_code]
, U& k1 {" a( _; L9 q1 D* B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了