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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了* I. q+ h# y0 }+ t: x/ M( |
+ W. @6 v0 Q: D9 R9 \& R5 M
[mw_shl_code=csharp,true]using System;
0 ?! K& ?" D* a8 ^! Jusing NXOpen;- n- D! T/ G4 N; c1 d) ^& Z) J
using NXOpen.UF;
; D" j* W+ q( M- N9 musing NXOpen.Utilities;1 _1 T; G2 i4 Q6 n# A8 q
using NXOpen.CAM;% ]; P/ G1 Z# j' K7 o
using NXOpen.Assemblies;+ k5 C" J4 r/ k1 c7 {, K$ O) U
+ o. B8 ?  x3 r) Q6 X
static class GetSubTypeToOperation
6 h3 |) f& d9 ^1 P! j{
% i* q8 j' @0 Y) g9 u    static Session theSession;0 j9 P  \4 k' a5 L; h% u
    static UFSession theUfSession;9 \" x/ c+ o5 [+ T) O
    private static UI theUI;
+ K# O: e9 t7 ]
  _9 \7 v0 E  X% j# |    public static void Main()
6 T4 H( W, E% M. |# ^    {2 H6 `: `) L$ N( D. Z9 D& Y
        theSession = Session.GetSession();4 V0 Q% @3 D3 W, v: ?
        theUfSession = UFSession.GetUFSession();
5 S4 D/ U% d* F0 H        Part workPart = theSession.Parts.Work;
5 D5 u  p1 s# X$ X        theUI = UI.GetUI();
% Q" s' @7 _8 r/ Q, e' ]9 |0 ^. U6 {1 C0 H
        if (workPart == null)
9 C) ^* I* H3 U1 j6 K3 ]        {
& Y" {+ P* T/ [, s            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");  _+ X- x: v$ S. |3 p
            return;
2 e3 {4 c" \  M        }
4 ?' \; J3 w0 v* g  [: R  \0 f! S
$ J  j7 c6 u+ P2 D8 n        theSession.EnableRedo(false);
* g8 P' z4 H" v) h, T0 S7 i9 V3 F' X$ o' b* n. ~  t' ]
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
4 ]1 {; R0 y9 A$ l4 l& ~
& c( L0 h4 @& |: A        SystemInfo(theUfSession.Part, workPart);1 b/ H$ @; w0 a8 ^3 M

1 Q& w+ S) y3 G. ~        try
- [5 ~0 A/ q. K3 F+ x$ J; P. I        {7 z) U: ~' T  g" l5 d
            Tag[] operTag;
- O% J' Y# w. C            Tag setupTag = Tag.Null;
# j( K4 ~. V: L/ c, A+ e# P7 q
5 W8 i( ?3 q) P$ L2 N1 s- o            int countObject = 0;
2 b0 q& ]7 l$ N' _% N8 c) t8 b+ U: S1 I( i
            theUfSession.Cam.InitSession();
3 `6 O2 c+ p2 t4 Q" b            theUfSession.Setup.AskSetup(out setupTag);2 `1 L  q0 a; \5 O& w/ g
1 `% _, D7 A) @: l. K% Z
            if (setupTag == Tag.Null)
) }5 l7 A0 ~: r. D. h7 `            {
1 R9 S+ j( k4 c! X- E3 ]" @2 C                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");: z# B& B$ k# C2 v" r" _
                return;6 h$ Q! i3 _3 C" ^, S3 y; c4 I
            }& Y3 M0 |* q, h& C0 |8 Z' X3 Z$ C- O

/ r: n9 S- x, A! `) z- i            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);8 @& c  V# U( O

: l# |* V/ N" ]0 j            if (countObject == 0)  V  M1 i$ d6 E- r3 C0 z' v
            {% h( J8 ^, R4 ~5 y  v1 y; J
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
! i" g/ h; y% h0 G1 z" j                return;
2 N0 v+ Y3 c0 ]- j9 x6 x7 u, Q            }2 _: H9 z/ ]1 u5 U9 K  r

* H4 K# h0 R9 ?7 b  J# n            for (int i = 0; i < countObject; i++)" F! k' Q6 a0 X* b
            {
) @; U: c3 o1 l* Z- s                int type, subType;" u& v: ~, a0 \& H$ W% i

6 W) o# Z- y9 p6 e! X; _: `# }                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
$ d1 }* B, h9 f4 p) d* N
/ w- D6 H" x) P3 G+ S: k                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));! @' R. e) @. W5 }2 [
" f9 @7 Y) i3 h! y$ [
                if (type == UFConstants.UF_machining_operation_type)8 S' S2 W% r5 N+ c1 X* q, @
                {
' I- S( R) }' ~                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
; |* c# S) v4 v6 V8 j( O/ L% p- b+ c8 |  y9 l
                    GetOperationSubType(operation);8 V6 c1 l: B7 `2 p

/ y4 ]6 _4 v( ?( S                } /* if type */
1 Z- I- L% X" h1 {* v            } /* for int i = 0 */: O+ H: y# M! ~$ }2 w% M
        }* K+ d+ r( p4 O) u' B  O
        caTCh (NXOpen.NXException ex)7 N( _) r3 D# }; b7 C, C6 i5 D7 j; o
        {
( M* B9 p$ x, a- d( @( v6 h8 U            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);+ P% a9 M! ^1 t7 j5 o$ M
        }; W1 S5 s3 K3 g# X
    }
8 u" D" G; B1 j0 x( J5 d
2 \! H7 q5 `# X3 }9 u/ N" o
/ Y, z0 f+ i3 a* [' \/ G0 \    /// <summary>7 U, ~/ f5 }$ {% m
    /// Retrieve the Operation Subtype) z" k9 _: T* f9 q8 }
    /// </summary>
( z% y1 K1 m' {! c) T/ U5 x7 n/ g    /// <param name="operation">The Operation to Query</param>
1 ~9 K' H: `! N    /// <returns>Return the Subtype Operation</returns>- `% T( b; b' x' [+ ]6 ]! e
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
$ c: {" f% H" Y    {" g- X# Q1 p* ~4 Y: S- g
        if (operation == null) return -1;, q) e0 j# _( C
; Y- K' }; A1 p  B4 I  n
        int type = 0;
& d; T1 X; |: S9 l3 x        int subType = 0;
& A3 K1 x$ o% v# T$ r( @/ O6 p* C) n, t
        try# k. O% V/ H" s% u. _
        {# `* |8 X% y. \  D( P  s9 z- p
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
( H8 O" N3 ^9 N            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
9 @9 R, V& p! O- C& |" J1 f$ P, x, G: y4 G! g
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/5 T# `; i2 D) k+ I, ?# ]3 g
            switch (subType)
5 m2 Z, X" O  C* j8 W( R            {( }7 Y- W: x# A! y6 u
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */! H3 G; ~& b' i' Y5 i: I
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */' A4 R# r# M+ n# j1 ~3 n: _
                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */5 c# n% K# F8 J
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */: v& {& q" W' A( [2 x
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
, m, s1 X1 I  H/ ^) h& `/ z( a. A                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */  h  f# N* R) G) S" I
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
2 {+ ^, c  |4 w8 }( U( }                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
" K( X4 Q  a- n0 U0 i                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
. t/ d7 H0 D; g7 g                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */. L. ]# k& w5 Y
                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */& ~- p& e  ~; p, y
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
+ |* _: [! A" q- Y                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */- F2 f; G1 J+ K& q$ f+ O! e
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */9 a2 m- o3 [. l5 Q7 C$ M+ r/ @9 d
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
! d4 t# ?! i0 X; W# F                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */7 ~- Q6 ?$ a  u" E7 `
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
4 g2 w" v' Z7 V7 k, c! ~9 \                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */" L8 ]& q, a6 k- W, Q0 ?
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
% v2 y8 j9 d" B4 o- K                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */
$ g5 [2 Z% a/ o2 M; ~+ K8 g                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */  J, U  H& n* V# T
/ B, q: K- @; ^: b; z  [
                case UFConstants.UF_insp_tolerance_subtype:
+ P: P5 D: M3 `                case UFConstants.UF_insp_path_subtype:5 |' f; _! |: ~# z% g: n7 \9 p' q
                case UFConstants.UF_insp_output_subtype:4 b7 M$ X, ^, R. w3 I2 |
                case UFConstants.UF_insp_misc_subtype:
! N* J) q& o; e0 M3 G0 o                case UFConstants.UF_insp_align_subtype:
; C# H: H2 j+ `8 Y" [                case UFConstants.UF_insp_sensor_subtype:
8 c1 E# r9 s& y                case UFConstants.UF_insp_construct_subtype:  b' T( w3 k! v9 U8 Q1 ?
                case UFConstants.UF_insp_bounding_feature_subtype:
1 m) b- e0 ]! f; G- t                case UFConstants.UF_insp_feature_subtype:
, F* t; V6 O8 _# I  E- d' q% b0 h, s# D$ l: [% Q! R
                case UFConstants.UF_mach_canned_cycle_subtype:
! w2 k( E6 ^; X: |1 y; G
4 X4 }4 P( f/ E                case UFConstants.UF_mach_laser_teachmode_subtype:
9 C2 d  E7 V& w- d9 j! B2 K- o1 D* s& \( R5 U9 [/ u8 F  L
                case UFConstants.UF_mach_turn_roUGh_subtype:
0 F: y% y( G" w                case UFConstants.UF_mach_turn_finish_subtype:
: ]/ {) l( _6 o0 @6 A                case UFConstants.UF_mach_turn_teachmode_subtype:
$ k, R) Q& D1 D: ]3 P2 y; [0 E                case UFConstants.UF_mach_turn_thread_subtype:
6 o( j. J' O" q4 Q                case UFConstants.UF_mach_turn_cdrill_subtype:* R# I3 E! ^% N/ ]
                case UFConstants.UF_mach_turn_auxiliary_subtype:0 J  g% [: T2 p; f9 F/ a* A; z
                case UFConstants.UF_mach_turn_probing_subtype:
( @5 X* ?! I7 A' L/ U' ^# {0 G/ f                case UFConstants.UF_mach_turn_tool_probing_subtype:" V/ z; z: w! \8 U7 l3 D7 l$ U: i
                case UFConstants.UF_mach_lathe_mc_subtype:
" g. T9 \* o' Z6 F# [1 C1 e                case UFConstants.UF_mach_lathe_ud_subtype:
6 g/ r" v9 ^  [* P! v3 h3 y4 j4 y4 A0 m
                case UFConstants.UF_mach_wedm_subtype:
7 C- j& l2 L0 t' C1 |                case UFConstants.UF_mach_wedm_mc_subtype:
4 \. M7 s  ?& j8 j                case UFConstants.UF_mach_wedm_ud_subtype:
4 s/ J3 |1 K4 x, h: J4 v1 W                case UFConstants.UF_mach_mass_edit_subtype:
! m% B9 Z; P8 s, }6 S7 _3 Q5 d                    break;0 L8 I/ u" z5 X

% V, K6 m3 G8 U. L$ m) G                default:+ R( w+ ]# C4 C# N$ e: u7 G
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");3 U/ l0 j% @3 M8 w; ^) E
                    break;/ j& m" U8 x$ @: I$ H
            }
; s% G) |! }3 o1 v0 J        }
4 |$ }/ t6 A1 i2 G+ o3 h3 U# @        catch (NXException nXException)9 h: V7 c+ q9 k4 T! d7 F
        {
% r* J$ }. }  X: _" A" {6 ?            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
! n4 |6 g- n" }* `  `            subType = -1;
, E' K8 s) k2 p! p! [3 g1 Q        }
; a# D+ D% I' j2 j0 U/ F6 K6 L. s" W1 ~7 |" o
        return subType;- |) n4 O9 W3 t* d" w% s( h3 z
    }
' N" F$ e5 y# Z7 o+ m9 e
: u" }9 h9 k. w+ p) F; H9 N8 f, Q& h    /// <summary>% C& @' q1 d8 X; }
    /// Display System Information1 |1 O1 I6 L7 A6 ]
    /// </summary>& v  c. I+ b9 }' a. p3 j1 E: x) h
    /// <param name="uFPart">The UFPart to Query</param>
- t$ m+ u# Y! f5 n    /// <param name="workPart">The Work Part to Query</param>
+ G2 z! I& y% Z& c/ e& ~    static void SystemInfo(UFPart uFPart, Part workPart)" x4 V, m: D! f9 x
    {
# o7 k$ E/ U' V( q  M# S        try
$ W/ V! i$ V: N& r* k. H9 q9 A        {! h1 k7 b& h# p- A2 J
            SystemInfo sysInfo = default(SystemInfo);
; @- q* S1 h( _            theUfSession.UF.AskSystemInfo(out sysInfo);' _. U! ]' Z; P/ Y6 Q% x4 b' l9 I7 n

, v/ f  ^! y2 |7 z7 @            string partName = string.Empty;* b7 U( E) N; i8 _
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);; n! }3 A4 k* K, L
  q8 w4 {8 b9 E& o* s0 c3 n" ^
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();( m& H! P3 ~7 B9 t  j7 Z+ }3 b
            theSession.ListingWindow.WriteFullline("============================================================");/ ?, \+ _  A5 ?8 \! i- x
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());8 p2 r3 @/ G0 O% j: Q- J
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());! T$ t! S5 t2 j: |' t! z
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);$ }6 y1 e; Z0 T, S/ E, O3 h
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
) Z7 C7 @6 j3 e            theSession.ListingWindow.WriteFullline("============================================================\n\n");$ \" d* V/ R) f, z8 e8 [
        }7 y' @4 N2 P" _1 Y. U- e$ p
        catch (NXException nXException)
( `. l' e0 v  y. x3 i        {
! l* a0 p6 L; _8 j% a) {            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
+ E/ p5 M) ~/ w; l' P) ?, l        }7 Y% y7 I+ {; O) W  G8 W
    }0 G! t: U# X- |4 \, E. t) G3 Z/ B  z+ P
  }: N: l( s5 @+ E$ N9 E
    /// <summary>7 N( K$ \: C# L% X
    /// Unload the Current Image
( [! I) Q3 v2 `* B' c    /// </summary>5 M/ _% b4 O& c5 B! c+ W, a! r. F
    /// <param name="arg">String Send by NX</param>, D  g0 R% }' o7 @: Z) y! |+ |
    /// <returns>Unload Integer</returns>
4 J( v6 n7 p: R( E    public static int GetUnloadOption(string arg)# G! ~# U4 p8 n6 H6 \
    {
, y; i- e: W( ^) {% v5 E; h        /* Unloads the Image Immediately */  }& I: G8 Z) b+ O- D
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
5 U& i. p( n/ l' \$ ]1 ^% f5 ~% X; V
  F) E! ~# O" f# x( m        /* Unloads the Image Explicitly, via an Unload Dialog */' N( n% p$ N5 z
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
  C( k+ \/ T$ A3 t3 S( c+ U1 I) x. w1 _1 t) A
        /* Unloads the Image when the NX Session Terminates */
1 C5 G; X, B# e6 l/ Y; n        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);8 r, @) |9 X. r  I
    }
# [6 U! O; D$ `- ^" V' v: R}[/mw_shl_code]; t( g0 z0 }# Y- \1 l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了