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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
/ D4 w* ?( W; S$ F! Z0 i7 B: _  N8 Q6 v+ c+ b, F- c1 ~
[mw_shl_code=csharp,true]using System;
, L) _( L. r7 z" E: cusing NXOpen;( x( i* t; U, j$ r5 Z1 h) n2 ?, b
using NXOpen.UF;
6 F/ F0 ]; o6 W2 t. W9 Ausing NXOpen.Utilities;
. l; u/ ~) O! {+ q( z. ~2 W  m' p* a  pusing NXOpen.CAM;
4 b* n5 f4 h! I  r% |using NXOpen.Assemblies;
9 M9 n0 P$ Q" q! A, U9 x% J
4 b+ D  S: F& s6 Mstatic class GetSubTypeToOperation) x6 s) D7 {/ \* K& p9 o% y' b
{
" r) A9 c) v1 d. v& F    static Session theSession;, F) E0 g$ j) V' V( _6 _( p
    static UFSession theUfSession;
( ]( _, u$ S1 D  h. K9 L    private static UI theUI;0 z; x2 V! y9 n% i. D# `

: I: F8 N$ r( p' w( y; [+ a    public static void Main(), u* o7 p' F# E% A. S' B
    {0 F# [1 W; Q5 E. U
        theSession = Session.GetSession();
8 U7 c: h* L! J. F0 c$ x        theUfSession = UFSession.GetUFSession();- E- W- J$ l/ c. f
        Part workPart = theSession.Parts.Work;
8 z, }, h2 ]2 e, y8 L        theUI = UI.GetUI();
7 P% I7 Q3 D  e) m- K* f3 H4 Y8 h, |
        if (workPart == null)
5 W& T: ?( n) V1 P2 p& u3 |; |        {6 r! _& ?. d2 o' _
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");3 ~4 X. Y1 T4 o; O! h6 h
            return;8 e1 I/ o4 d1 z  ?- Z
        }
$ [5 l  P# J" E' r3 J% }5 S2 W. L* l! c. P
        theSession.EnableRedo(false);
& o! I3 j5 V( M" A  f* S) A2 l6 a& g0 X, \: W
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
; h; W: _, u/ D& w3 i: U5 `. h$ j& S1 V9 M  {# s
        SystemInfo(theUfSession.Part, workPart);" E. t- o' Y' C8 s8 G' [

  q% e& Y/ p. O: Q0 J  K" s9 g        try
* G; E; [2 r. W6 j8 b* Z. S        {  ?' J% b- V; O  G, L! _
            Tag[] operTag;
9 B* ?& n: ~1 Z6 r& o! {5 k. i            Tag setupTag = Tag.Null;0 [9 X' h/ M- F4 S5 c  L

, }( h, `; G9 Q& _            int countObject = 0;% |6 o7 y5 c. C& J
0 T, T; V, k! A1 T4 W$ l; t3 K
            theUfSession.Cam.InitSession();3 f! x, {7 Y* r% N* k
            theUfSession.Setup.AskSetup(out setupTag);
" ~3 M( h7 Z; G5 v3 S1 m" m: y/ G- S& p
            if (setupTag == Tag.Null)7 u# T9 O  _& Q+ D. O5 o, @
            {; c' }) _/ l6 b/ |, U+ _4 g) V
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");0 L+ u9 |5 `$ W  F
                return;8 M4 Y: ]/ ]+ M) w+ Y5 Q
            }
% }% v9 A: J1 m: K/ X1 n1 j6 {) g; g1 U+ R# ~: o/ c
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);5 w: w! I1 s6 U% P' {5 o) D
8 u, B  T, g6 z
            if (countObject == 0)+ F$ X( E% b7 R( Z: r+ T
            {; u3 d5 J: F6 ?% O6 Y
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");2 @0 `& w% U! z! w. L8 x
                return;
. i/ G0 }& _' W            }$ |' m  m& F7 ]# {; I

+ w0 A0 f) C  t2 t( n            for (int i = 0; i < countObject; i++)
6 e5 N" K! h# u) A2 u$ J, x! @            {/ Y% V5 E) \4 k
                int type, subType;
! w/ e% h; L7 e6 J4 y
- Y1 v0 |$ p2 t; N                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);1 M% ~+ }. C' N# B
2 g0 h. j. p: a$ |. H
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
9 |" v6 t& q: W9 q( R
) q; p- \' p8 ]" h# ^                if (type == UFConstants.UF_machining_operation_type)
( j1 o% w0 f6 h+ |                {1 W% ]7 }9 @6 c. b% n' N* ^- L
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));  S1 K3 |5 W$ Q0 ^+ \

. h! M2 g% J+ e2 ^! B9 R                    GetOperationSubType(operation);& N. m) d2 p  D5 u

7 A" x/ s- W; z0 {, I) J; S! r                } /* if type */) I* k2 o% w) p/ E0 Q* m
            } /* for int i = 0 */
% S) v! K0 N7 @( N7 L        }, o5 ^/ a2 c5 V0 U6 P8 P3 I
        caTCh (NXOpen.NXException ex)5 r3 R* w* p! t  g$ W, }
        {8 C) M: d) y  `; D% L; F$ y  O
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);; W! z0 \( Z' C( f7 b) q- x6 }+ w5 B
        }# Q% |* X$ U+ `$ p# ?
    }4 ~* F: V6 c  B  n
; J0 D+ ?2 h. N7 ?* A9 o7 L
# J, K$ T1 U; [
    /// <summary>
5 X: B% ^+ n# d# J7 D, i; w, `    /// Retrieve the Operation Subtype- l# f/ t) @  Q+ N7 ^* W; l: ^2 K
    /// </summary>; o" ]& q8 P- y- O! x9 o% d
    /// <param name="operation">The Operation to Query</param>( W7 E/ j8 O+ D7 [1 y, B
    /// <returns>Return the Subtype Operation</returns>
$ i+ S1 ]8 v7 K4 V& a    public static int GetOperationSubType(NXOpen.CAM.Operation operation)+ |' e8 p! [6 Y
    {/ f$ ~) m: }0 g8 J+ z  q
        if (operation == null) return -1;
3 G! z( Y6 `  h
. X: L: Y' g" h: ]/ ^, C: \) ?        int type = 0;0 Z( U7 X6 @5 X1 R7 ?) `% d
        int subType = 0;
; g$ ^# q9 Q2 ~% Z" v. D8 j
: \% u* M4 x! U9 J# l3 t9 Z        try
- ?0 M, L" x+ E# x% ^        {, E  g# H0 }7 X7 ~' k( w% I: a
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
8 U8 S  Q" Z# ^            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());! n9 N5 F6 P) x9 ~& X7 e: @# p

9 R' D$ }3 k; L, w' [# T6 C# Z            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/" Z! V! L7 k2 O- H" v- B# T
            switch (subType)
2 @, S- i9 Y* k) S6 J, z# i- V1 T/ P! l            {
' B* V9 O6 X7 V) e1 r* c) a. F0 n                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */3 w8 Y+ c/ f& n8 b1 `- J
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
+ f% Q  B, f7 Y4 f9 q' v2 Q                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
: ]* Q6 I7 i2 C9 W. E                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
1 R) G$ K5 n( M, g                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
# O5 `% W2 N9 Q" y                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */# P# x5 ~2 E7 |0 v! {) f' P
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */( H% A! I  U- w" C8 F( {( d% w$ M
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */5 `/ v4 |& V& w
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
  L/ q0 M8 C, |" p: O3 C2 J1 e                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */, o4 u4 x! w4 y7 n) X
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */3 Q( Y# F1 w4 B( d: C/ H$ w
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
: y2 N# I8 y4 i                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */& Z4 B- J+ x0 X
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
/ ^( d, ?% {2 I/ D" p: A! x                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
$ w# |: Y, N% i1 o) \                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */7 o0 p7 {8 X* l. [
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
8 q# W) h2 U" \. k                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */% i& W+ [! t- `/ X& \4 d0 q; d
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
2 w. m4 O  Z; \" j7 v                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
! c! @0 X# G1 I3 ~                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
) L% ?' {- w6 \# B; S
- ^! N) I4 F+ c- p                case UFConstants.UF_insp_tolerance_subtype:
, l! q# a' B0 l5 I: r3 I+ v: ?                case UFConstants.UF_insp_path_subtype:
7 P% v: U* `! S+ _7 b                case UFConstants.UF_insp_output_subtype:
  Q9 Y1 W( x9 {1 {' {, V* n* [                case UFConstants.UF_insp_misc_subtype:: W* Q# f! t* O  j  r; H7 X& x4 Z
                case UFConstants.UF_insp_align_subtype:) y2 _. t% b) o6 C8 ^
                case UFConstants.UF_insp_sensor_subtype:0 i7 W; u  l; |/ w1 \! q
                case UFConstants.UF_insp_construct_subtype:3 ]) d0 S% z; N5 o
                case UFConstants.UF_insp_bounding_feature_subtype:
! g: j* u$ [9 E7 d                case UFConstants.UF_insp_feature_subtype:
8 U; K7 t! f! O) D5 i0 ^3 u- \5 P# ]! k, y& W' W& R4 ?
                case UFConstants.UF_mach_canned_cycle_subtype:
: l* {& Y6 d$ Z; y2 f. e! j' ?6 D" b; l5 D
                case UFConstants.UF_mach_laser_teachmode_subtype:! p9 I4 J! x; C1 W0 x) g
- C4 m- l2 A+ ~  t9 a6 T! W  L
                case UFConstants.UF_mach_turn_roUGh_subtype:
0 N1 g+ f. _/ `0 l) G0 R                case UFConstants.UF_mach_turn_finish_subtype:
+ t5 ?4 J, b8 K7 ~: n8 q% p                case UFConstants.UF_mach_turn_teachmode_subtype:
7 z+ h9 \5 S1 ?" U1 Y  |4 c; `( N                case UFConstants.UF_mach_turn_thread_subtype:
! B' c6 L4 S2 r' g                case UFConstants.UF_mach_turn_cdrill_subtype:
% f# k9 q2 z: D! F                case UFConstants.UF_mach_turn_auxiliary_subtype:7 @! R- A$ M$ n; k; K
                case UFConstants.UF_mach_turn_probing_subtype:& m. t5 x+ T( L' V6 k" ]3 q
                case UFConstants.UF_mach_turn_tool_probing_subtype:1 |9 Q3 s5 M1 r! F
                case UFConstants.UF_mach_lathe_mc_subtype:/ G1 F6 q  Y' E- y* P, O$ i1 g+ ~$ C* e
                case UFConstants.UF_mach_lathe_ud_subtype:/ ]4 q( K8 {& j+ \9 o

: i% S: @! I5 B; g/ H9 t6 `5 c; T                case UFConstants.UF_mach_wedm_subtype:
" n" C% ]  y6 U2 H" c                case UFConstants.UF_mach_wedm_mc_subtype:
. {9 M* W6 p: C) ^+ _                case UFConstants.UF_mach_wedm_ud_subtype:' {1 d% `  k2 W! {! `( u( I( m& K
                case UFConstants.UF_mach_mass_edit_subtype:
1 a! z, C& }9 k( |% f+ I; i                    break;' g) p3 V! [* M: U& M) `: u

! e9 M; \- |; G. [$ K                default:
; `; l& h5 _* C9 E8 [( D5 \. b                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");' O1 |( K- N: G& d
                    break;
  r% u1 c. K3 a/ W& U9 `            }, _' v8 b$ Z3 f$ l' I& M* t
        }* E% n8 ]; ~" }. I2 L, Y" R0 I
        catch (NXException nXException): \: H2 _7 e. m  M' U
        {
3 m# a, b# W, h% [: }! y2 Z            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());' X8 W  x3 r% c3 Q! h
            subType = -1;; k" d' M, n9 e! K" a
        }  ?. ~% t1 U% ^; Z
0 Q7 H' n2 Z4 u
        return subType;7 O+ \; m% d  }3 g
    }
9 b5 A# X& s0 i! S4 [- H  v) D; m" h
* w7 q8 f3 J; f' r, _    /// <summary>  g3 Q' [. W' u5 w) w
    /// Display System Information
* m0 V4 I9 d- X' Y6 S& p    /// </summary>
' k' y7 w2 F3 E. K( {1 d/ E  ?' ]    /// <param name="uFPart">The UFPart to Query</param>. f* F$ d3 |8 r) ^# U3 |
    /// <param name="workPart">The Work Part to Query</param>
5 M3 ~5 `3 q) k: V5 ^    static void SystemInfo(UFPart uFPart, Part workPart)
6 B& S! C9 F1 ?) S    {
& B; O+ P0 K* T5 [$ `        try$ x% f( N+ g& n) x; P8 u( W* w
        {
0 Q( f& _* p3 d& Z# N            SystemInfo sysInfo = default(SystemInfo);& ^. K6 [2 I: u2 T+ y* j7 g. G
            theUfSession.UF.AskSystemInfo(out sysInfo);$ k5 ^; x7 j) a8 A0 _

- H) t- ~, e/ ]2 A8 W# M- L            string partName = string.Empty;
& ?  x+ F( A- R            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
9 X/ y3 q$ F' O+ J1 f% O% l* w- T; N3 j' u  S- l
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
; d3 f8 k  D2 f6 G" ~- `            theSession.ListingWindow.WriteFullline("============================================================");
9 H9 I" X8 ?2 l; `' {, A% s) _            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());: ?3 |$ u5 W4 [0 Z  [7 m
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());8 a, n1 j5 m- ?* x6 A
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
, O/ H' U$ o0 P+ X& V8 l8 E            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
+ i6 p8 x  G( p+ f3 Z) z            theSession.ListingWindow.WriteFullline("============================================================\n\n");
4 z! J) `- A6 Q6 Q8 k- c        }- S( t; p. W) a8 Q' m" G
        catch (NXException nXException)
/ i9 \+ b( R9 N( y9 j: B        {
5 o6 [1 x, M- U4 ]2 \8 d: @* [            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
% Z% _3 ]0 c2 w$ [+ g4 I( x3 O" a        }% J! K9 `0 Z" n3 B# o
    }/ ]) f0 g2 H  `6 M1 t. |1 x

" [# K" H" y; m8 ]% g3 ?  ]) s    /// <summary>
3 r0 q( e9 [3 C1 ^! b6 ]    /// Unload the Current Image
& i7 ]% O! Z$ L' c$ ]    /// </summary>: k8 _7 u# J4 q6 K9 _* m/ g( T5 q
    /// <param name="arg">String Send by NX</param>3 Z) O. @' M+ K1 V
    /// <returns>Unload Integer</returns>
6 i4 f% u- ~( j- R    public static int GetUnloadOption(string arg)
- @/ @7 T  }4 o, B  U4 z; Z    {) W: N6 t8 h3 D+ l# l2 K
        /* Unloads the Image Immediately */
* y# F( m/ x" m1 w        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
5 J- L' e9 [0 v) H
9 j( p& n( [; a& v4 F  u3 V# n        /* Unloads the Image Explicitly, via an Unload Dialog */; g1 I  L/ \4 l. w! n$ w$ O
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
; c. g; |/ p# p8 w5 I& z0 D5 m& k5 _/ s$ j/ M. m
        /* Unloads the Image when the NX Session Terminates */
' l5 o" c6 o; I1 L        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
0 \4 N" G1 H# a+ F  T* P+ H    }0 A4 N, `& h" L
}[/mw_shl_code]) k% c4 b7 H% [7 [& a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了