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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了4 s  d7 F- K5 ]3 E2 A5 Y/ F3 s

+ U( }/ s6 e, Q[mw_shl_code=csharp,true]using System;
6 m3 C3 t" D$ }4 s. W0 ^0 I0 D5 e9 _using NXOpen;
! V8 ]  a$ }' C8 W: N: i1 ]using NXOpen.UF;: L' E8 U) `( E& R  t
using NXOpen.Utilities;
3 F6 ]/ [# x# f: ~" X, Vusing NXOpen.CAM;0 Y6 ?$ O1 `; \4 J4 [5 D+ z
using NXOpen.Assemblies;2 A: j7 S5 N$ b) ]1 L) I

* S! R  I# q0 D, t6 wstatic class GetSubTypeToOperation
6 k0 j, z7 G3 C/ @; X) [3 t{$ y& Z+ T  e& C
    static Session theSession;
& S9 L4 m! R' f$ c! n6 m: i    static UFSession theUfSession;8 O. J+ B& m7 e4 ]' \* J9 m
    private static UI theUI;1 [! L0 i5 S3 B4 Q: F( D7 l
, R- E' j9 l# H1 M4 f
    public static void Main()- y  }0 N- @2 p$ B. G% [) t
    {6 H* ]: E  x& h) Q( i$ G
        theSession = Session.GetSession();
- O. X. @8 y3 V4 d+ f! k        theUfSession = UFSession.GetUFSession();
) m  l$ T8 d+ {" t9 u; K% B        Part workPart = theSession.Parts.Work;& ?" C0 ?" s% A9 N; G  V: {
        theUI = UI.GetUI();' Q. Y5 o+ G2 y3 H  g
7 N- J3 r: i( K" V. n' N: M! @' Z# X
        if (workPart == null)3 ^  i/ n* [) B. D
        {8 L, a/ `! B- S. U. H% c8 q
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");8 b* C% X  y( U7 v. A2 X
            return;/ y( r9 v( R6 I9 T2 r; g& Z
        }5 b$ W! e4 B2 a) R" N7 N

2 d7 Z* C; ?- [# X        theSession.EnableRedo(false);
* ]# A- x2 D. n8 v  X
9 a5 N% Y( J; ~/ M        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
- h: k2 a# ?2 T. r3 B/ K" `, q' `5 M* n- |, O" R8 n
        SystemInfo(theUfSession.Part, workPart);2 u& V1 z. \  t
. z' o" ^- a- e: @& M2 \: M( q
        try3 B4 |. u% u0 @1 k
        {6 {  w/ ~  ~. c) d2 W9 i7 P
            Tag[] operTag;- M, }( k1 j$ g" }6 d
            Tag setupTag = Tag.Null;
: C5 \, ?6 W) `$ `$ @5 L/ X- S; n& a% _0 G- O* E1 f" K
            int countObject = 0;
: \. \5 {1 t. Y! P1 F( L" `6 X! R! j
            theUfSession.Cam.InitSession();
$ J4 `% \2 H7 @9 }            theUfSession.Setup.AskSetup(out setupTag);
8 u5 L  I) L3 G& [7 G
: ]# L" a1 \: J) Q! ~: K4 D' b            if (setupTag == Tag.Null)
! \" U" o; }7 C* @            {0 |2 B: a5 O( y5 M9 \
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
% Z  W) g# N6 y1 X! t; W- {                return;  _! t; R- W+ B2 g
            }* }, ^% e8 E; M! ^0 l

' _7 k" n7 ~! H) q/ ~# a# z  m            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
* R( d- v5 e% u# `' x6 q# ?; s2 _. ]) R7 C/ j
            if (countObject == 0)+ D4 t7 T1 z- j# C9 \/ F% B
            {
% f. c) B, N, B3 P0 ~                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
/ q0 ^1 Q5 H" v: g, w                return;: N0 s) u. A3 c9 Z  S2 u; J. Q
            }
( M$ E: W7 z: |: ^+ g
; [% X3 L0 X# v4 {/ ^7 ?            for (int i = 0; i < countObject; i++)
6 o' ^8 c) q6 ~2 [# z0 t            {( b' p) a1 a+ [1 ]- W! {3 o5 J' E
                int type, subType;
; J9 i' V; ]5 S8 P- u' G9 P* C3 V, m) z- l* g* b# f4 D
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);8 b' e: L5 W, }, l9 Y$ K- {; O/ y
% n9 J+ N- Y2 |& i
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
9 g7 Q8 n( t, }/ _6 |6 g! x7 m; U
' S! p. C3 s; _& U7 I6 L                if (type == UFConstants.UF_machining_operation_type). m9 o' e: I, w/ m( [7 o
                {
+ b  E6 T) d- t* S9 W                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));0 O+ v- {$ x9 h; O) `5 G. x
" V) Z( @0 a1 ^+ X6 Q
                    GetOperationSubType(operation);& w8 G7 K9 I9 f) X2 V7 A8 ?% J

1 ^& f0 }, C, |6 @$ @5 W: Y+ p, M                } /* if type */2 m" Q1 [* O1 \* c
            } /* for int i = 0 */
  O. a7 X4 _- n        }# P! j: [- l- b( F
        caTCh (NXOpen.NXException ex)8 j) |5 v% \; @- v
        {
3 A* \5 i. ]! D- f            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);+ J& P1 \0 a) B- @( K
        }
9 a. R) K6 o: G  ?& E2 i& O    }, L3 ]7 X7 H1 P- x# ~

. B( @7 x/ C9 n7 }" v
% l! j( j8 X' c% Z1 f    /// <summary>8 w& N% k! i( u
    /// Retrieve the Operation Subtype
7 _7 A1 \( O9 Q: Z, J    /// </summary>: Y8 f. N$ _+ h" J% F4 k
    /// <param name="operation">The Operation to Query</param>4 N; m$ W" M7 }
    /// <returns>Return the Subtype Operation</returns>1 H  l+ |/ q# k# k. W: _6 j3 v
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)9 `/ S7 A( }& M, j
    {  F: h5 k: q3 |2 D5 X8 H5 X6 W
        if (operation == null) return -1;
# f7 o$ |9 d: J3 J* [$ n2 n+ {& q9 J& I/ f1 a+ v/ W) r
        int type = 0;. t8 j" y2 P, ~4 N$ S
        int subType = 0;; H% r: \2 Q3 B5 y& H

; f  R1 U+ U' P4 x/ G# {; y  [        try3 r  j  L3 g! y4 N% X  E# A: r
        {. w* T1 W) |. P1 t5 k- ^, H4 y' @
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
' s* B0 y1 `9 r. C$ A            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());4 N+ O, t/ _7 s1 G3 o

6 b" Z. A" q  a) |            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/1 n/ p+ X8 o- T$ m
            switch (subType)
1 ]7 x6 n( G$ N            {0 g( u+ h3 C9 V2 G
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
) i* u3 B; ?$ Q/ w; m6 ?5 ]5 z  k. q9 V$ \                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
% n( Y  C$ m! l4 s; z! @                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
3 S" I* _  o$ N                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */- x# R' G: U( L; e/ v" T5 p
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */! }: K$ m% c1 E. ^$ Y6 f8 U
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */: |/ Z) k4 B( \4 Y: `5 T# C8 c% D6 s. K
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
" n. S  w3 T2 O9 E5 e                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */* w) f& ^6 D8 N9 k  n, e+ Z
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
5 ^; K5 R! v, s                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
6 V/ S9 z+ f; V( h5 a! E3 a' `                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */4 [4 ~  Z2 G$ [, d" I
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
* s% p" e4 e) r% Q: O7 `; K* f" {                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
% r3 H, j" O7 o: n0 m( }                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */; F& n  l. T9 A- V+ ]
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */. L9 J# q/ w4 D, h) Y9 p. s
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */# ~/ u: P; m! Q$ A  x: H
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
9 ^  h" e, v' d/ S, h8 `                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */  i( @! Q  s. X
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
$ b7 F3 I& K  w5 P9 F1 K% K                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
1 p! i% t, w0 k. {                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
% f! o! @5 ~: x4 I
( Z: ]- a& w1 r$ X! E$ @3 m% t                case UFConstants.UF_insp_tolerance_subtype:
8 K5 M' l9 r1 l; {9 K7 y5 ]                case UFConstants.UF_insp_path_subtype:
$ z" ?5 Z& k0 O) b# D                case UFConstants.UF_insp_output_subtype:4 S" k' g8 |3 y7 z" c3 a  V) m7 u
                case UFConstants.UF_insp_misc_subtype:9 S$ B+ p, c* K  c
                case UFConstants.UF_insp_align_subtype:+ ?  w! e2 U1 X; a
                case UFConstants.UF_insp_sensor_subtype:! O( G. J6 R5 y
                case UFConstants.UF_insp_construct_subtype:1 m* O$ L) v% `1 ~1 [) V% {
                case UFConstants.UF_insp_bounding_feature_subtype:; t+ ~+ x% H& _9 M9 `- D
                case UFConstants.UF_insp_feature_subtype:0 v% t$ ?! p" P/ I: f2 Y2 _
% F, e$ T9 j1 e# {
                case UFConstants.UF_mach_canned_cycle_subtype:! {) y+ G9 M1 E4 g: Q- G

3 V) W) {. P" [/ L* ^% T' s/ Z                case UFConstants.UF_mach_laser_teachmode_subtype:
- Y$ P& `  g5 L6 }2 t. J& d8 }4 U( v7 \+ }, p$ e  w. Y) X
                case UFConstants.UF_mach_turn_roUGh_subtype:
1 r" f& D% v) M  u, c                case UFConstants.UF_mach_turn_finish_subtype:- ?$ P' G2 k% |( A) R
                case UFConstants.UF_mach_turn_teachmode_subtype:
' D. x0 T0 ?/ v, k                case UFConstants.UF_mach_turn_thread_subtype:2 q8 Q5 I( C, V, Y5 r" W; V
                case UFConstants.UF_mach_turn_cdrill_subtype:
) K$ z2 A. }# m0 J' ~% t                case UFConstants.UF_mach_turn_auxiliary_subtype:
, b- ?7 d& F4 G                case UFConstants.UF_mach_turn_probing_subtype:* g, V6 O) P) g3 r! `/ F3 [
                case UFConstants.UF_mach_turn_tool_probing_subtype:
2 d; L* h1 L( Q& {4 M3 G                case UFConstants.UF_mach_lathe_mc_subtype:
7 W- V7 r( J/ {, e  `  G* |; q                case UFConstants.UF_mach_lathe_ud_subtype:8 W* O" K$ p) l; X' n% B2 X  f2 S2 Y
2 _1 Q' t' M, z; i% R; e3 M% a
                case UFConstants.UF_mach_wedm_subtype:& Y! {/ u, G$ m  S+ z1 s) }
                case UFConstants.UF_mach_wedm_mc_subtype:3 D3 I3 q5 R6 H$ g5 f$ g. H  {
                case UFConstants.UF_mach_wedm_ud_subtype:
4 s  y2 n0 j- f% t                case UFConstants.UF_mach_mass_edit_subtype:
# {1 b7 A+ X- Q" |+ c* V                    break;
% N9 q; `" ^$ }7 n" U+ w  N1 S& i( {4 o
. J- H) z  T. C, }7 I                default:% V8 j" i# A1 T7 p  c
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");% S& V* @# j' W% p% u
                    break;0 p$ d5 b% B  G8 @
            }  j( ^7 Z* @) |/ j2 K9 K
        }
$ ]1 A8 [: D$ C7 {6 L  B. L        catch (NXException nXException)2 g/ `  A; I- T: J- W
        {& r0 v3 P* a" a
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
. p6 X+ @0 |' t2 o  x            subType = -1;
6 }; i6 T( e: u( V1 u, w* _        }
7 r, c8 i; O- M: z- [  h
$ {3 O1 T+ X# D& o: g$ \4 C! t* f- b        return subType;9 d& M7 z+ p/ G+ k8 s$ \- o. p
    }
9 e: h1 [( K, G2 H" b& {" }! }4 n. f5 G0 u* W: @
    /// <summary>% x0 k$ }5 g8 E( V% X% y
    /// Display System Information% J: d, a" {; t) f
    /// </summary>' i6 F6 ~7 Z, z
    /// <param name="uFPart">The UFPart to Query</param>% s/ g4 [5 R% w! K$ n  A3 X9 S
    /// <param name="workPart">The Work Part to Query</param>; Q  y# `+ v0 y/ y1 _4 X0 q
    static void SystemInfo(UFPart uFPart, Part workPart). x7 F) m8 w1 ?4 i
    {/ J' f, z1 I$ |9 Q7 n8 v
        try
! W4 A) z9 a4 q        {. f9 _- O6 I3 R" K' ^
            SystemInfo sysInfo = default(SystemInfo);" d) R+ w5 B* m$ K8 b3 ]# J
            theUfSession.UF.AskSystemInfo(out sysInfo);
9 f4 C4 t9 u2 c. I! x: V/ R6 ?
6 U, Q/ d7 c0 l. N4 Z( x            string partName = string.Empty;
6 h( q; O2 u4 B6 M( b            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
% l, s; Q: v$ Q. B
, s+ c0 ?& k4 `, Y/ w' |            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
0 y3 C4 c2 `* ]6 m3 K2 T            theSession.ListingWindow.WriteFullline("============================================================");
9 P- }8 b$ R6 g( {1 e            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());  {- @2 ]" b7 v
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
7 _+ }4 c+ ^, E" t2 O, B; r8 P$ D            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
* w+ t# {7 x& w$ F. E( n- U            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());- s/ Z1 B2 z" r1 K  |" b9 y
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
7 D. O& @2 [  b! t$ C        }
. `5 _! J# q; n" J        catch (NXException nXException)4 w( b* u. W0 r* k' B+ f% n6 {) ]
        {0 F$ A- X8 I& t% c2 \* R
            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
/ F: v" f/ `5 v- p1 i- m        }
; k# ~% B$ |2 a  d! N8 l( V1 A7 j    }
7 N: ]* O, }9 H9 M. |8 m- {( A& R3 y1 b* V( {0 m* ]- D
    /// <summary>
& b: d5 z3 ~6 O1 o, G    /// Unload the Current Image
  r3 ?, E) M3 X" `4 D    /// </summary>
8 N$ w5 J( w+ j    /// <param name="arg">String Send by NX</param>' w+ u+ l3 V6 ~
    /// <returns>Unload Integer</returns>
  o3 C  d* F( \0 h! m    public static int GetUnloadOption(string arg)1 x5 x9 B( ]2 U4 Z0 w; ?8 l
    {
7 Q- t; [; e$ A7 C$ {  X        /* Unloads the Image Immediately */
  K% s* A. B8 Y" F        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
9 J6 x, @( \, N  |1 @" ~2 b2 I, p' ]2 R# ~) V% r( y
        /* Unloads the Image Explicitly, via an Unload Dialog */
3 O3 K% [2 L/ B* T0 _        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);" ^/ ?' L) j, ^! O

- [- j" g3 X* [9 E* B        /* Unloads the Image when the NX Session Terminates */
3 ]4 ~- _0 Y' C. F& |        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);0 G2 [6 b! `; D! z! i+ f
    }
6 U/ Z# Y" {$ Q" t' @}[/mw_shl_code]
9 n/ E, h. r* ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了