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 2190 0

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
* Y2 e# ^6 F9 Y8 I' X: J# X) e" o  J" j+ J" m: M; F) ^
[mw_shl_code=csharp,true]using System;  a4 ]4 g& t5 \8 j1 ^, r2 D" V
using NXOpen;, s+ Y" [8 }: w6 W9 C$ B
using NXOpen.UF;
5 \% b8 n' I4 s: C- F) X/ Gusing NXOpen.Utilities;8 U$ Q; K: {" b# M, a# F8 G/ j
using NXOpen.CAM;
) Z- o/ g1 L. r" D9 V$ t+ Jusing NXOpen.Assemblies;5 g) r/ x5 m! R, ?. ?0 S8 W
; t% U6 r9 u5 N: q9 ^2 ?# c# t
static class GetSubTypeToOperation/ p. r; U) |) L# \4 g
{/ q( ]$ j3 z) F. m4 q* }
    static Session theSession;% l: ~! Z& h( A3 y/ @
    static UFSession theUfSession;
/ Z. F, A, F' o$ H* e    private static UI theUI;3 i: c: R2 G9 {# P
1 h# T, O5 a+ K7 I% Y8 i% w& R4 g; P
    public static void Main()4 O# _2 T# k, _8 }; |8 e8 g! n+ x
    {
! b8 p! R: f6 Z7 e9 B        theSession = Session.GetSession();  ^9 v' o3 M  x$ ]* q) x0 n
        theUfSession = UFSession.GetUFSession();
/ b; T4 z0 ~2 U" T6 ?* i        Part workPart = theSession.Parts.Work;7 [! u0 Z& s. a& q4 @- w
        theUI = UI.GetUI();/ W  b$ L) a1 c% R: L' W

# x% {- I! R2 M1 N( z/ n& D        if (workPart == null)
: {" R; I2 l- d. n        {
; H6 @( `1 y3 k9 V- e6 i- X            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");& H- T( C9 k2 _% b
            return;2 H5 Y5 L. N3 t, x/ l" \% W
        }
' [+ p1 k# j8 ^& v
7 i3 {* w! _/ y$ a& [% p        theSession.EnableRedo(false);- q8 h8 L' E- O+ ]4 }! G1 V& I% Q5 d

+ B* i% `9 |+ d- O        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();# y  p* u: P+ ?: D1 P2 v
% O6 t$ X) q4 c6 f9 j" H% b5 o
        SystemInfo(theUfSession.Part, workPart);# C" _5 H; ^2 n' d% _8 X

% u% m# i% A; P; ~) z# ?6 y        try
+ |, C, X2 _/ s- ~( Z        {
* K+ z/ t* m5 L3 O% c1 f# R* X            Tag[] operTag;" }8 I/ Q5 w+ G7 X& ~
            Tag setupTag = Tag.Null;
# ~$ X' i6 i. D# z
: c) b7 S( U, s            int countObject = 0;* F! \: A* x0 C, B9 ~

, m+ \! Y4 g2 V) J; q! o9 B1 p            theUfSession.Cam.InitSession();
" o% K# A! r/ ^7 F6 j            theUfSession.Setup.AskSetup(out setupTag);
7 ^8 X) u+ U) W8 \# A- s' |6 i
+ W) V6 U# ?$ k) C            if (setupTag == Tag.Null)
; j; T2 V& w" p' [$ c            {
+ r* C( D& ^4 V& v/ V                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
5 z/ {1 }% @5 d3 G- x) }- p                return;; U; R4 |3 C3 t. t- M( S
            }* U8 ~' M1 d: D: Q

. {: d) q8 l0 u6 r" l9 [# G            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);2 p& i- u  _" o, h5 ?1 o

. c: I' j* }' J. N9 Y/ J            if (countObject == 0)/ h! O/ O% y% d7 d' Z; B2 D7 e6 g- J
            {
1 t+ i& ?4 c, t% w3 ]0 H: J  c/ g                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");; G/ H" e# W# A( z% @0 i
                return;
. m( Q; o% _4 S# D' t! C            }
3 p. k$ Z0 R. G: s1 ^/ c4 h" L4 N) j' j* y' m
            for (int i = 0; i < countObject; i++)
4 R7 ^9 x; W& w! \5 X            {
+ p' Q. Y* }9 o7 |& J6 C7 y                int type, subType;
0 j% d. V" h  j( o% S: {* _$ l1 g; T" {, a8 A7 c! h8 Y
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);2 j" }# }- u$ Y  m0 o4 h
9 H5 p3 c5 ?9 s0 |4 j. N
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));1 S$ f7 b: p' b, @/ V; K# [. R
, U, O0 M, i0 O5 |% ?9 n! }- l
                if (type == UFConstants.UF_machining_operation_type)
& Z% ]* D  q+ @                {( t* O( `. m1 `) Y& y. g4 _4 Q. g
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));8 @; J/ w* W3 g8 n  p5 c. A. [  K- a

. T3 Z) Z& s8 O$ }! K" x( F( l                    GetOperationSubType(operation);' h' j) {' ^; S. X/ k0 \& t) _* y
. I1 c5 _- @' \+ g# L
                } /* if type */$ Z: J1 M7 Q3 k3 J
            } /* for int i = 0 */
) @) i* H+ w- F        }" w5 G& b; x+ d! [* A. D* _
        caTCh (NXOpen.NXException ex)5 u5 k" U. Y! ~; A, D+ V
        {) w) {/ }( D' z2 d" T4 f( c5 N
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
8 }6 B+ r4 c( A5 Z& |; X  U        }
1 f* n! w/ w& n! o+ i+ R' F7 g, f    }
4 W- E! _6 P* p& b
& C+ t" @( T& U% U# u) B
$ R/ H# R# z; ?: o/ U    /// <summary>3 h1 Q" ~3 I. o) v" ^+ o0 x  x* [
    /// Retrieve the Operation Subtype
1 Q9 E" I: }& J/ f    /// </summary>1 \2 ^& d+ L- C8 j
    /// <param name="operation">The Operation to Query</param>
$ ~" a. |$ u& w4 |    /// <returns>Return the Subtype Operation</returns>+ `! t0 Q  o" [5 V5 h/ L9 k
    public static int GetOperationSubType(NXOpen.CAM.Operation operation); A! ]0 l6 n$ d+ o; o4 x- ~( ^
    {/ K: x5 Q2 b3 u1 a
        if (operation == null) return -1;9 A6 _" C# v: w7 o1 E  g
2 a, u  T  N3 d( ]3 o
        int type = 0;# x5 `( Q* M- `  t# U  Z; {0 t8 s# C
        int subType = 0;
- Q3 F8 _3 h. s$ u; E0 m$ I# w% X: @; R( X
        try
1 e+ }( g1 ^' M* N) o- Q        {
/ O* M, Y; B* k0 S            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);2 k+ g! E1 r* u! s- r
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());" U2 N5 u- B1 G9 i

" \! T+ e& d* M  M9 x6 @$ f            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
4 c3 o& K+ T8 e( J% L            switch (subType)
9 M$ D9 ~; f) E! n            {/ W" G. G2 W) }
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
7 N: c/ Q" i) K5 }5 S* e                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
5 O/ r0 o0 n$ N6 J                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */# B! E5 `7 |9 G# {
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
$ U7 x( S3 Z1 T2 S! m                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */  O2 O& O) k6 j
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */5 _7 \2 o7 U6 w) Q6 S
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
$ }+ I0 g. g- S# k5 h9 ^+ C! s% `                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
( ]9 B# s/ s5 |                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */8 Q; W: e1 `: {/ W, [/ d8 H+ K% V
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */, d; x$ W* s. S" A4 i. l. R& g
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
* z) t5 X! e* v5 f                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
  w: D# |9 h1 F" N; j                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation *// `" n- h- t* p( T5 y$ q0 n
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */' D& X) ^, c% `# @
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
, ^& A1 b2 t2 o! y6 u. x8 ?                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */- K. E9 ~/ H7 |. p9 h$ }& r
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */  i' H2 ]: i8 ]/ @) \# A: I
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
* j/ y( u- f  J% i3 S2 A! m. S                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */6 E, {  g+ i( p# a# p1 O- t8 n0 x
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
5 y. C' o5 S3 u8 z7 T                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */, U0 S3 Z, i( |7 A
9 B9 x4 |/ X3 f
                case UFConstants.UF_insp_tolerance_subtype:
. k! N2 d7 Y. ?) }  R                case UFConstants.UF_insp_path_subtype:" _4 x* c5 r/ ?3 x9 \
                case UFConstants.UF_insp_output_subtype:6 s8 @9 [# }* @* @
                case UFConstants.UF_insp_misc_subtype:# h9 \6 A9 K0 L
                case UFConstants.UF_insp_align_subtype:& x3 l0 Y) Z# l2 D7 p
                case UFConstants.UF_insp_sensor_subtype:7 G3 V0 _/ o# [1 Z. Y8 O0 n
                case UFConstants.UF_insp_construct_subtype:
- Q9 o0 U& @, w                case UFConstants.UF_insp_bounding_feature_subtype:; v) S4 a2 T. r: I1 r& Z
                case UFConstants.UF_insp_feature_subtype:/ d$ u6 q0 Z) R2 }4 S) |* {

& ?6 D9 a; `8 i                case UFConstants.UF_mach_canned_cycle_subtype:
8 g- q6 c: x: ?; I  d) v
& {! ?- _; r/ M1 v- T7 g! ]                case UFConstants.UF_mach_laser_teachmode_subtype:; B6 i2 [5 ^5 x: U
" }# e6 Y5 k4 X6 @
                case UFConstants.UF_mach_turn_roUGh_subtype:
7 z, @/ g" y; m- O" H$ `                case UFConstants.UF_mach_turn_finish_subtype:
( F; m( F" C: z; }& z                case UFConstants.UF_mach_turn_teachmode_subtype:0 S: i$ a* t+ k" `
                case UFConstants.UF_mach_turn_thread_subtype:4 ~& e0 m' O7 y8 |/ U
                case UFConstants.UF_mach_turn_cdrill_subtype:
. w4 ?: T; C' k4 C/ d- w7 a9 f4 @* f3 A                case UFConstants.UF_mach_turn_auxiliary_subtype:1 }! k7 h8 L! D6 o* v$ S
                case UFConstants.UF_mach_turn_probing_subtype:6 Z# l5 {+ u$ ?* |! H. ~# S* `
                case UFConstants.UF_mach_turn_tool_probing_subtype:. K& S! p7 [7 i2 a
                case UFConstants.UF_mach_lathe_mc_subtype:
; ~6 R% X# o: w1 V: v9 s                case UFConstants.UF_mach_lathe_ud_subtype:' }8 f+ w) ^% }+ g0 i4 K( ?
4 x  r5 S# r, O
                case UFConstants.UF_mach_wedm_subtype:+ x: C. T" U$ S, g9 ^% e
                case UFConstants.UF_mach_wedm_mc_subtype:) C+ I+ `3 ^6 X
                case UFConstants.UF_mach_wedm_ud_subtype:
# e; }  D' |* }! y% f! Q                case UFConstants.UF_mach_mass_edit_subtype:
+ G7 u# \4 m1 g                    break;
: Q8 {* n; Z: k) D3 t% @/ k0 }# {/ T% o7 p0 w2 G% p. i
                default:
0 Z$ A2 O0 N" C$ V% X5 L                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");0 ~* E$ c! }& z( r. ]& D" i3 f
                    break;, N7 L3 x& |8 b2 g% n$ k
            }7 h; o. Z: K* b( l* t1 n# V& n
        }. a: e! Y, q; @! c
        catch (NXException nXException)5 i- p3 i* R$ N, F. p
        {
' F  k+ ?$ p' _- M            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
( x1 A% {4 F9 m4 X' w            subType = -1;
, w* ]) d) z$ ~        }
3 i* P" [/ o. R' o7 q  g* r* ~" Y+ z8 C- E6 ?+ C6 O8 }
        return subType;* p6 `$ p9 ]. z2 i
    }
, j# b( P& J' W% ?
7 J# G$ m6 g& r    /// <summary>
3 t1 D9 g. q& c7 s0 A    /// Display System Information
% s2 E3 I0 T2 u4 V9 o1 p    /// </summary>
4 h& A) ~" x$ a/ Z# O: q1 I    /// <param name="uFPart">The UFPart to Query</param>
( L3 \+ t8 c) M7 h    /// <param name="workPart">The Work Part to Query</param>7 X2 e9 [2 T& i. o- E
    static void SystemInfo(UFPart uFPart, Part workPart)9 N: F; D  T2 q1 a7 t: T9 f( r
    {
  |5 B9 S- s/ j5 n6 `- I        try
5 l0 J- L0 B) m6 s8 r        {' A+ r, y" R# G* {
            SystemInfo sysInfo = default(SystemInfo);
8 o" I; x2 E) c) C! P; Q9 ]            theUfSession.UF.AskSystemInfo(out sysInfo);: H6 h; ^5 ~$ Y- \# ^

1 [; h7 K) |8 C' b            string partName = string.Empty;
- _: L. [4 r# H4 o            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);; T5 G8 ^0 H$ R; K' C$ c5 F+ q
: ]7 b# E) H3 Q/ I" y5 n
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();& w: ~% m+ L. L4 v* a, G9 {! o" ?
            theSession.ListingWindow.WriteFullline("============================================================");
7 R8 S# p9 f4 [7 S6 E) V. F            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());( L5 W  ~+ A5 W7 a3 s, O
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());" ^1 N) f1 P3 H
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);) U8 v9 L$ |6 ]6 h4 ]8 }/ a
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());. Y% B6 f5 p$ k1 Y2 ]2 a+ ?0 z
            theSession.ListingWindow.WriteFullline("============================================================\n\n");% u  d& Z7 p  E( h: W4 @8 I. p
        }
' i, V# q# K9 |: S4 V        catch (NXException nXException)5 b  M  E" l! `5 K- f
        {  j3 r8 P6 Q) O% o0 O/ m$ T  x
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
2 J; S. M/ e9 l0 |5 q        }
; K% |( \/ {7 x! n2 Z    }; f: a: c+ }$ Q  `' ?* i0 N

3 Q* t1 d6 u2 K  A, i6 `/ d    /// <summary>+ d# T, k- U# X9 d7 s' _
    /// Unload the Current Image
; ^; @3 G( C; [; t+ ^; B) O    /// </summary>
' n2 K3 t: i* ~0 N( c. O) ]! p! a: o- C    /// <param name="arg">String Send by NX</param>- k1 M7 B; h! Y/ P  m4 X; m
    /// <returns>Unload Integer</returns>3 F2 x. y: [' N5 H% n! ?' F
    public static int GetUnloadOption(string arg)
+ n8 x. ^6 c0 i# \    {
! d6 P' }- k) Z$ v5 }1 C        /* Unloads the Image Immediately */
- `; l5 p6 r7 Y3 X        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
$ ~2 H6 }/ O# x9 E- ]; _7 b3 r- I5 I' h' c$ _8 K
        /* Unloads the Image Explicitly, via an Unload Dialog */- U, `" B% T3 `6 B  f1 ?! U
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);' w5 }8 w, [" \9 N! i8 q  J
! ~: j4 m  {) O* |9 i  O6 L! J2 d+ L% }0 h
        /* Unloads the Image when the NX Session Terminates */% m2 ~! v: ?3 j
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);/ `7 H3 s/ j7 K" w' \  t
    }5 T' c9 q2 r$ p; C! s: q) S
}[/mw_shl_code]
4 [0 |- t- d- g6 D8 K) v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了