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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了% h3 \! r% f  B, T' T
# I4 r& m' M) t* z" k
[mw_shl_code=csharp,true]using System;7 V/ a) o8 W, M) l4 Z% b
using NXOpen;
* i  U$ e* I' c/ P8 b8 ausing NXOpen.UF;7 r5 _" U1 x+ W7 p( |) Y. f; B
using NXOpen.Utilities;1 H6 d! ?( `4 R) }6 w& |7 d& d
using NXOpen.CAM;& ?0 i! H: n5 {- q# J! I
using NXOpen.Assemblies;# ^- \- J2 n5 I: g4 S0 {! N

% @1 J1 g3 k( N" }5 Istatic class GetSubTypeToOperation: |2 p" r' P# q- h* W- r
{
( H" h, D: f4 [# E* m/ b3 E    static Session theSession;
3 k. @' f( {, D    static UFSession theUfSession;
, L" ]% L7 ~8 @7 Y8 Q6 L: C! D. S    private static UI theUI;- _; ?! W9 z0 z6 c$ T% p: X
4 ?6 n' ]% R: X- H& [
    public static void Main()4 p# s8 g! F) N. P6 T3 C
    {
7 ]4 c, @! Y) |' q* F; a* g- J        theSession = Session.GetSession();
4 ^, `5 [8 d. k# ^4 E+ M        theUfSession = UFSession.GetUFSession();
2 K) `/ u/ D3 w5 [        Part workPart = theSession.Parts.Work;
! e8 S. M! v6 g4 T  ~' o- C# z; A        theUI = UI.GetUI();2 ?, T: k0 z0 ?: l5 J
9 L0 ?5 ]" K5 T/ D
        if (workPart == null). o* L, a+ _( a9 G* j0 r' u* m
        {! ?$ ]4 d! x+ q! u+ J
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
) o; R0 S& ^( I5 v, ^$ A            return;
; {) N( ^9 }3 j6 f2 R. r        }
# f9 C* z4 j+ G+ W9 }2 h  i0 _% o1 q3 @
        theSession.EnableRedo(false);
8 C; K, R  m/ r, r
4 i+ U5 u5 b* X% R( z; z; W* m& k        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
6 a6 e6 s! g& @" P' }+ A9 g8 u$ J4 `$ w3 B" F& ^1 ~' o
        SystemInfo(theUfSession.Part, workPart);
& j7 [+ Y+ `; M( w5 z" ]
; n1 L# I! O5 K" U' `4 J        try2 m) q6 \4 `- P
        {: N3 h) t+ }: t! h
            Tag[] operTag;
% ^" W9 V. X+ I( z& s( Q" H% x            Tag setupTag = Tag.Null;
. p8 Z8 o# F: {" F4 u- B$ C& d' |: `: B' E. X/ f  \4 s- l
            int countObject = 0;
8 c6 }3 ]' K& e( F0 B/ w2 p+ v1 Q- _% |! p6 I6 W
            theUfSession.Cam.InitSession();' y- A7 u& W( }* X1 n
            theUfSession.Setup.AskSetup(out setupTag);
) Q/ D/ t  A2 h3 D4 m
- O6 a' A& K3 Y. w/ L! y* \" [            if (setupTag == Tag.Null)2 {  o- l" v5 @- i& H
            {
% Y1 r; h4 k. M* c4 Z' O                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");) J8 k; U  k2 g
                return;/ [5 ?1 _0 w7 e9 V, C6 L
            }
3 p" v8 H7 g  h( j6 i6 s4 [
9 x2 W$ _5 j3 ~. C5 G6 l            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
9 u$ j" h, `7 D) t- M! [  W
$ |- f7 H* r# R            if (countObject == 0)3 W# l- M5 }) {% w4 t$ ~
            {3 K( `0 ^' r9 p
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
8 U6 c) V* v. B5 n& T( D% g/ n1 \0 G                return;
3 c( C* h4 e8 N            }
7 x/ }- c+ c8 y8 E
! z, _9 e& G5 Y# s7 M0 I0 i            for (int i = 0; i < countObject; i++)
8 s# n4 j. o& E8 a9 H            {7 f# ~8 f" q( @: ?) s1 {" I$ Z& g
                int type, subType;0 y5 J  D% D8 \2 p: C

' X& z. l7 O) J+ G6 c                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
# X& U6 ?/ A$ ]7 h6 j( p3 N4 d% q/ c0 H4 F. `
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));) _5 G6 d! H, Y% B+ f  l4 w" u

4 `5 x/ h( c* ~( r& g6 K                if (type == UFConstants.UF_machining_operation_type)
# L/ v) y) I' Z2 @7 ]6 a2 z                {+ \$ }1 s% B# e2 @3 l; [$ b  x( w
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
* T  f3 L7 m8 S/ w& }+ D
5 }1 }4 d) `9 A                    GetOperationSubType(operation);* F: j6 S. }% }- m" q( L
" I# j  u3 i6 d5 s5 J! G
                } /* if type */' c3 L9 f7 O9 e! ?( ]) y, M8 {
            } /* for int i = 0 */
, Y; {8 k- c0 F% K        }
6 F2 E' @  O+ c( }( ^        caTCh (NXOpen.NXException ex)0 R; z/ J' q6 R8 F2 o( D
        {
4 t4 l) h8 ^3 ]6 z8 C) U            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);
# z9 |; u. q& l" S4 o1 w        }
1 E! q. ]4 e, a" ]7 b    }  t- D& E% f! D. w6 L# m

. e6 Z+ k5 x+ t" @
' U: [  j" Q( L4 y8 @    /// <summary>7 j$ O# I2 v- y3 Z/ [
    /// Retrieve the Operation Subtype
: F$ O' O: u, D: `# _" t    /// </summary>7 Q) _, C+ P, X. O- Q3 t9 ?
    /// <param name="operation">The Operation to Query</param>- d* I; o" C5 @6 E
    /// <returns>Return the Subtype Operation</returns>
, V# S( ]9 S+ K    public static int GetOperationSubType(NXOpen.CAM.Operation operation)! ^# \4 b! ~1 m9 l9 L. ~
    {& V1 n5 Z# H, P6 n1 Y7 D
        if (operation == null) return -1;
9 @( T- D) u/ l4 B
* V3 @+ N5 b# V        int type = 0;3 j! [6 G* Q* t7 m
        int subType = 0;
8 x, ?) Y# a5 A* o$ O9 ]: Q7 [$ M  `, Z- B9 l: ~- \$ T
        try& \' b5 i# I5 ?0 O5 K% Z3 y
        {( v$ _7 |/ k( J, s% w
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);! C; d. Q# F$ Z+ o' s/ d
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());# H# g2 _, X9 [8 P+ a
3 X8 z' R1 T* e( ~6 I
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/$ [/ j$ x+ f9 {# i
            switch (subType)
# F' f2 |- }2 F/ G1 j9 T3 m            {) h9 L! j7 r" A+ W" g1 P
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
. r9 G. M6 Y' L+ a( S% \9 ?                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
' Q( B2 D" o. F+ e8 X& n, M8 Z                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */! j. Z9 d" c! v( E% z4 o
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */! d$ B8 h" s7 [* \" m5 E2 I: J4 Y
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */2 v+ S- u4 h( a6 |
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */( }5 {% Q% ~$ `' n
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */7 E0 S0 B: n3 y0 q/ C
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */' ^0 N5 V4 p( I# ]4 q% n. K( P
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */& I$ v; T! j5 k: I: h
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
$ E  T6 U) T6 U0 [                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
7 s5 J+ |. A2 \# N8 d- @) f' Q                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
! r+ A' G$ E0 s4 U1 B) u$ Z. K                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
( n6 w1 o/ b) ^                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */* y5 o, ]- k+ v" D; y
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
9 A' r0 Y2 ^2 Y; T                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
  ^( @0 G" w: Z; `  Q  {0 c                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */- k$ Q7 J8 r6 B  F3 _& {+ B
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
- A; D" m  a! Z: C& ^3 S* ^                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
% ?3 |2 X' p! U8 B. ^) D                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */& [! o! S2 [# M
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
! U! h0 p# F- w8 K# k3 S) F( g$ Q2 x4 Y: z4 E. b3 D+ R
                case UFConstants.UF_insp_tolerance_subtype:
7 C) |6 j2 M! ^                case UFConstants.UF_insp_path_subtype:
6 C, k0 w6 |6 x# |+ Q" F                case UFConstants.UF_insp_output_subtype:( q% v' g8 \2 G9 Y4 H
                case UFConstants.UF_insp_misc_subtype:7 O6 ?8 p9 e4 [8 m- Z& p  G" B: d5 ?5 Z! i
                case UFConstants.UF_insp_align_subtype:
0 X2 [* P; T5 r9 y: A+ b; T6 h                case UFConstants.UF_insp_sensor_subtype:
- G0 q" N+ b+ _                case UFConstants.UF_insp_construct_subtype:
, Z/ c5 J# {' E$ e0 ?; J) f1 M                case UFConstants.UF_insp_bounding_feature_subtype:4 W0 ^. K" U( D8 K
                case UFConstants.UF_insp_feature_subtype:; [; _" n2 t4 ?9 |2 M# x

7 A+ A  B) b( T                case UFConstants.UF_mach_canned_cycle_subtype:
; H  L5 `/ u. o8 E! @0 E# F4 X- g/ [' d2 f6 X% ]- e3 K2 s
                case UFConstants.UF_mach_laser_teachmode_subtype:$ o# i2 e5 H" K9 i* t% \
; c  Y3 Z/ E" t2 E2 X( B
                case UFConstants.UF_mach_turn_roUGh_subtype:
6 Z' z, T, j5 M1 F9 J% R% I0 g                case UFConstants.UF_mach_turn_finish_subtype:
; L7 Z  Q$ ~9 c" ]# |                case UFConstants.UF_mach_turn_teachmode_subtype:; [& H- Z+ I/ c* S8 k
                case UFConstants.UF_mach_turn_thread_subtype:
1 ~7 z& G+ I# g9 \# @$ ~( z                case UFConstants.UF_mach_turn_cdrill_subtype:. Q9 i3 u# t' O7 b: Q% @; q; {
                case UFConstants.UF_mach_turn_auxiliary_subtype:0 t" I- [2 Q4 A! r6 }( c. V
                case UFConstants.UF_mach_turn_probing_subtype:6 t  y+ k  a" `4 ~5 V" `) G
                case UFConstants.UF_mach_turn_tool_probing_subtype:
& k1 {- i! f5 \. [/ T% z- A1 D' m                case UFConstants.UF_mach_lathe_mc_subtype:
/ {. g6 s* }: c1 i; E* x* |                case UFConstants.UF_mach_lathe_ud_subtype:
, \) ]& |+ c  g( p- r% r* l
' o8 ~9 L6 S( F# h' \                case UFConstants.UF_mach_wedm_subtype:
8 ^7 z' _( b6 S. B0 ]4 B4 `' ~                case UFConstants.UF_mach_wedm_mc_subtype:/ g- t  B' L& k% d# l+ [
                case UFConstants.UF_mach_wedm_ud_subtype:- `$ X) i5 F+ B6 w$ W1 H) z
                case UFConstants.UF_mach_mass_edit_subtype:* s' E" c1 T2 Q' z& d
                    break;6 i# ~; S; t. C' G) U

  e9 k4 d2 B3 l$ D8 y  d" V( {) T5 G                default:2 g$ ]! H! C7 U! ~1 z% V
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
: q0 P. I1 b  P# u1 e                    break;
; d/ a4 t& `, j" ~# B* s7 j            }
% L0 Z6 T# \3 K! Q2 t        }3 H7 A& i* T" t; d4 _( q& N
        catch (NXException nXException)# X; e9 d$ w6 c$ M- j" }4 T
        {# ~$ I! A: b( P7 ?/ g) F
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());) g, D$ [$ }* s' d0 K! \5 d
            subType = -1;
& H1 [5 {# u8 Q$ A        }! r, W) y! J1 k. }6 o/ ^
, ]" v' D4 y( S# _- Q1 a
        return subType;
" C' o% d2 W6 L2 ^    }
) f3 U6 I9 \# q" M5 _$ }
" A! m0 u+ X1 N  q" s: G    /// <summary>
3 J- j, b8 R+ S$ Y    /// Display System Information  V; j  S7 E5 m; s' t2 W1 Z) g7 T5 p
    /// </summary>1 W* j! l3 y1 x/ f
    /// <param name="uFPart">The UFPart to Query</param>' R6 j4 a: n7 l5 V* x
    /// <param name="workPart">The Work Part to Query</param>
  E6 h! F( |! Q9 H' s    static void SystemInfo(UFPart uFPart, Part workPart)
. `* l& z1 I4 }+ [+ a8 h8 g    {
/ J  N3 e( _, N# t" L        try
! F% K2 m- [# }1 K/ p  ~! i' @        {
) w" t% A* [( b) A# \: f& r            SystemInfo sysInfo = default(SystemInfo);
3 z' Q' }9 y( |8 n' s$ M' g9 Z7 o( O            theUfSession.UF.AskSystemInfo(out sysInfo);' Y/ J& m# ]" ^$ z

# C5 I3 r9 \9 ]' d- f  H            string partName = string.Empty;  y( `: ]5 Y+ Y3 S( K3 z$ y5 K
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
  ^& p% B  X7 t" D5 Q: V8 I: U  ^
; a) G! }* K  p            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
4 U* s: i' L9 X" w6 J5 V- |( A) s# r" `            theSession.ListingWindow.WriteFullline("============================================================");- Y5 W+ \: ^1 F6 Q+ q3 a
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
  \- |6 v& [4 k# e; k, X; c; B            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
. K- F1 |0 z, W            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);' l  L0 t2 i7 A  @( W' F' g
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());+ u5 w3 A" n( K  M' p+ J* Q
            theSession.ListingWindow.WriteFullline("============================================================\n\n");8 W# V1 E' {) ^# D# `& X5 q" e
        }9 N# H/ J3 T, h( y/ L
        catch (NXException nXException)
/ h! W% P4 U3 ?* j/ D8 a0 b        {
. U$ t+ e9 f. y. x" T            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());! I  z  i) ?( Q* i* @. e3 R2 }4 W
        }
+ x# s, |7 K7 ~: {. t5 B0 |9 C    }- _* A0 {% t: @1 e

" m5 X7 e1 s/ H    /// <summary>
1 S! h% R( m$ K3 g    /// Unload the Current Image
3 F1 {( P- V% j    /// </summary>5 ?  U! _4 O9 }" q. c( d
    /// <param name="arg">String Send by NX</param>
" A" \, W7 n' ~- t    /// <returns>Unload Integer</returns>
, O! W9 Y! ?; q" K    public static int GetUnloadOption(string arg)5 {, `# p* |: Q. k# h
    {
& ~# b2 y& q7 t0 a        /* Unloads the Image Immediately */
. ]! v0 \  x) L        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);( T6 }7 C3 T' \: t9 [) o3 L
* z. d  }) f: l+ n: n9 ^( P* t# W
        /* Unloads the Image Explicitly, via an Unload Dialog */
  E2 D0 X0 J. H2 j; [        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
/ C6 ~' Y3 A; E' Z1 }9 X2 Q) r  r; M) R* ^/ V: o
        /* Unloads the Image when the NX Session Terminates */
9 I" _  l( l/ \4 b, R        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);/ f5 r  H6 j$ {' k2 I: _, b* o  O
    }
/ p* k: E' K1 N; J6 j' H) ?}[/mw_shl_code]
# x, X, W- i* c% p
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了