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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了% F$ B2 m- v* ?( O

- w4 j$ U0 K# j+ z8 {( U# ~7 a[mw_shl_code=csharp,true]using System;
5 o6 a/ [9 a  Yusing NXOpen;( u, a" B$ t+ p/ }* a1 E6 [
using NXOpen.UF;
$ S; ]) b6 Q6 B2 \* Vusing NXOpen.Utilities;% J- K6 [7 C; `) x$ a
using NXOpen.CAM;2 \& c8 H# R* y% j7 c  T) K- [
using NXOpen.Assemblies;
( ?8 M. ^: e4 T3 l! y" i5 P& y
+ z( y& |% X& o& }' B+ bstatic class GetSubTypeToOperation. W: C" Y  D9 k( |! _5 t4 C
{
* X( N4 N& F5 V/ x) k, u- s; b& \# ~6 Y) o    static Session theSession;+ P) \' j  Q% H5 P8 j+ O! U( g
    static UFSession theUfSession;
  E5 P, }* L+ Z" r" z- ~0 @    private static UI theUI;
4 G5 D. |' e; N, m" r  \- Y; _
' J/ K5 ]1 J5 \; q    public static void Main(). Q6 n+ a/ O( }1 e7 n# v% c+ k
    {. O8 v1 t( g3 \8 T. ~, n
        theSession = Session.GetSession();
2 A& v+ H  n4 g        theUfSession = UFSession.GetUFSession();
8 o8 ?% @% u+ q0 c" R2 v" |        Part workPart = theSession.Parts.Work;
7 [9 S/ c: h; b5 R        theUI = UI.GetUI();. x6 R! S/ L1 p! w3 f- Y
2 Z. ?. k0 _, Q# Z2 J# U2 P
        if (workPart == null)
+ ~# L+ |6 v/ e+ p        {
, k6 u( L+ f6 V* N, e            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
& C- a0 {6 K' k- b  {            return;
7 o; x- H4 N5 u: n/ ^7 ^# Y        }2 x) u" E1 _( a3 V
2 Y1 R% l! w- q+ A2 K! x: B& J
        theSession.EnableRedo(false);
# W- I! j5 E8 e  n. v9 q8 D  P% ^/ N4 c- J0 L' n
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
2 q) J2 L+ c9 q2 O: E0 C: A! ~/ `- I0 D  k
        SystemInfo(theUfSession.Part, workPart);' g6 `; i+ ^; b! @; ^! c
  I% ~  w5 ]6 }7 F: F; ~7 g
        try$ U6 u* Y0 [- w; z- k7 x
        {
0 Z* u% u3 b, e0 P# v* w% w            Tag[] operTag;
8 ]2 Y8 S% I- [            Tag setupTag = Tag.Null;$ l& \# \6 H4 E( k) N5 i% }" T

  E0 c' N- {% O: l            int countObject = 0;9 y- J; B+ y6 @% ^( f6 a
3 O" t* L8 Y1 [3 {2 @; n. `% I
            theUfSession.Cam.InitSession();
0 x0 }5 W3 E6 K9 M  ?. \            theUfSession.Setup.AskSetup(out setupTag);- w$ w+ I+ X* z& _! Z1 x& E
5 E1 j  ^8 _( e& M- d* c, D" |! |8 c
            if (setupTag == Tag.Null)
7 t0 Q( z3 a4 c! s! f6 Q( g4 M            {
) f( m+ g, K7 I7 U1 \0 N                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
+ F) j' |& x; O' M, ^' d                return;
4 h. d$ c8 j% e9 n            }
; l  _7 |4 G0 _4 Z. u" z: B6 H8 s0 [! a+ h. p# A  \$ b
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
3 Z; N1 {4 H# x1 {5 b4 D$ D1 o
' V' }. p. t* n            if (countObject == 0)1 r# W; T1 c( w. Q0 v
            {
; R- U7 H( Z& `' \                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
3 ?% ~% y# n  W4 W                return;
  o' B2 p3 ^9 G            }& ?/ H% i7 m  w1 Q% X/ u

3 S% B5 J) q/ K; O8 g            for (int i = 0; i < countObject; i++)
3 g3 Y, j% q! Y- }5 r/ @5 H            {5 ]3 _# S) g& R; r( w) W* c% _
                int type, subType;
/ X! T/ O# l# ^8 a  r+ y' G
' y1 O" J3 m' c- {                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);" Q* Q' ^: Z. T* L3 b/ l
4 ]' \& q$ _( K' T1 a9 W( w% O
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
+ m* T" {) P) z3 _8 R* ~" e
1 f! ]1 F# v6 p                if (type == UFConstants.UF_machining_operation_type); z/ `9 Y# [! Y  Z% B2 s. V
                {' J* C7 @+ [! w, E- F7 _% }2 q
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
/ r/ N# l" O% u+ Y, V$ [6 ]+ S9 q0 z& U7 A5 P& u# H$ [$ ]* d
                    GetOperationSubType(operation);% x- C# T* n. u( t$ i8 e

2 O' m$ F# @6 M; F                } /* if type */
6 U0 {9 F5 D/ g- W; q9 k            } /* for int i = 0 */6 m- W* f" _4 _2 V: ^
        }4 I$ h% J2 m" b' a3 x/ _
        caTCh (NXOpen.NXException ex)
( d- l% Q# K$ f+ y0 w$ G        {2 u+ a; F4 M' G. A" x) {" X4 f
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);/ |+ G; k3 [+ z4 t1 P6 h
        }
% e1 Z+ @5 F7 i$ W+ d2 y    }
! L5 _6 r& N2 o9 U2 M
8 o: t5 C$ u7 I: j8 \( P+ g, {) G; f8 X
    /// <summary>
& e/ K) z0 p# e% b! q9 H4 ^9 z9 b    /// Retrieve the Operation Subtype
/ @6 a( S4 M0 @" R$ m" v    /// </summary>
# V2 e4 r0 O5 R: ]2 @2 F    /// <param name="operation">The Operation to Query</param>. k% X8 p$ {6 I% s
    /// <returns>Return the Subtype Operation</returns>
, P0 C( E" l, W" c# t    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
: ^3 L, a* @! \( g) a6 |# K  d    {) w. A- J! E8 H1 `
        if (operation == null) return -1;
. u/ i4 I: \% Z/ e7 a7 n
6 ?5 C/ W! ~. _1 Q0 i2 a4 M        int type = 0;
: l+ l" x6 n1 G) n4 N        int subType = 0;4 L+ `- j7 ~1 Y- G0 i; N4 B

  T/ k& }" ?5 @, y, a, H        try
8 \& j' ^4 ?4 W) i0 R0 t7 n        {
2 K8 O- K5 x7 J            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
$ w- A6 {  ^5 e" S            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
. a# g* k2 u$ G; j' ?! l7 E. e& ^$ W; l" P8 C+ K& ^/ P, v" U( J8 @
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
( a; ^% ?; P& r% n            switch (subType)4 O8 k9 ]$ {. R& w# f3 L
            {- k) `& |) H7 a# w1 ]6 ^7 u# r: B
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */7 h$ u  {9 ^5 s: M
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */* E  A0 \( n; s
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */) L# p7 g4 {; @! h& g
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
* E! V' P% J, f                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
8 T) X9 j# ^$ v) ]) f( T                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */0 j" C) O" {' |7 R+ {" a
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */" L' O8 C& C& {9 b% [
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
0 |- _+ c7 j* L5 G; x' h3 O                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
1 K7 j. h8 l# ]                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */4 T9 q/ w4 r8 S3 q: r
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */1 y; O* m/ u& {
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
# ^5 @3 @& t& j, N4 `* X+ C* |8 Z3 m                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
8 E: N/ n( ~4 z8 H                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
# i0 l7 [8 u" r+ _* x, [& V                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */3 T4 n9 m7 a; ]7 \9 U' ~! m
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
! j* B, @$ P# n1 i7 ^* ]                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */1 C. V0 x5 {) x8 N2 [' M
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */- }. W3 `8 B! |3 L0 ~
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
. U2 s, e4 ~) f# y5 t4 b) p                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
* r- q; e8 V& m6 g0 i5 K8 c                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */: w# M& I  ]& H) e
8 H- q% A& R$ {  t) m6 w
                case UFConstants.UF_insp_tolerance_subtype:
  J' ]# D9 J/ D0 R' S. Z                case UFConstants.UF_insp_path_subtype:
+ }; w7 U, @; f- T2 R% V" L. n                case UFConstants.UF_insp_output_subtype:. q! k* u' Q- @" R3 w; l- R+ {% U" Z
                case UFConstants.UF_insp_misc_subtype:% |2 d3 L) p& k
                case UFConstants.UF_insp_align_subtype:0 k/ r0 q  f1 g+ D) P
                case UFConstants.UF_insp_sensor_subtype:
5 C( R* L+ w; Z4 N# L+ G                case UFConstants.UF_insp_construct_subtype:" o6 e. q- V" b6 a
                case UFConstants.UF_insp_bounding_feature_subtype:
3 U* G# Z  s6 F) K/ E3 X% L  J( c                case UFConstants.UF_insp_feature_subtype:
3 x6 |& y2 \! W6 [( K- K* u; p( c1 K4 |8 [& G7 W
                case UFConstants.UF_mach_canned_cycle_subtype:
  p% n) ^# Y/ m2 z$ }; ~6 ]1 K: [
0 a0 H6 Q0 E. B" O9 a                case UFConstants.UF_mach_laser_teachmode_subtype:
) R* {) t4 u2 b! T' Z5 i3 a* H- ~9 `) f( h7 w( \4 k% d* J
                case UFConstants.UF_mach_turn_roUGh_subtype:* i3 o% H( L! I
                case UFConstants.UF_mach_turn_finish_subtype:
/ [: e" [: _$ U" ?& c  Q1 \0 t$ Y$ {                case UFConstants.UF_mach_turn_teachmode_subtype:& W' P9 j2 T  W
                case UFConstants.UF_mach_turn_thread_subtype:
- a. z, Q7 f3 d                case UFConstants.UF_mach_turn_cdrill_subtype:5 j: }4 h( h" C' v/ q2 G4 w
                case UFConstants.UF_mach_turn_auxiliary_subtype:
$ k! ?5 f9 z9 @- j; W. j- G                case UFConstants.UF_mach_turn_probing_subtype:
- A4 _  t; C0 p- w* d. q: h  \                case UFConstants.UF_mach_turn_tool_probing_subtype:# M6 Y9 a" e& c1 {! Q
                case UFConstants.UF_mach_lathe_mc_subtype:
- j: {1 E* }5 |) t                case UFConstants.UF_mach_lathe_ud_subtype:
% O" a( p" Q$ Z6 k) F8 Y3 h; Y6 h' _8 _; P  x* r5 M- N
                case UFConstants.UF_mach_wedm_subtype:: M, w; \- L# R2 X
                case UFConstants.UF_mach_wedm_mc_subtype:
2 m7 b- L' K4 j2 ^                case UFConstants.UF_mach_wedm_ud_subtype:
  C+ y+ b/ x) {, `# I4 a                case UFConstants.UF_mach_mass_edit_subtype:( X+ T3 B" ^9 ^: v. }, k: k" G
                    break;
6 n' C4 h1 A) c# @" v3 x# A1 H0 m/ [
( h' `" c, R& {& [+ d                default:
$ s7 W3 X- ]8 `, v/ n" D# i                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
# @# S5 o8 @7 r( G                    break;9 l/ Q0 D( g3 J
            }5 v1 U: N1 G+ E9 p
        }
# _' }' k9 ?8 O4 ]# q) J+ w        catch (NXException nXException)* t3 }3 c% J2 `
        {
2 _& G# S9 \. ?; M2 Q            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());% Z$ O3 d: {( K& W+ s3 n/ X  g
            subType = -1;
# {+ E& x) Z# Q( C, g! N3 D6 t        }
6 e0 b3 j5 x& m5 D- D1 H
3 u/ P2 z6 K8 z: X$ ~5 ]/ J$ N7 }% P$ o        return subType;
8 @) m: u4 p: e; g" K    }5 N* U9 U1 V2 T. i7 \

5 S) K# U; h8 V9 S$ X9 I) W    /// <summary>) A9 d. \7 k' X1 [
    /// Display System Information
* A9 Z" D& F  C! }    /// </summary>
5 a9 A" K8 Y( \4 H+ ?7 \& b    /// <param name="uFPart">The UFPart to Query</param>$ v9 N4 j. [( E9 H! J. c" C
    /// <param name="workPart">The Work Part to Query</param>
0 H& M, i- l4 o$ `; K4 w4 |    static void SystemInfo(UFPart uFPart, Part workPart)
+ C$ _& ~, A6 M# x, n# ?    {
" ?0 m/ ]$ e, _* |        try/ q  b- ~  ]1 N4 d
        {, `7 l; M; J% q" \0 r/ F
            SystemInfo sysInfo = default(SystemInfo);% o+ {5 s5 Y% m! H# e7 M5 |5 J
            theUfSession.UF.AskSystemInfo(out sysInfo);
3 x$ l  `0 t2 S. F" {2 }+ b: f9 V. D. T+ a2 ?
            string partName = string.Empty;1 y9 X! F# Z# Y# x6 d- S
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);# _! R, @8 L) L8 @7 G$ r. M
, ^* A$ U, j* U% W3 X& W+ S  k- Q4 F
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();( p; I/ T& T: l# v8 i8 s( R: O3 t
            theSession.ListingWindow.WriteFullline("============================================================");8 t) ~6 v4 P  x" y2 h) E- q! e( J6 _
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
5 y5 P7 l+ |: [3 _9 j5 e* P0 ]            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());' Q  Z" e* S5 l9 e  q
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
* t. A/ T( `% J. W0 Y  ^2 h            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
9 q# N/ o0 x* G9 v& w6 }            theSession.ListingWindow.WriteFullline("============================================================\n\n");! x) d1 D% R1 H* p0 {
        }, o9 s2 a" o5 P  `, N
        catch (NXException nXException)
( s3 k, x4 p# K9 E+ m        {
! @3 ]& x7 |- A- i            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
0 h& N% K. v: R4 @) `5 V% C2 R        }
! G, i: m! O/ l2 L    }
* ?+ N. A. |6 H; G' ^9 J: [2 l: s% w6 v) C7 ]
    /// <summary>
9 u8 `& n1 ]0 F) p5 c    /// Unload the Current Image0 _, a$ |1 s+ _/ j' ?5 |7 z2 ]0 j' J
    /// </summary>
2 \+ s& r! e+ D: {1 l8 T- e: \' j    /// <param name="arg">String Send by NX</param>7 u/ [! D0 v& Z" Y8 Q& I
    /// <returns>Unload Integer</returns>
! f* T2 o4 w: x4 \6 z' z    public static int GetUnloadOption(string arg)
. E: B! s$ s3 m* t+ Y    {' w8 p% s9 l1 e
        /* Unloads the Image Immediately */, ^1 \7 H1 u* L- i7 @
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
- T' j1 l3 t3 K! Y9 A* }' h! |/ \* S
        /* Unloads the Image Explicitly, via an Unload Dialog */
* `. F2 R& D; V" m0 W3 r        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);% Z- P  x! T* M  S
# R: n. d% j- P# V& X4 D
        /* Unloads the Image when the NX Session Terminates */" h, s6 `; ?* h7 Y0 O$ V4 {
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);, ~  _1 @4 R9 `, c3 S
    }& J; @1 ]1 A/ d; A1 E
}[/mw_shl_code]
0 e4 K4 B* H9 d. h% \2 J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了