PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了( G2 l0 _  n& R3 A6 ]

, K: m4 t! B$ k[mw_shl_code=csharp,true]using System;
& Q" K3 p! y' @" v  l/ Cusing NXOpen;( J( c  ?* N3 Y( M/ A/ g
using NXOpen.UF;* Q2 A+ b9 M5 L3 x: ?5 z
using NXOpen.Utilities;
) ]& b& k( C! Z7 {using NXOpen.CAM;" X% \/ I% r  U" r& f' N  h
using NXOpen.Assemblies;: \/ u' o6 F/ q' B# V$ o
* a( O* H  o+ i' w
static class GetSubTypeToOperation: ]7 k8 r5 x1 }/ n# {7 b5 Y
{9 X' F2 e* m# c' Z% w! N! Y' W! [
    static Session theSession;, q# `8 t' W9 ]2 K& q
    static UFSession theUfSession;" r7 D6 |: {+ s" o2 Q0 ?8 i
    private static UI theUI;+ F, I. o  f- N( r! s! i
1 Z$ o, }, v& [0 [% [" M
    public static void Main()& ^  u, S2 g2 s8 A! N) Q# O
    {
" X" e5 M8 x+ E( x  F        theSession = Session.GetSession();
5 l' d3 C7 x4 v9 e  R        theUfSession = UFSession.GetUFSession();9 x' X4 J* @+ s  L$ v: O) q
        Part workPart = theSession.Parts.Work;
0 A' |  U. w* A, p        theUI = UI.GetUI();% M2 M/ l( M2 Q) T, M) o

& x, i$ _- y- k% }        if (workPart == null); }. ]2 D' i. Z& a) m, \
        {
: T# m& [4 {( ^5 U, g& H7 D6 F            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
0 @" R7 |6 z6 H            return;
8 L& B4 g: ~$ A! M1 C        }
! K5 b- K1 \+ ?- t- D: ^/ _8 z" q$ k- _) i9 c) u4 j
        theSession.EnableRedo(false);
! q3 O7 s* o# L( a
6 q, |* ]- _6 Y0 l        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
$ h& c" j& g- D0 x6 p2 g9 J  H+ L) ^# M$ B
        SystemInfo(theUfSession.Part, workPart);
( K; E+ l# F$ a) g) H' N! T* ]/ J& S: G" ]. C
        try
$ x) O; l- L' h/ p' d$ S* t        {
/ [6 M: K5 F% |, D$ I            Tag[] operTag;
% H: v1 i! m- K3 x            Tag setupTag = Tag.Null;
' \' p- M8 L* M- S8 j7 c  c' V/ C5 h& \5 o2 _# B. ^" T
            int countObject = 0;
' B$ ^/ t1 B1 Q0 f- P& B8 s9 d9 x( W- P( j6 S5 ?
            theUfSession.Cam.InitSession();( [5 b2 T: r& f) Z4 `" q3 A$ U
            theUfSession.Setup.AskSetup(out setupTag);
9 X% E% z, O* K
3 }! M! U: S7 Q3 c+ e1 M            if (setupTag == Tag.Null), B% k, W* |! L1 [, ^
            {
7 f7 T" p! B3 a7 C1 ]1 n8 }                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");1 \# ~) X. N6 x( Z6 q$ c+ u" b0 o
                return;6 J/ ?# {( H$ g+ y+ B! a1 D
            }% _$ S! y3 R: o4 @
4 n1 c4 B* r/ f0 I3 D3 s# o0 i
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);! |1 M& o- T9 H/ R1 }/ h/ L
  ?# e4 Q. v( a, s1 T& M& ^) \
            if (countObject == 0)9 S8 {2 p' Z( e' ?0 C2 P
            {
; c8 l4 p9 B0 i; u9 K                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");2 ~5 D/ b9 h1 u" s
                return;: T: m/ [) u! W% V# u  n. {. v
            }, Y; Q6 t) E2 L0 `6 g+ C' |

1 y  I0 J9 n4 L6 n            for (int i = 0; i < countObject; i++)
2 T! q/ D2 [! G4 p            {: C1 Y# s" c5 A
                int type, subType;
3 {; c/ E& d4 i8 C7 a/ N6 _
1 I+ U( c. z7 f- F                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);% d+ ]7 v" B  ~4 L
/ a3 x! H! @: V/ f8 u% B
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));; s7 a% p% O$ u! ?  U0 m
( t3 S$ B% R9 R* S
                if (type == UFConstants.UF_machining_operation_type)7 \  P3 K: V- p" T+ O5 z- \
                {* x& s" I. R: X$ S9 I6 V6 [
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));2 D# z' E$ m4 r: ]. T) Y7 }

$ g# l& H4 u! f2 O$ b5 B                    GetOperationSubType(operation);
, O2 g& w% b4 S' P& q) a; I$ b$ R: A  Y6 o1 N* Q. l( B, `# c
                } /* if type */1 o9 |, {$ X6 z" V# ^
            } /* for int i = 0 */: y' q  y- R* O0 W2 p
        }( L, t3 S) H! L1 J9 P
        caTCh (NXOpen.NXException ex)! ]/ C' f7 K4 r! C5 e- ]
        {
! p4 C- X$ m: e. u            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);# B. V6 t' c& B/ }# u
        }
. i; N' w( |7 [) k, P    }$ R" U  i  x2 O% r& Y; w% n

( R4 m0 d. H# f$ u; @
7 n& q% H! }/ x6 [    /// <summary>
2 N4 O3 U) e1 H9 u2 g, `+ j    /// Retrieve the Operation Subtype( Y  I4 b, w- L* e
    /// </summary>. ]* ]. S% a, v3 H) r, `  P- B
    /// <param name="operation">The Operation to Query</param>
" P( _$ _% {% t8 Y4 M: x9 [    /// <returns>Return the Subtype Operation</returns>1 u! R: w1 s( p' B' G: Q
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
1 s+ I6 S3 @% |; M    {
: ^" Z" S$ Z) M) W        if (operation == null) return -1;
7 y9 V% `$ L- b9 B# h0 ?8 t
0 R4 @! u% ^, D+ F# f5 x! _& v        int type = 0;
/ ^& f* X* K3 G! e        int subType = 0;& k" t6 K7 X' k2 ~; C' O# f# h
6 s& @- W3 x0 @0 R3 Q% i
        try
! B! `- n; |% q2 s+ ~        {
% D& h( J$ ?& {, |            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);" O: T( v6 X& s3 J' M; s6 _
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());3 A4 R7 I, u$ M4 X
5 T6 E! K4 _8 Y# i2 A8 M4 b6 m
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
2 O5 l3 U/ v+ \+ A" w  ^            switch (subType)
5 e2 z9 b+ x/ c/ V, I            {  P. w' R' b  F
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */
( v4 B2 [: Y  a% o                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
9 c+ f3 w- I. ]3 O# f" N                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
# q4 w6 ?% x- ]* `. j& Z4 u                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
3 H' Q- o; l! Z% u4 R                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */1 K1 b4 _8 M8 E; B5 `- v
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */3 B/ I/ q/ R/ l4 Z
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */5 [! R. U- j5 T: C7 n8 w
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */  D4 W6 B7 i, h7 ]+ X1 @. ~
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
1 X8 }3 h* |  g5 \) M4 n% S! I                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
# o2 I+ I3 {- g# j! |7 l( I                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */; P- s- f$ H: B+ }4 F
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */. _$ R5 B, H5 ~: N, N  T# O
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */4 W8 H5 [/ Q( t* Z$ s
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
* ~5 P6 q  I' U" d* n8 [                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
: s; q. r, U1 r$ U' C8 t& c$ S4 B: @; l                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */+ L! k6 _9 j  U. W* X
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
- i' _$ N+ [7 f# F* K0 k                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
6 n+ W: @! U: r                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
) |# B  |* O) i' f# p% n                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */8 h' w, j: X) T( C3 s7 z
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */0 k( Z0 q3 l6 [" F: @* a( G9 R
! g) _. B; I3 `) U" O' C) c
                case UFConstants.UF_insp_tolerance_subtype:
6 d8 U5 _6 u+ e* @- f. S                case UFConstants.UF_insp_path_subtype:
( A( s6 V* i  e7 N                case UFConstants.UF_insp_output_subtype:4 x+ m, n4 W& v1 W! z# Z
                case UFConstants.UF_insp_misc_subtype:! X, H( ^/ N4 g" B% r  i* `
                case UFConstants.UF_insp_align_subtype:
! p" f, M2 i, X" G/ W" D) H3 |                case UFConstants.UF_insp_sensor_subtype:5 b) h2 ?, T# U7 F6 _
                case UFConstants.UF_insp_construct_subtype:
) f5 _8 i' I# h3 i3 b  L                case UFConstants.UF_insp_bounding_feature_subtype:
+ w9 i  s' ^1 L+ v1 }$ H                case UFConstants.UF_insp_feature_subtype:
0 T7 x3 J4 s# q; D" L7 G0 e  e! X% {0 }
                case UFConstants.UF_mach_canned_cycle_subtype:+ e8 v4 X" ^  Z. G# N6 o( ^
4 X& S$ ^, c+ F0 s' r, V
                case UFConstants.UF_mach_laser_teachmode_subtype:: W5 g5 _% m" ?' G) v* C

3 F& G& r! }) E: \                case UFConstants.UF_mach_turn_roUGh_subtype:
0 V7 e0 a) z2 `8 t/ W6 L" L9 ?' F                case UFConstants.UF_mach_turn_finish_subtype:; n% M2 l2 P; p( ]% N4 ^% z3 t
                case UFConstants.UF_mach_turn_teachmode_subtype:2 z) [- R" O8 C  U) o+ r
                case UFConstants.UF_mach_turn_thread_subtype:. T8 ~, ~0 y; D' w+ X( `) \
                case UFConstants.UF_mach_turn_cdrill_subtype:$ I. L" ]' V" A# L+ {
                case UFConstants.UF_mach_turn_auxiliary_subtype:
% ~' L) w3 m3 g9 B8 [: b1 j+ [                case UFConstants.UF_mach_turn_probing_subtype:
( a9 Y1 I; D  E. D6 N% J                case UFConstants.UF_mach_turn_tool_probing_subtype:5 P7 n# ]; B9 [& j7 z
                case UFConstants.UF_mach_lathe_mc_subtype:- D5 u: r8 j. g
                case UFConstants.UF_mach_lathe_ud_subtype:! u( q! z- D3 a* j

/ v. w( U9 j- d/ W                case UFConstants.UF_mach_wedm_subtype:" Y/ Q7 F( F$ o4 _7 x& {
                case UFConstants.UF_mach_wedm_mc_subtype:; \' c1 o. _# c0 M
                case UFConstants.UF_mach_wedm_ud_subtype:
* Y; b) ?8 H" d" x+ j6 l1 h2 n1 h                case UFConstants.UF_mach_mass_edit_subtype:
8 j+ j9 A/ y: ]2 S, q6 m; `                    break;1 U: g: Q  M7 q! y2 I

- d& W! K. {5 |2 M% y( k6 B                default:
: |' K- l' k! n" f4 G4 c; ~                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");* R0 `. i! d. p/ M
                    break;( |, h3 E/ A$ R: h9 Y# N# ^8 K* Z
            }9 ^- E; x; L/ Y/ j, X
        }
" U( B/ w: i% p0 B: y        catch (NXException nXException)
( S$ t, _* T5 |* E, h. j: n0 H, N        {
7 N7 {! X5 K) I7 b3 M; T            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
/ H( R" i% P$ O2 a0 y  a/ w) r            subType = -1;! g/ r4 I+ d4 C5 ^$ `
        }- |# V' T7 d  I9 ?9 |. ~- Q- o/ h1 o

  Y8 m: b  ?: |$ h! U        return subType;
$ M9 n9 V& ?/ M* z$ q9 N9 R    }" z# L3 d+ B- M" c0 e, W1 F

6 q+ d2 E9 s( N4 w1 I. R$ L/ F$ l    /// <summary>! ~3 q) S6 b& L, \2 `. s/ [
    /// Display System Information
* J' |8 y; m. D3 X8 i' ]  m/ Q    /// </summary>. h; o1 i) d+ N, X1 P& T( @7 H
    /// <param name="uFPart">The UFPart to Query</param>
( S9 Y$ ^! e! X3 T    /// <param name="workPart">The Work Part to Query</param>
2 @* `  G- l' l! T% y6 g    static void SystemInfo(UFPart uFPart, Part workPart)/ P, I( m! b6 s- B9 r
    {- n: z( u6 u2 l5 }
        try! d3 ?; W0 a& `& Y& B6 Z( R
        {
! D/ v. _8 K! T0 |5 U/ A            SystemInfo sysInfo = default(SystemInfo);
/ M2 r2 J0 j5 g/ X/ b4 k            theUfSession.UF.AskSystemInfo(out sysInfo);
% T: G( e7 T2 M6 Y+ p  S# I) p3 [/ }
            string partName = string.Empty;/ _. S/ t4 W; Z: {1 i! ^& B
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
# [" p$ ?. D4 N# Y# q0 q, M
! _$ R5 m+ O  Q2 o$ [0 A1 d            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
6 ~  u0 V! R: ^2 p$ E            theSession.ListingWindow.WriteFullline("============================================================");
; D( g. Z1 Q0 ]6 X* s  Q" L* j            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());+ a3 H$ ^/ r2 P; o8 k
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());: f$ B, W; ?: G) w' o
            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
* S$ D1 h* f( c% G) S" D# ]            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());- p- I; I9 W7 ]! N" W. Z
            theSession.ListingWindow.WriteFullline("============================================================\n\n");& B+ y3 X  _5 O  z  b. j
        }
% [9 l; J/ \0 B& S        catch (NXException nXException)7 M# [2 N' K8 W5 f
        {
8 X. `0 k% ]. s, I5 F            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());7 f5 q" F! G; V/ D
        }
  Y: X. `; L! |+ l* V    }/ R- j* P$ D& P6 C! J" b# a

$ J/ r: g: j# W0 M2 {    /// <summary>' m! O% C6 u* `$ ]) ]6 R* Z5 H
    /// Unload the Current Image
8 d' R* _7 P; m3 ?- P: b" x- f- F    /// </summary>  u) ?" y1 @- E3 \' c
    /// <param name="arg">String Send by NX</param>% M) k, b0 m- P! o0 a/ o- H
    /// <returns>Unload Integer</returns>+ N* M4 t' A. s7 t2 g' p1 ^1 ?
    public static int GetUnloadOption(string arg)
8 n( i0 \! p3 G% l: d# {* s8 ^' T    {
8 e- U6 I- R3 l4 y6 H' E        /* Unloads the Image Immediately */
5 b8 ?  X, ~6 H% B% A        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
4 J1 u4 [& g; n7 |; A7 f5 ?: A+ ?7 j" X
        /* Unloads the Image Explicitly, via an Unload Dialog */
/ m" d% f+ m; w) h5 ~. t        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
9 p2 X0 p9 Y: `) A) Q* h
, F% p- A+ k- T( ~        /* Unloads the Image when the NX Session Terminates */% D" M' R; z' ^$ [3 \
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);$ u: \9 L, f& b/ B8 n: S2 h
    }
5 J  v+ j& ~" }  h9 B9 ]}[/mw_shl_code]
0 e8 e% `6 Y# p3 Q, X# ^
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了