PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
7 J( k! P5 E: {0 u. @) l  N' ]* j6 z2 Z2 R6 j: J5 c7 a
[mw_shl_code=csharp,true]using System;& U, m* C. o& b7 G) K
using NXOpen;6 K4 m& R; K4 f3 P, n4 s. V
using NXOpen.UF;
: V) o8 ]# q* y& Eusing NXOpen.Utilities;8 g/ C8 F2 b: X& e% c4 t
using NXOpen.CAM;
4 \8 p1 F& l* ?5 dusing NXOpen.Assemblies;- v0 F4 e% p, K# N. h5 l% i. T
) Q# X- i* V0 R/ D" _1 D
static class GetSubTypeToOperation
# B% S; _5 J4 B% H# ?, \: k{
1 [6 V' ~2 C8 t  H% X3 ?    static Session theSession;( q$ b/ w& H7 H' ~* E* p
    static UFSession theUfSession;
( D5 c5 r# \" ]% F* [  H! q    private static UI theUI;- A- I# o" }6 |& m  e  I

2 h7 a9 Y$ n; `% T( F4 M. P    public static void Main()
% T  i! W* @; C    {) o: o* W7 G  J
        theSession = Session.GetSession();7 K, Z" s* b2 a; N$ I
        theUfSession = UFSession.GetUFSession();
% Z1 \, M* a/ g: x9 n9 l# P4 l        Part workPart = theSession.Parts.Work;
# Y8 D) l) Q; t$ e        theUI = UI.GetUI();. X/ m# U2 {* y1 \" k8 v$ Z
/ x& m* p+ s4 X! O3 }" L% K
        if (workPart == null), N4 D6 s2 Y/ _- L' Z. j# K4 Z
        {
& a; T1 L3 A7 X5 N! F3 ^% u            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");
% i; h% m; z" U8 Y+ m) C2 G: m            return;
/ @1 U; {6 I& e$ M) w4 A        }1 m% j3 a- a( n8 c) b$ N
3 v8 F1 Q/ Y  B! ]- g& L
        theSession.EnableRedo(false);% i' X, k% l% R  G
+ o5 I& n7 |( Z9 u* e# q1 T
        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();3 d6 T) N/ u' p* u/ Q

/ c0 ?4 e3 Y8 K! {- t2 i" @        SystemInfo(theUfSession.Part, workPart);/ q" t# c" n- ^1 B

$ n# f+ j2 [. ]9 K        try& y9 f0 P  V! a/ v; {, _8 x5 R7 u
        {
2 K! b5 i! o7 W9 P3 w! H3 Q' Z            Tag[] operTag;0 P: R% b/ m: [& f
            Tag setupTag = Tag.Null;# a* f& ?" K3 b
. E) K0 B) S9 v
            int countObject = 0;" r* ^3 a0 T1 r! N+ x
6 e2 O7 k1 j4 t' r
            theUfSession.Cam.InitSession();7 Q0 C* |8 j& l5 \' n3 [
            theUfSession.Setup.AskSetup(out setupTag);
" T9 f5 r* A6 F2 v
; s7 P# K. ^/ H4 e            if (setupTag == Tag.Null)
% [$ `. c8 t  K( f. y0 P0 B            {
* G' U& O7 ?* l( F' E# O( |                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");
' _- m( c$ m! d- z) }                return;2 K# H2 \5 ~" L7 t5 t3 \7 ]/ L
            }$ C8 Q7 I0 T1 ?6 i0 a
# \# z+ a# S6 }+ K/ X
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
/ P0 Y0 p: Z9 [7 I5 {) d
* \  C4 R1 j" q% h. l. ?            if (countObject == 0)
9 B% X( X9 f. k, \# f5 X8 ?# y8 e            {
5 A$ v0 h. G- g$ Z: E, M                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");: V( x2 H& d; a$ e0 n# G* v2 l
                return;
% l& I4 _, B9 {$ V9 O1 G            }
1 x- ?' ?& t/ [, L. G+ r4 p" |% o( B& u9 C4 H  w
            for (int i = 0; i < countObject; i++)
$ {& U( i. A' V* d$ o            {
. A1 e# d7 ~( [! c) u, C' ~1 G- d8 p+ P                int type, subType;. @, r. T" T, [# ?, o
$ _8 d5 j3 Q' L2 l( A9 q& q
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);! i4 I+ p' z! y) U
9 m/ Z+ i" }+ E9 J) v5 g2 A2 H' `7 n
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
: s7 G, G! k4 D* Q6 \
+ W, G9 s( W; u" M4 u                if (type == UFConstants.UF_machining_operation_type)
8 L, j. a2 v# R# L                {% d9 `6 w8 Z: |9 a
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));# a8 I, a: @. T7 E6 r6 s

1 Q, l% j0 M$ K* W# M, `                    GetOperationSubType(operation);4 W* N0 l8 m, ?, F* x* E

$ y) q+ `2 t% O, p3 m                } /* if type */' s+ m" R! }! R* s
            } /* for int i = 0 */
3 Z- D) v0 }: Y# W        }
$ w5 g4 m7 d' B0 d5 d        caTCh (NXOpen.NXException ex)3 {6 [+ t9 n3 ^6 V
        {
( w5 O& ]( y- u/ t            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);3 \% m/ A+ g6 B3 f: C
        }' S6 M4 {' H9 w- T/ {
    }
* \2 t+ A0 [; u( ^1 [. M1 a) B
. v' z3 w! Q2 N& k1 i# s* V6 a' X
    /// <summary>
( k9 p2 l, |! Q    /// Retrieve the Operation Subtype
6 X; N  e3 @- u0 e    /// </summary>/ w& P) t" c8 k0 y1 y& s% a
    /// <param name="operation">The Operation to Query</param>
0 f7 V: p  o; E$ w) x  [; Y  ~/ ~    /// <returns>Return the Subtype Operation</returns>! ?* q+ ]9 @& V  G  i  j# r, d
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
3 K3 w2 N+ K4 Y3 @0 }5 z- m    {
/ d1 I/ k/ P5 @: |: q) ~        if (operation == null) return -1;% d! k; k- J. S$ Y* R  v

8 F* ^' d3 F) o% ~; ]+ U+ ]) ~        int type = 0;
& v' L& y, c2 W2 o        int subType = 0;
- T  \1 |: L$ H# L1 Y( M( n; c
) a0 \; `7 H; \* B& B# t9 v        try
; D; S& I- v! y: v, K8 N        {" V' J% H, `( f+ p) X( C4 P  n7 C
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
7 t1 G" z/ T. @+ ], Y% t            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
5 v  n1 a; s5 [, a/ T0 e
: i$ R! g  B0 R& ^6 m6 B; K            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/# Y( ?, @0 N+ H; e" O2 u# g
            switch (subType)+ Q  O8 l% V  `2 Q! @2 M
            {' \! c+ Y. A* v: ^# y' f6 I4 \
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */+ a  X5 i- H0 N1 r; \
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
3 ?6 X; L  Y3 [% g, F7 n) `9 N$ O                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */
2 \+ q. @) d3 @9 T4 A5 d6 W                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */
  ^  M% ?4 }4 ^5 V                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */, A2 j1 r0 r4 S
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
  j, i6 u* X' i/ ~                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */% B" o! ]+ H' ~3 A/ H* b
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */$ U& y8 e9 l* f1 X. T2 h' q
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */3 Y( L0 U  \2 F
                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
5 G. V" Q8 c, F( `& W& p& }  V                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
" n" r; n* b0 o2 `                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */; ?0 j& o) @8 n+ t
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
4 X& i+ t( z/ Y2 U                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */  ?# @( f# W. L$ l5 q! ?
                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */' y; E7 ?6 y" r3 f, M0 B. [
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */: D6 ]5 O6 `# G9 ^& k( a' M& X
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
7 n4 g. b* c* F" I# ~                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */& S2 _6 d  w' N
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */9 Q* C' o: C8 g8 Y4 J% u7 x! z+ w
                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */, }4 i( T% S% a3 ?& ~; f" @7 f# k
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive *// s4 B1 g  \5 A5 c, D/ w

4 M* y2 M! N0 e                case UFConstants.UF_insp_tolerance_subtype:
- X6 }. j& R8 q3 `/ ?8 X                case UFConstants.UF_insp_path_subtype:
! {' ?/ J5 V/ M' ]: b2 E$ U$ r                case UFConstants.UF_insp_output_subtype:: [" m. F7 h; ]
                case UFConstants.UF_insp_misc_subtype:
* [# B0 Q  \) L( y6 T                case UFConstants.UF_insp_align_subtype:% a' w' y+ o* ?8 D$ ?* N' ~: \( f7 @1 g0 n
                case UFConstants.UF_insp_sensor_subtype:, L" P2 x5 d: B9 c5 m3 |! H* h
                case UFConstants.UF_insp_construct_subtype:
" V. Q# D' v. `" d                case UFConstants.UF_insp_bounding_feature_subtype:" D5 L* L- e$ @) p* B
                case UFConstants.UF_insp_feature_subtype:2 M6 B9 Q, i5 M- A7 V9 e+ Z+ M# j" X

: M( B9 q' F1 E                case UFConstants.UF_mach_canned_cycle_subtype:
! z7 K$ o5 G: F; g2 r; [
0 }) h/ S* P% r' u2 [% S5 k                case UFConstants.UF_mach_laser_teachmode_subtype:& B7 J! Y3 J7 D- U5 k/ r% e+ C. a

$ W: p1 \$ l* r- V6 [# K. r                case UFConstants.UF_mach_turn_roUGh_subtype:5 K5 a; }3 X+ s- T# F0 h
                case UFConstants.UF_mach_turn_finish_subtype:" T4 y# X! C( V3 ]
                case UFConstants.UF_mach_turn_teachmode_subtype:. q2 Q5 |8 Q! W, h" x; G  x
                case UFConstants.UF_mach_turn_thread_subtype:* a; E  u, X7 F4 S" y  }- E8 b
                case UFConstants.UF_mach_turn_cdrill_subtype:
: R5 ~2 k; V  g% B8 j                case UFConstants.UF_mach_turn_auxiliary_subtype:6 Y2 e1 t2 l( g2 O0 x
                case UFConstants.UF_mach_turn_probing_subtype:4 e+ m8 F8 A  q. B
                case UFConstants.UF_mach_turn_tool_probing_subtype:2 @8 N* Z4 I+ b
                case UFConstants.UF_mach_lathe_mc_subtype:" y8 M' u4 z& p) {2 n4 z2 ^
                case UFConstants.UF_mach_lathe_ud_subtype:
7 x2 ~& I6 J/ _9 b# m8 Q3 N* h  R0 D3 g7 D
                case UFConstants.UF_mach_wedm_subtype:1 j2 V4 b8 c. z7 `  ^& _* O2 r/ Y
                case UFConstants.UF_mach_wedm_mc_subtype:- O+ [! }- Z  S# K2 J2 d, t; x
                case UFConstants.UF_mach_wedm_ud_subtype:2 _0 I; O; |+ Q
                case UFConstants.UF_mach_mass_edit_subtype:
# a: Y3 y* _- Y5 o* J5 z( c                    break;
8 D/ J' D- D- b) Y" z$ s) _  G/ ~7 F! Y4 h% t$ q/ H9 [
                default:8 f; N$ ~2 |6 M* V8 @# ]# j$ U
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
! f9 u) X$ ^( }1 `9 A                    break;% p- T0 U; v  p/ d0 y, d
            }3 m" \, _, N# X) P+ a
        }% Z, X- p6 J. ^
        catch (NXException nXException); [4 P- Z' l7 p& y: [" k
        {6 y) z( _, l3 f5 _
            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());
& ^& n$ Z3 X( Z            subType = -1;% V0 |6 [0 R, i
        }9 \0 q& n% k3 f( e" j- I$ ]
0 }. y; q- N8 X* b7 H
        return subType;0 X! [- b3 W. c, z; q& ]  q% y. I
    }
9 ~6 {/ E% P  ]/ t$ _/ E5 D9 J2 G" A5 Q
    /// <summary>  k! r! F- W( k. W  p7 i9 G9 D- Y
    /// Display System Information
4 N; G% @: U5 Y3 N0 e0 J/ y    /// </summary>) D4 ?" i) O9 ^+ y9 e/ v" ?/ s
    /// <param name="uFPart">The UFPart to Query</param>2 m  y8 |' m! ~
    /// <param name="workPart">The Work Part to Query</param>
5 R  g. w* h8 q7 e2 d4 S    static void SystemInfo(UFPart uFPart, Part workPart)
# c) m* f; d  f1 J  E    {
" [2 L. ^, G; A; V; c9 Z4 o$ K7 K        try
9 ]- O! a; F& e2 ]9 ^        {
' ?/ p  m, J" h            SystemInfo sysInfo = default(SystemInfo);( _* T. `( V7 G! o" {9 a; G
            theUfSession.UF.AskSystemInfo(out sysInfo);6 c. d. A7 s( G7 D; m' m
$ t1 h: }1 w( ]5 H! v* h1 y0 y
            string partName = string.Empty;: p6 }; Z3 ^3 }& U8 O
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);! B1 u1 K: \1 W3 C' n3 W
( U+ l/ F3 ~! G. x% b
            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
1 Z  e* n# i- B0 ?3 N            theSession.ListingWindow.WriteFullline("============================================================");' L/ o  f3 h5 ], M& s
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());7 O$ h: k1 h5 ~4 K
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
3 M/ S$ `4 V2 {9 {3 W            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);( m+ E% p2 F2 h; h7 S. e
            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());" W* p& G$ N! q# W6 b* ^  L! e
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
$ M9 c& D2 l% B- q; I+ s        }4 y$ j/ R9 \/ a! g9 j- e
        catch (NXException nXException)3 o. r! ]9 n, M2 F0 o" w
        {
- ]1 ]9 ]& R! ^& g            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());# j+ v3 r! P. V1 T+ R1 n
        }
$ p( ?7 p' @& |% P3 }! F( Y5 I0 ~    }
! \9 j7 [5 o; G, J
4 ~- J) x! m9 I3 o3 M$ g; }0 H& w    /// <summary>1 q! s. n* k3 U+ `
    /// Unload the Current Image
$ k4 j/ S; \& e  z+ A    /// </summary>' ]/ |, `1 y/ v
    /// <param name="arg">String Send by NX</param>. Z2 E" h1 q. S- A* |
    /// <returns>Unload Integer</returns>' ?" I/ a/ f& m: _+ c4 @
    public static int GetUnloadOption(string arg), F; ?# s" q1 o# @6 W- v' S
    {% |8 z3 \9 Q3 D: u! a! k7 l
        /* Unloads the Image Immediately */( {8 y  V( Z' `/ P7 {# E5 Z# O: e* ^
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
5 Y; G8 E' [3 [) c0 Z; |6 C4 ~9 I( q8 d9 h( Q% O
        /* Unloads the Image Explicitly, via an Unload Dialog */
& h% ~; F6 _4 A        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
# b( Z% \) k1 O5 q. U; V
  |0 w% B) O  |; B6 a# n1 }        /* Unloads the Image when the NX Session Terminates */
- T: k- w+ ~0 M8 W) ]; L& ^        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);  O: ]( W- j2 _8 F
    }
4 l9 `3 }1 O) c8 \; O) t}[/mw_shl_code]. m% b( ]3 H; w" ?
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了