PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了6 W* T) k9 }# A
' _9 c* F; G4 A  [
[mw_shl_code=csharp,true]using System;  y! p. `; P! T) Q1 h1 m8 O
using NXOpen;
6 R( Z9 |" I. r1 _7 J; C6 n/ fusing NXOpen.UF;
) U) m6 L7 \- y4 q1 ^1 Dusing NXOpen.Utilities;) j) A$ i- h& Y, Y
using NXOpen.CAM;
: f7 Q* w4 Q* Rusing NXOpen.Assemblies;7 P& P5 m! q$ S; l9 y: {4 |

( B, ~; x2 v% H4 A, ~static class GetSubTypeToOperation
& g% g+ y7 v; Q  p+ k{
$ s: Y" X  j' o5 c, e    static Session theSession;
: w  [& f" L! L    static UFSession theUfSession;+ Z6 U1 E3 i6 g
    private static UI theUI;6 R) ?2 [' q$ ?
: n" C9 |8 r7 e! z# J" E! n3 v) x  Y
    public static void Main()
9 D' b6 m+ U, q: m; m; j6 l8 `3 Y+ x    {
& I% N! x. S# O$ d        theSession = Session.GetSession();9 D/ z1 [/ X3 v& }+ p' t% N
        theUfSession = UFSession.GetUFSession();
: p1 x, U& N6 N$ o# `" O$ g3 d        Part workPart = theSession.Parts.Work;+ Y" i% K$ h% D2 |4 `3 s+ h; B
        theUI = UI.GetUI();5 _* J4 {- o# m, r* x
- Q: m6 W" S" b/ O! l$ K0 v6 n' C, i
        if (workPart == null)' q. R9 p# @' J
        {
8 y" b) t! P) j3 Y+ ^( V5 z            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
; l* M' l: n! U" t            return;
. n# U7 F$ V$ {) q        }7 D& O, b3 `/ g, S  C, T: U
  x% q! Q; i$ m2 r. C
        theSession.EnableRedo(false);
* g; J' Q3 f# I8 V# L2 J5 l* t! I$ y3 G6 _- g5 t
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();$ `! [) O& e  C
$ u& s* Z4 ~- n
        SystemInfo(theUfSession.Part, workPart);
- n5 [- W0 z0 l2 D- W% s/ w
: a5 f9 a4 V% t1 ]* k/ s" ~& C        try9 R" p1 w2 w' V  m- F1 v1 m
        {
6 ?% Q. b2 E) U3 k* o" X+ |4 G            Tag[] operTag;
# p/ m+ E7 E) U; P! C# [* g5 s            Tag setupTag = Tag.Null;2 y& {( Y  `( m: y8 x
& `" e5 D9 I4 A4 k8 s
            int countObject = 0;. e- c3 f5 s5 X8 r" J( C6 @  ~

6 x7 ~" i! u/ g+ E5 S            theUfSession.Cam.InitSession();6 t; S4 o/ h& B, w& }' H1 O  W
            theUfSession.Setup.AskSetup(out setupTag);% }  y+ K' ]3 A1 |

7 ~3 ^4 Z5 T1 l$ E& S            if (setupTag == Tag.Null)
: _  s. g' M! h            {  Q' L. m+ p" g9 o' y
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");+ n4 `8 k) \5 h" @/ F
                return;7 q3 V! V3 n% B1 v/ E( ^
            }# W) q* K5 B- X, W9 M8 v. R

, n- P4 R2 y0 R# p: p            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
+ U8 J5 Q5 j" O0 b
. {- `. n! L4 {! B! E            if (countObject == 0), |* R) P& W: L# b+ O( Q7 H2 W
            {
, m: w, p1 p7 g  m! v+ `2 h                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
+ _7 m3 L" l5 b0 W5 _6 x: z                return;
* @8 t" n% {' @& ?* X            }
2 \" v# h- G2 i  D; g
2 ^. v( `" `+ A, V6 C0 d            for (int i = 0; i < countObject; i++)" Q0 b7 ?5 y& G7 M5 y5 z4 F- \" b
            {
. ?6 B7 ~. j  f& T                int type, subType;* n3 k/ ~6 L% V) C. S& ]" }" _3 S5 c

2 @$ `" b& n: n5 H9 M6 E) z1 L' }  W                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);& m# w6 G3 r+ I6 `( _/ v: u

; l5 R; o/ \- G9 h. |, ?                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));4 @1 d3 a! q+ C0 F/ z, I" I0 C
( u% ~% \: e  U! a) x* C
                if (type == UFConstants.UF_machining_operation_type)  V% t' M! F  L1 R4 E* `9 \
                {9 u' Q9 I3 ~  i/ |! o5 v4 b
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
; s5 j! S% E: H
( @0 d9 `2 t+ _: W+ ~! w) E                    GetOperationSubType(operation);
6 r: P+ [; x) ^" S7 y
, i* |' g8 G; |# S3 l* M/ ^! I                } /* if type */
, s0 @8 g) D0 D2 U" X& Q! R8 {+ E            } /* for int i = 0 */" Y1 ^' \" Q( V  l# ]: ]1 d
        }
( r/ ^# B2 u8 k& g) @3 y        caTCh (NXOpen.NXException ex)
# {; q" p) M7 l* `# |' ^* c        {
4 M0 C8 j/ a  X9 A/ u            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
  Y, {8 Y5 }6 x+ t# p; C; r9 I        }% r' w1 _7 u1 _7 o
    }
, l! s  z. \5 W  p; [1 c$ x0 u- h+ j) s; ^% U/ [
( E; r* Q2 g, X& m& y7 y) L$ S& V
    /// <summary>
" B4 r5 }! y3 f    /// Retrieve the Operation Subtype2 `/ Z/ ^8 u- Z3 V! G- Q9 Z
    /// </summary>" \' `! a+ ^! p- q: W1 c
    /// <param name="operation">The Operation to Query</param>
" L8 @8 d% p9 f9 l( M/ |0 \    /// <returns>Return the Subtype Operation</returns>+ u  f; ~/ f& m9 a6 K9 ~( [, D
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
5 J, S( I+ N! u) q  o9 d9 H    {8 E; g, w- N8 S! p
        if (operation == null) return -1;. q$ D: v2 c: v- z4 i- h4 B5 Z5 [/ C

5 l& |) K5 @+ d3 n- P; t        int type = 0;
" V, @  B9 e5 o5 U7 m, S: w/ s        int subType = 0;
" R1 o' G0 A- n% `3 {, v. {6 T: ?( B$ y# U) i% R7 T
        try
' A( O' Y& s% {8 Q, b        {
, E) [4 G7 y$ Z, k7 J            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);6 D/ L( o: H! R6 p% q* j1 I+ x. N
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());7 y  z8 g0 l5 x; g+ x& _
# V& m5 b9 [3 P
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/2 E" u1 j6 I& N- x2 n# i0 T+ y7 c; b
            switch (subType)- h- Y7 L+ H6 Y( }
            {
; G$ L/ n4 G" b2 h$ e* Q9 \7 q                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */# x) [# v5 f  S5 Y( W  w
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */* S* c4 G& i4 S8 M' c& J
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */% b4 B/ ^% `1 N, K) l% t  e; ?: v
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */8 `! r8 [. p3 B0 \6 _2 j
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */" l- l9 m7 A" l3 Q; F: V2 g
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
" X) _) q, q& ~& l$ C                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
: S' G$ ^) o( y+ n0 x. v* {+ S                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
& c( j) s, d# d8 b4 Y                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
/ L2 H: `' }- r! z( F( n! W  r                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */6 @$ D! a: o/ v
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
; v! j7 c0 g. `8 ]  O# }* W                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
" e9 T/ [6 I7 l# N. F3 ^% A, B                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */% X# J( C. t- s( k+ ^  x
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */7 s; N) h4 p1 E1 z* N8 R
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
4 Y$ L) ^$ r6 p0 [+ n                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
& N9 S! U- F+ C; }# g* t4 M5 A8 o                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
0 t7 c1 q- ]7 O) W6 }, y                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
9 S! d% |5 T1 S$ Z9 c7 n* I                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
: c& F$ R7 a+ o8 |                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */8 t) g( R- r1 S+ |7 H
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
- A3 l1 Z3 Y4 f# Q
3 c# l+ Q, `& H/ \& R                case UFConstants.UF_insp_tolerance_subtype:
& k& L7 ~% W. Z2 \- u1 V                case UFConstants.UF_insp_path_subtype:
; D& D: X$ V6 v% F# E( f/ i, B5 p                case UFConstants.UF_insp_output_subtype:
# V; L: a( }0 E6 Y: o$ Q5 s                case UFConstants.UF_insp_misc_subtype:
4 ?0 n3 \4 J! b3 N( N                case UFConstants.UF_insp_align_subtype:
0 _" U5 \% s# @* D0 i; j7 C, J                case UFConstants.UF_insp_sensor_subtype:( s! h$ e+ B, o( i7 O$ G" b
                case UFConstants.UF_insp_construct_subtype:; ?. E2 G% K5 S6 @/ G$ j: q
                case UFConstants.UF_insp_bounding_feature_subtype:
9 G4 f  @7 E' s( p$ H/ o3 U2 W                case UFConstants.UF_insp_feature_subtype:: C3 t4 ^5 y. q0 R( ?
9 q9 q/ p3 F) }; l
                case UFConstants.UF_mach_canned_cycle_subtype:
% ]$ R1 |' N- }0 U: A5 i. v$ Q, x
- N- c% Q; V' w                case UFConstants.UF_mach_laser_teachmode_subtype:
1 K0 V9 E( e7 A  J+ N; h, ^( j8 d' [* `2 E( B. m2 H: D: E) `
                case UFConstants.UF_mach_turn_roUGh_subtype:
! m% R) I  w/ H( r3 {                case UFConstants.UF_mach_turn_finish_subtype:
8 f7 b6 H/ ~9 F0 G                case UFConstants.UF_mach_turn_teachmode_subtype:; o' Q3 {) m# p: O5 ]
                case UFConstants.UF_mach_turn_thread_subtype:
& e; N: ^" _: F, l/ Q                case UFConstants.UF_mach_turn_cdrill_subtype:
5 H1 k  D& T, I2 \4 s8 @$ ^$ {                case UFConstants.UF_mach_turn_auxiliary_subtype:+ x7 @( x  A! Z: [) @
                case UFConstants.UF_mach_turn_probing_subtype:$ U( q) I% B9 i7 y% N5 z+ t
                case UFConstants.UF_mach_turn_tool_probing_subtype:6 h+ z6 h/ [/ ~. T- p3 h
                case UFConstants.UF_mach_lathe_mc_subtype:
; [7 x$ Y. ~, p                case UFConstants.UF_mach_lathe_ud_subtype:# [+ F) _2 @( ^/ j* V- H2 U

& z/ ~6 k% v% _4 c- V9 `8 @                case UFConstants.UF_mach_wedm_subtype:
" O5 [5 b5 M/ j                case UFConstants.UF_mach_wedm_mc_subtype:
6 p$ W% F( P/ A+ p4 D                case UFConstants.UF_mach_wedm_ud_subtype:/ h/ w  Y8 _+ ?% `
                case UFConstants.UF_mach_mass_edit_subtype:
: @4 ^$ y0 D! ]  [/ O% B/ v                    break;/ \9 `& j: ~3 e1 S  i2 }

' m1 e0 j( q+ R& s' ^/ F! y" I                default:! V7 L& g. u* Z
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");8 F3 w% o- C  h, x! a7 u
                    break;
1 C6 k: z. h1 D" Q; D2 x' M5 f            }$ o: ]. c" n* g1 C
        }% h$ H9 Y6 T8 B
        catch (NXException nXException)  F$ b, Z% r( v+ B. r# O
        {* O2 B& U9 ^. r7 U( ?& E- Q
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
+ c& n! t! ^$ k            subType = -1;7 u/ g3 f' u7 K( z0 M
        }
& @" R  }3 Y) m2 b
  u- [! y# V8 y% s9 r0 _/ n+ K0 X        return subType;% `6 g9 }. P7 y$ J, g6 o% E: v/ a
    }5 [& P: P, j1 ?- g' [8 q! D" ?

/ d2 |5 T" A3 V$ D/ n: Y* j    /// <summary>
/ ~0 ^1 i* o1 G$ w/ h    /// Display System Information
* U  s  G' @5 R4 k2 b    /// </summary>
% b6 P; B  K9 ^, j0 Q* S/ ~  @    /// <param name="uFPart">The UFPart to Query</param>8 W8 w9 _% T9 x) V1 _
    /// <param name="workPart">The Work Part to Query</param>
0 R8 J( p( c8 v1 Y    static void SystemInfo(UFPart uFPart, Part workPart)
5 x* h% t" p" v5 L    {
, I8 [- I: Q+ p4 e  Q        try. i1 Y% V% H8 M1 d0 K" Q
        {  t" ~' Y! u  N6 x: a$ w- d- L; m" Z, v
            SystemInfo sysInfo = default(SystemInfo);
& c7 f$ N* O4 d, S            theUfSession.UF.AskSystemInfo(out sysInfo);
% U6 I- a6 g6 I8 A* ^
$ \. v* b0 R; E: d( k8 R; l: W+ W# n            string partName = string.Empty;( V  z, M6 f6 t4 `) u
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
3 s  d6 J* p% K& r1 h% Y6 A# X/ F' z! D$ K1 \; j) s, E8 u7 u. U
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
% u: N5 H: Q6 U5 z  {. }- t            theSession.ListingWindow.WriteFullline("============================================================");
, n) b9 A+ j/ J# y+ L, o: m4 t3 A            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
# ^  y  F" I# G) E; k1 _4 I            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());* B( g5 @9 R6 z# @7 Y
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);; T# ~8 B3 I) x
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
) [* i" x" b, n" g            theSession.ListingWindow.WriteFullline("============================================================\n\n");! A% \  H* m) L. {# ~
        }
3 `0 w1 }( h, v, ?' d        catch (NXException nXException)3 c: f0 z3 j# H5 x, r' I; [# u
        {0 e8 i; u% b$ X# H$ f7 p/ d& Z
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
% Q% ~$ d# r: L        }; m, ^7 O- H- i/ {
    }
. o4 ~0 {7 @! e: F* x
- b' h# E; a$ N- D0 D8 Q9 I    /// <summary>
& k4 A6 }1 c# q    /// Unload the Current Image
) z3 T. w* ?2 @4 h    /// </summary>2 o+ O1 _& Y5 C; P/ ^% i
    /// <param name="arg">String Send by NX</param>' G, R. U' H; Y# K+ i5 S
    /// <returns>Unload Integer</returns>/ S- H! {  p7 X) f5 L5 J' Q
    public static int GetUnloadOption(string arg)4 U- B: A3 h5 j
    {
4 ?, G3 p7 N* Q& T; p        /* Unloads the Image Immediately */
( }2 F  w1 Q- S1 P- [        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);4 C: u4 G! I  r* a8 [1 d) M
1 N% r6 \( F, s! @6 \; X/ X
        /* Unloads the Image Explicitly, via an Unload Dialog */5 l  t2 _; C, K- G
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);3 q1 K: T% W6 s5 J% M, n) S" r/ ?

" u, S- N; L. E& X% o4 ]5 e: E5 C1 n        /* Unloads the Image when the NX Session Terminates */: V  c0 x9 V: ]- t
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
4 W; S- o" F# I4 |0 ^    }. C) H  Q8 x, e. }4 t# E
}[/mw_shl_code]
" d/ t4 `1 C( y7 ?' \! U2 @( n
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了