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 2227 0

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了2 ~7 A! f, G( u) l! s
: N6 j* I* G( S* a) T
[mw_shl_code=csharp,true]using System;  b5 D7 @+ o8 C+ T0 s: S% N
using NXOpen;
/ j9 ~& z4 S% o; Cusing NXOpen.UF;
! ]& J4 o1 M2 L8 {# Qusing NXOpen.Utilities;5 X6 x" J4 {! Q% {; T
using NXOpen.CAM;
$ K2 T: n, A  U1 Nusing NXOpen.Assemblies;
+ o4 W3 m% ?+ H" ]1 f2 T3 x# G" {5 f: J
static class GetSubTypeToOperation+ P, x" D2 G: h6 Z
{
& }# B' G: ^% y4 k4 q" V( j    static Session theSession;1 v" X+ O9 \3 P4 Q
    static UFSession theUfSession;
+ p- P! R! r; n5 H% R& b2 m    private static UI theUI;2 c( C2 t* \( t! t4 c/ r8 T' v9 {
' I  t9 O2 }4 V: v' K" o8 `3 d
    public static void Main()/ s. J: y) ^9 _0 w$ _' {6 V) G) K
    {
# v0 M6 a  G4 Y3 I  e        theSession = Session.GetSession();
* |& ~% ^. i; M$ ]/ \# s        theUfSession = UFSession.GetUFSession();8 ]+ \$ F  [5 \/ I1 z  p
        Part workPart = theSession.Parts.Work;' ]" u7 p% W, c8 _
        theUI = UI.GetUI();+ T/ z! t: {$ ~1 x

( m: N) s0 y4 t0 m7 `& z/ o        if (workPart == null)! c2 Y& s) g; s& B; w% a
        {/ N( M: }; f) T
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");& ]% n& d. C3 ~7 V" ]# v
            return;
6 R( ]. W" v( U" S* x9 A3 D4 E: r        }8 J9 n9 C5 F) l* l9 R
$ A3 g$ O+ A% k
        theSession.EnableRedo(false);6 k7 s" H3 V; _! }, x# [

# P* h6 m  i  J' E        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();2 p' ~4 [0 M" c8 c) K; W- N
  J8 t- }* \1 `0 v5 U- m
        SystemInfo(theUfSession.Part, workPart);7 j* L" W# Q+ n" q( M$ b3 z
+ V! L" O7 _3 X
        try
/ i0 W5 v9 n0 r        {
9 x6 \9 I: P6 n! f/ N            Tag[] operTag;
: \1 ~3 Q" @! i            Tag setupTag = Tag.Null;; t2 u3 k" Z+ d# n
4 N4 W" @2 ^& P+ f1 N/ r# ^  i# U
            int countObject = 0;) d( F9 S. ?- I7 [

! x8 ?8 ]# x+ Y8 t& Z! F            theUfSession.Cam.InitSession();" }% t: H/ d- F
            theUfSession.Setup.AskSetup(out setupTag);
" u$ @( q0 [7 K6 U8 Z$ _- `" X# v7 F2 I4 Q
            if (setupTag == Tag.Null)6 {. U$ Y* t1 ~. n! C
            {
% a& }1 |0 ?6 w; L  t, q                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");$ b' l! F. \& ]( O
                return;
0 Q9 K" h. r% Y: \* y, c( U2 q0 Y            }% P! p1 Y8 M$ v. H* V

' @% i/ }/ r1 |& m/ U            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
" A( q3 H6 w% ], G# A, \3 a& D- q( L
            if (countObject == 0)9 w  p/ A/ j6 j+ k+ T: R( ]
            {
1 ^# z3 W6 _: @9 b# u% y                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
5 o3 B! L& d$ Y7 d) P$ J. O7 i                return;
" z* d* y+ J4 f. D            }
% @- F: n$ e) B) S; d
. N5 `: z2 f3 l' _" M8 g            for (int i = 0; i < countObject; i++)
) c7 T) L" r( G( O            {+ {8 o* m& d+ J/ a& X1 f
                int type, subType;
' d( U) Q5 f5 J, _5 d; N! n5 e+ h2 Z1 B. G9 d3 x8 N
                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
3 y: b3 T4 p/ ]4 a
+ a, O2 [1 B' a' }, K+ Y1 q8 A                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));
( O' G( @* p/ m$ m7 b8 Z7 C: P& S" ^/ N2 ^+ @! j$ c, F) k
                if (type == UFConstants.UF_machining_operation_type)
! P" q& `' I1 \/ O8 u) j9 w  ^                {
1 O. n2 o) N7 G" ~9 |                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));$ e7 j) p# s9 D; V) k
1 S: ?% i4 J6 j! |
                    GetOperationSubType(operation);
1 T0 k1 p8 z: u6 t* B
* F8 \+ l5 b3 R( I9 B+ B                } /* if type */+ t! C" e# d3 ~1 ~
            } /* for int i = 0 */+ ^; N) B! m- s( }% Z
        }
0 G$ e- E* h/ P# q" z$ N        caTCh (NXOpen.NXException ex)
% q: y8 A& Y) O  d3 \        {
% }8 C5 k5 G7 E: @/ Z            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);( x$ P. L9 U. P8 H/ V. F
        }2 {8 g0 j- B! ^
    }
7 ]5 G  O# S9 c3 n1 [" e. ~# [6 X5 O( x* R9 h: H
' W2 P" [0 T: B. t! j  v2 J
    /// <summary>9 k; y5 v0 O+ q- v9 I. K1 I
    /// Retrieve the Operation Subtype' E$ o/ v5 C8 c; i1 x9 c$ p
    /// </summary>
3 [; t  K3 f& u8 L3 h2 p! C. o    /// <param name="operation">The Operation to Query</param># x. ]! L3 O. s' H2 a; ~
    /// <returns>Return the Subtype Operation</returns>" u1 {8 g; }1 [
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)6 c/ v, j6 }3 Z7 y( M4 }
    {
# z, f; y4 J6 `        if (operation == null) return -1;
: ]6 k7 X$ s  e3 @! c- A( V9 P; y
" S# K1 b6 h* q1 {7 }        int type = 0;# C. i6 \' t8 e% ^  ]
        int subType = 0;  {- |4 @" Q2 i7 r7 X  |
0 S3 S% W/ Q8 c, v0 ^
        try
  O/ j! O( K; C/ h. }8 s6 {        {6 J6 {* M/ E# z: h
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);
+ y: F7 g6 E& ^            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());
# W  ~0 M! i3 Q" p8 U, P4 U' e
9 }1 I$ b2 K$ I& R  a& Y            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/7 I3 S; w7 q7 {- Y8 Q+ ^
            switch (subType)7 ~$ {1 \5 u( C. t. s9 g
            {
* [( Z# y0 W# G( f                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */# K. @4 f9 ^# @9 U) V4 k6 X
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
. {/ G1 F- o' D8 B/ F                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */6 U& _4 s2 Z2 [. T# Q
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */+ e* r, ?8 b. v6 e) a0 X
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation *// p0 b8 _4 R3 j0 Z! b$ ?  p, r3 i
                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */
- ]# j! ^1 l. A" W) r                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */1 Z1 E+ \6 E/ }
                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */
/ E% B1 n! E0 T1 R% `                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
* @& \8 s4 X% }5 K9 ?                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
. [2 `5 b( Y* q- U$ g) M/ d: B" r                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */
  b/ \  A4 T& U4 {0 B                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */
: [& d- E+ E% k" ], r                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */
3 A6 y: ]; l; l3 K) ]% l                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
, K7 U1 ~- Z% W4 _                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */
" K7 X% y: ?2 Q+ I7 r: w' g                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */
, j7 M/ G8 D5 B2 \                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */( h" @& J; o; r9 u0 b
                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */2 M% o4 C2 p% T1 y) w
                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
2 T) E5 w2 m9 ~+ ~* d! G                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */# e" i* T' |5 R  w$ B, z# l
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
9 X5 Q4 l3 ]( Z
7 x/ e& V. |8 D3 v: x4 w                case UFConstants.UF_insp_tolerance_subtype:! F9 |8 O1 D" f0 Q# \( a# R2 w
                case UFConstants.UF_insp_path_subtype:
  D, Q5 P6 ]& U                case UFConstants.UF_insp_output_subtype:' o% r# @, D: n+ F( U6 E3 \
                case UFConstants.UF_insp_misc_subtype:" b; x- X# \$ Y' k9 F
                case UFConstants.UF_insp_align_subtype:
0 b" k2 p8 A% [& g* @2 ^$ j( [  {# u                case UFConstants.UF_insp_sensor_subtype:, }/ L9 a+ |/ u: U6 d# y% i  q
                case UFConstants.UF_insp_construct_subtype:2 x- e4 c, _) I
                case UFConstants.UF_insp_bounding_feature_subtype:, c6 z( q& H2 i# r0 k
                case UFConstants.UF_insp_feature_subtype:
* _+ ~! \3 @( \* S& m0 |8 `! F: E: G# N
                case UFConstants.UF_mach_canned_cycle_subtype:
# ~' I! D5 B7 v$ Q. s5 x# {
7 G6 B5 J2 A+ f( `6 f, ?) G4 \                case UFConstants.UF_mach_laser_teachmode_subtype:4 Y, q7 [# N$ Q) c  R  ]2 y8 l
& x- e1 R  u! [7 L2 @+ r- F& F
                case UFConstants.UF_mach_turn_roUGh_subtype:
" n$ Z% R$ H: |% L                case UFConstants.UF_mach_turn_finish_subtype:
) G" [; B! |" x  F' |/ g                case UFConstants.UF_mach_turn_teachmode_subtype:
1 Y: ^- }) f( q* b5 j                case UFConstants.UF_mach_turn_thread_subtype:6 u+ G6 S! T3 E) f6 Q
                case UFConstants.UF_mach_turn_cdrill_subtype:
: o' Q2 u( E4 I4 H( ~" {                case UFConstants.UF_mach_turn_auxiliary_subtype:& w( L1 c7 ]- i; A" W7 P
                case UFConstants.UF_mach_turn_probing_subtype:" k" e  X9 [! J1 m- X. C
                case UFConstants.UF_mach_turn_tool_probing_subtype:$ \9 ], l; v8 D# }4 I
                case UFConstants.UF_mach_lathe_mc_subtype:% f2 m& J* I/ l: ^6 i
                case UFConstants.UF_mach_lathe_ud_subtype:3 X+ H+ N/ h! C4 V+ A' h

8 M# A, @( ~. i5 m, B: D. x                case UFConstants.UF_mach_wedm_subtype:2 `% o6 A/ o; y6 V0 _+ s* N; m
                case UFConstants.UF_mach_wedm_mc_subtype:# G. z, _% d9 T# W9 c6 T4 d% }
                case UFConstants.UF_mach_wedm_ud_subtype:8 q/ F; L2 o7 e
                case UFConstants.UF_mach_mass_edit_subtype:+ G$ G) C& l# l
                    break;
& u5 W5 s5 K% B+ b* z  R2 M7 Z2 X
5 R8 p( d9 ]+ j+ v- w3 O  `& B                default:
$ B1 a/ i# I% a' I7 W3 L) U                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
9 i( h: V3 }4 u; m" P8 w( z                    break;
" p: r1 T, [5 t9 U            }- X% B7 _* {9 g: D0 {5 Q/ ?- z) W7 x( k8 r
        }
# \; l1 m6 J5 a8 b; ^! Q        catch (NXException nXException)- p' M' Y& u% A
        {
, g! Y9 I8 d4 T- d( P) A# v) w            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());: V  A; `) N4 ]( K
            subType = -1;9 G- I$ W. W1 G
        }
5 N: i0 A4 W+ {: {( H6 p8 g! t: a$ O' u
        return subType;% `  {( u6 Z6 c  G
    }; `, q. {7 d' m' S% p3 n
4 {  R, w8 O7 A4 z. S
    /// <summary>
$ p+ O  B# w5 }    /// Display System Information0 p) x4 o4 D) `7 R8 O8 m+ P% \# u- y8 Q# J
    /// </summary>0 S* \1 k8 I# W  b. o# T
    /// <param name="uFPart">The UFPart to Query</param>
8 E: |& \9 X' o    /// <param name="workPart">The Work Part to Query</param>4 Z6 Y) [( Y0 ~! U
    static void SystemInfo(UFPart uFPart, Part workPart)
) r# B( w2 t) t. _  c- D/ P+ z1 X    {
+ a" w" U5 }, I, ^, R4 R. t        try
5 d% t+ c4 r9 s9 `        {
* x9 v7 l$ q0 {; a            SystemInfo sysInfo = default(SystemInfo);7 g; v0 y- v, O% Z1 i- o
            theUfSession.UF.AskSystemInfo(out sysInfo);9 f) w/ h2 |4 Q8 m) }  F* ~

% b* ^6 O: t2 r4 K) g3 i' C            string partName = string.Empty;9 |% W8 }- _9 c: f
            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);# t2 w; V- K& c+ k$ u$ I5 g

" C1 x  b: }5 a9 {" ?5 d* [8 J: \            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
1 {3 \, j4 a5 O: H8 M/ `: S$ j            theSession.ListingWindow.WriteFullline("============================================================");
" Z* {! G$ X) E8 S9 A- v3 \            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());9 H: |9 v1 Y* n/ ?9 ^$ e
            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
/ z( l% A& v8 g6 w, X            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
; G4 {" L) d) m, m' O3 L/ l            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());
. f2 p3 Z( v9 e$ S            theSession.ListingWindow.WriteFullline("============================================================\n\n");  J" h+ U$ ]5 z& y* p
        }$ ^. _1 D3 `3 ~0 @0 n2 a; R
        catch (NXException nXException)
# [4 d% ^2 a: M7 K1 J$ r        {
3 Z3 E" K8 U5 X            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
+ Z) y, r1 c; U: n/ C        }8 a& V( G/ g- J! ~. M
    }0 o2 j( `- o3 G; p( s/ o, s5 [+ [

: K7 C7 ~4 G8 P' L$ l    /// <summary>
- S) @1 W; K& n/ _9 d: }" q5 j6 d) z, h    /// Unload the Current Image$ Q) v- D9 X! v2 K* m! r
    /// </summary>
; t, M* `: |/ m- }/ r" [$ y    /// <param name="arg">String Send by NX</param>
- Q- n; Y( S* `. A% w4 J    /// <returns>Unload Integer</returns>
  ^# f4 A. @9 I0 ~6 L  @7 f- M    public static int GetUnloadOption(string arg)
* l* P4 {2 w% p* v8 n/ a8 n    {( R1 `& E7 n" e. F/ s* Z* @
        /* Unloads the Image Immediately */: j4 q' {7 l+ I. `% h2 E
        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);% ^& Q7 g# y$ H) Z

1 W" |5 s2 z, w% q8 q" `        /* Unloads the Image Explicitly, via an Unload Dialog */+ y! `  |+ X! R1 m
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
/ K' I4 q5 p$ k/ G1 d  o8 m. G- U6 `  h1 J: A
        /* Unloads the Image when the NX Session Terminates */1 k5 C6 z& [+ ]9 W% ]
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);* A' v7 T2 U0 P" U9 R" |5 B
    }
$ Q' @) M: r: @0 i; L}[/mw_shl_code]
, F- `. A# m2 x- G7 v2 s$ }# T/ l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了