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

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

admin 楼主

2018-6-1 09:27:40

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

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

x
NX 二次开发源码分享: 直接获取CAM对象类型 C#直接播放Jornal 就可以使用了
, c: Q7 H" [+ K( t& B4 ?3 o- v# D$ y$ t; E+ x
[mw_shl_code=csharp,true]using System;, F) h. f  g' r0 c- i0 c' S2 }  P+ L
using NXOpen;
5 i9 w" r9 x) H5 u/ A0 ?! v" Husing NXOpen.UF;5 g5 {( X, S! B6 l6 t0 X9 y
using NXOpen.Utilities;
2 ^/ E. {8 [" p4 V, z7 `using NXOpen.CAM;( F) F5 Y; Z7 _( p
using NXOpen.Assemblies;
6 F& J* E% M0 w+ C" D0 ]7 J$ z  z) b6 q% G
static class GetSubTypeToOperation" ?( n; k% B* ]3 I! s( b4 [
{
! C& N' \) X- ?2 F% e8 K! D    static Session theSession;
$ k4 _+ B4 M- j. A- G, e: ]1 o# Q* c    static UFSession theUfSession;/ ~/ L% |4 f) q+ ]+ T0 Z( L
    private static UI theUI;
5 {9 A# h0 ?( H) B! Z" x0 ?4 m9 ?1 l6 b7 j0 s
    public static void Main()
/ u$ o7 Q: ^+ B' U7 v5 {8 ]    {$ w) d4 K! L( A. Y; |, t0 r
        theSession = Session.GetSession();3 t1 m; Z' o- b- o- A
        theUfSession = UFSession.GetUFSession();/ N6 C4 z+ ?0 P) n( [
        Part workPart = theSession.Parts.Work;
8 `3 m+ A1 W% `        theUI = UI.GetUI();
  k  s4 V3 \- J2 Q+ R! u5 U
3 `& A' U/ A2 H' u: m0 L0 q0 f7 P        if (workPart == null)
3 n4 W* l% v% w" X  Q: C+ H- M6 ]        {
8 m. v7 K7 ^5 s: v* H  f! W# G            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "A Part must be Opened.");( Y+ b( }( s+ H% W) M
            return;
9 }; }$ W8 E) Y  c        }
& Y  J8 C4 m% T( D: J  t+ w1 V; I* d& v5 r, Z# \6 [
        theSession.EnableRedo(false);  X, @1 Q; |3 t4 j

$ {! F" W2 U) b* d! q& C        if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();' d. J0 Y$ g" }& R4 S7 x) y
. {$ n8 H8 w, ~. h) q5 H& ^2 N7 q
        SystemInfo(theUfSession.Part, workPart);
# Q/ O. i3 [5 _8 n' F+ w
: z# Z6 Z2 }1 @8 l3 \: j4 M  F" a        try
+ }5 j* T9 w5 A        {1 u* \; K. t% `) c/ G7 T  D
            Tag[] operTag;4 o; C* ~# S9 F9 [" o& I1 P0 \  H
            Tag setupTag = Tag.Null;
* ]: u# Y3 |; G/ M% t
, ]6 c; w5 a% [5 s            int countObject = 0;$ v$ Z/ C& Q( ]6 |  K+ c# y
5 p& t% T5 I2 q, H( B1 b
            theUfSession.Cam.InitSession();
1 D! ~6 [* k% c6 |: R            theUfSession.Setup.AskSetup(out setupTag);
: [" N0 V9 j& W1 h6 f4 }4 v$ e0 q: }4 M  i/ ^& \1 {& W$ R2 E0 i1 i
            if (setupTag == Tag.Null)
2 f/ @* j! @: ?/ p5 h/ U            {; x7 k5 a- T4 @. T, n7 h
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "No Cam Setup in this Part.");  V+ e8 B! x( }; ~; b3 ]7 l
                return;
. s, Z% M* s# n            }" l" U3 U: o5 U% M9 t
' [# O4 e5 l' d- G3 i; Z
            theUfSession.UiOnt.AskSelectedNodes(out countObject, out operTag);
" h. z0 E- C  t/ Y6 H7 b6 C6 H/ H5 ]) Z9 `$ R# o6 }  g
            if (countObject == 0)
) }1 Y6 P, ]( d8 Y0 p# T( Z            {5 M  t* j6 }0 s$ A8 V
                UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, "An Operation must be Selected.");
3 @4 U& p% [% C3 b9 _) K* A% [3 f                return;/ Z0 T" ?0 I3 L* z
            }
/ ?2 A$ ]8 T' i, `0 c% v- i- y- S3 r* [5 m/ \7 |+ \6 h* H
            for (int i = 0; i < countObject; i++)
# K# u. \/ k& _& s( X            {+ G! q( D! U- Q" O; i
                int type, subType;4 _, I  }6 X8 v& y3 X; Z& M2 c

9 ^  p/ g' \+ R# _% w$ i                theUfSession.Obj.AskTypeAndSubtype(operTag, out type, out subType);
! b- \0 U$ L/ u& H. w" ^; _# q* n, U- n7 Q- x( w0 ^
                NXObject camObject = (NXObject)(NXObjectManager.Get(operTag));! h+ F) Z+ y0 z6 v/ m5 _

0 Y* M% n- Q  l, k! @! {( n, r7 Q                if (type == UFConstants.UF_machining_operation_type)
8 G5 `% B7 L" z( o6 _* |3 R                {( e/ W' f5 X4 z# X' x
                    NXOpen.CAM.Operation operation = (NXOpen.CAM.Operation)(NXObjectManager.Get(operTag));
  g2 B; j+ g5 g/ f
$ ~5 ?; y$ C  w& k( }9 k4 S                    GetOperationSubType(operation);
# w. l' j4 K1 d* @4 P- x4 w8 Z+ o4 j% \- R* s  a, @/ q7 n
                } /* if type */
% [& C! E9 j8 |8 c0 b& U: u/ J            } /* for int i = 0 */( q/ l. d. w. V* l
        }
. Y* U* O2 G% [* l        caTCh (NXOpen.NXException ex)
' r9 i6 n- T1 D4 R9 ^" A+ t; ^        {* M/ X$ s+ k  |6 m6 Q" l6 j8 r
            UI.GetUI().NXMessageBox.Show("Message", NXMessageBox.DialogType.Error, ex.Message);+ w7 A) P$ `+ u% @2 Y
        }$ m, B" {* i2 C1 T( V7 a- F
    }1 ~! I$ [2 k/ L& e! z) M9 p$ S
. H* n( `1 [. z
7 F  V# V" n8 }, S, r/ R
    /// <summary>; l! |' I+ l6 h( D$ \% _
    /// Retrieve the Operation Subtype- Z' L6 @) q; s2 J
    /// </summary>& H5 o# G2 j' b8 U! C+ }
    /// <param name="operation">The Operation to Query</param>( q2 r/ Y6 d9 [% X+ U7 T
    /// <returns>Return the Subtype Operation</returns>9 b! Q: i5 N; j% c& f) w
    public static int GetOperationSubType(NXOpen.CAM.Operation operation)
5 v8 g9 J) P, ^: @3 h& M; v- P: w1 A- d    {8 `+ t8 b- h0 q# C$ b
        if (operation == null) return -1;
8 Q) o) R* L; Z& j' j0 l0 t/ B' ~, J
        int type = 0;
$ U' D# j% @  r( ~! P        int subType = 0;" C( \  F9 g' |4 A! _3 a

0 G$ Z9 I$ A. U1 n        try
# ~  ]' T% f* J: h' \        {7 ]6 l3 w6 L1 ]$ T+ s$ [$ E
            theUfSession.Obj.AskTypeAndSubtype(operation.Tag, out type, out subType);! t2 \7 d, G" e* Q" A
            theSession.ListingWindow.WriteFullline("Operation : " + operation.Name.ToString() + " -> Type " + type + " SubType : " + subType + " -> Operation GetType : " + operation.GetType().Name.ToString());* j* ~9 s  R2 X8 m, t4 q
4 m2 x5 s: N/ L
            /* If needed to Switch to Operation Subtype (uf_object_types.h)*/
% T$ ]7 H  {: q6 P# j7 d% @            switch (subType)
) [% j: v6 F/ `  C* S            {$ Y. _! _2 R7 j( C8 P
                case UFConstants.UF_mach_pocket_subtype:                /* Planar Milling Operation */. l5 m1 u$ }: s6 s1 S+ G
                case UFConstants.UF_mach_cavity_milling_subtype:        /* Cavity Milling Operation */
+ e' K0 \* F0 A  [3 {                case UFConstants.UF_mach_face_milling_subtype:          /* Face Milling Operation */8 m: h! d" M8 D# D
                case UFConstants.UF_mach_zlevel_milling_subtype:        /* Z-Level Milling Operation */1 k. c& D, k) n+ r( b
                case UFConstants.UF_mach_groove_milling_subtype:        /* Groove Milling Operation */
' Q* e5 C/ S* \                case UFConstants.UF_mach_cylinder_milling_subtype:      /* Hole Milling Operation */. L# A$ {' V. R3 C) @* @
                case UFConstants.UF_mach_chamfer_milling_subtype:       /* Chamfer Milling Operation */
9 w- A& C, O* Q5 i7 u8 E4 S6 i                case UFConstants.UF_mach_radial_groove_milling_subtype: /* Radial Groove Milling Operation */4 f5 S0 z& H3 w0 i" s
                case UFConstants.UF_mach_surface_contour_subtype:       /* Fixed Contour Operation */
1 R7 ]9 Z3 L; ]+ p4 v4 {7 @                case UFConstants.UF_mach_plunge_milling_subtype:        /* Plunge Milling Operation */
1 B! H% Z" l. n2 G2 w, L                case UFConstants.UF_mach_vasc_subtype:                  /* Variable Contour Operation */; N- ^. Y4 W! {5 F
                case UFConstants.UF_mach_vazl_milling_subtype:          /* Z-Level 5 Axis */) r  v3 }$ ?2 W
                case UFConstants.UF_mach_thread_milling_subtype:        /* Thread Milling Operation */7 B! c7 z  M+ [9 C, l$ p
                case UFConstants.UF_mach_fb_hole_milling_subtype:       /* Hole Making Operation (Legacy) */
) N1 c: w0 P" V6 \' \                case UFConstants.UF_mach_hole_drilling_subtype:         /* Drilling Cycle */$ E& ~$ Q8 Y3 [. C. j
                case UFConstants.UF_mach_mill_ud_subtype:               /* User Mill Defined Operation */  F2 T& r  F) A& f
                case UFConstants.UF_mach_gmc_subtype:                   /* Generic Motion Operation */
3 x' ?$ y0 k% z                case UFConstants.UF_mach_mill_mc_subtype:               /* Mill Control */
$ f& e4 Z' A! h                case UFConstants.UF_mach_gssm_main_op_subtype:          /* Sequential Milling */
1 P3 F  C% A( u: n& B  \                case UFConstants.UF_mach_hole_making_subtype:           /* Hole Making (Legacy) */* R% W! y& _4 p& M! b3 T
                case UFConstants.UF_mach_planar_additive_subtype:       /* Additive */
, p' M, N9 v" o/ {2 e
2 |' D& \6 ]+ K3 d$ M$ V# L                case UFConstants.UF_insp_tolerance_subtype:! f: E* a/ n& l2 \. G
                case UFConstants.UF_insp_path_subtype:
1 f7 |( R% M! V* ?1 e6 j- f  `  x/ `                case UFConstants.UF_insp_output_subtype:
8 z' x* I7 F* E) D6 X- l) U8 c, s                case UFConstants.UF_insp_misc_subtype:9 y2 Q3 M7 g' q) }! E) u4 `
                case UFConstants.UF_insp_align_subtype:8 W/ Y0 V# t6 S! ~9 Z! M# O' ?9 i
                case UFConstants.UF_insp_sensor_subtype:
! H! b6 v3 K! R- I" i7 @6 W& M  F' T                case UFConstants.UF_insp_construct_subtype:7 }  d7 L- ^; ?
                case UFConstants.UF_insp_bounding_feature_subtype:' g1 I9 I* W' x7 g
                case UFConstants.UF_insp_feature_subtype:
! M* F8 w4 |# F  w. i
: g7 ]8 x% v- e. o$ m( N                case UFConstants.UF_mach_canned_cycle_subtype:
9 m. D% m( i1 w; b& J' n, j- Y& t! D6 B. o2 ?
                case UFConstants.UF_mach_laser_teachmode_subtype:. }4 J+ e; a7 K
. {2 j1 g% N! v; q; C9 I$ g( ~' Y
                case UFConstants.UF_mach_turn_roUGh_subtype:+ A2 ?; k! b8 f
                case UFConstants.UF_mach_turn_finish_subtype:7 J  L3 @- F5 b, J
                case UFConstants.UF_mach_turn_teachmode_subtype:
( [2 l9 A, k/ X2 y# t0 G9 |- z# Y0 A                case UFConstants.UF_mach_turn_thread_subtype:
0 f  [; i3 c7 H6 g1 Q+ D                case UFConstants.UF_mach_turn_cdrill_subtype:# |4 Z) ^. A* f) M1 L5 a
                case UFConstants.UF_mach_turn_auxiliary_subtype:
7 ?2 C6 i; v5 J& C' B$ E; \                case UFConstants.UF_mach_turn_probing_subtype:( U/ I% _; C2 W
                case UFConstants.UF_mach_turn_tool_probing_subtype:5 r- Q; O! f) W( o& X
                case UFConstants.UF_mach_lathe_mc_subtype:" \: k/ U- I7 l* V
                case UFConstants.UF_mach_lathe_ud_subtype:# Q! j  Q8 i" q2 h, p5 `4 X8 B
/ [1 X% f: X+ x! K. _% y
                case UFConstants.UF_mach_wedm_subtype:/ Z  E8 Q6 R! l7 C1 U( P
                case UFConstants.UF_mach_wedm_mc_subtype:
8 {, |* Q& |8 a, c' N$ O- g% m                case UFConstants.UF_mach_wedm_ud_subtype:& ^# M7 `1 f+ M  m' s
                case UFConstants.UF_mach_mass_edit_subtype:
: [7 B0 f+ b- W+ O& f, n                    break;; [3 }; U( F: X. v. T' o
' C' _+ D: |9 K! b* ?
                default:6 N* ^5 j! B4 y7 |( f( N9 x
                    theSession.ListingWindow.WriteFullline("Unknown Operation SubType.");
" ?& N& t$ o& ]" \) ]" X' Z1 R                    break;0 \/ ?* X9 F1 x: Q, q% ]* U
            }
. h2 G/ e# `/ z! V- r6 [8 ^        }
& l4 q6 O6 ^8 I$ R9 |: h7 U- P        catch (NXException nXException)
0 w  I* G3 x) t0 B. ]7 M        {
$ }8 y8 b2 ]4 O8 e7 B            theUI.NXMessageBox.Show("Operation", NXMessageBox.DialogType.Error, "Unable to Query Operation. Error : " + nXException.Message.ToString());7 n5 A" u. a- L* w# _4 y
            subType = -1;
! t' _1 F) P, _* }        }5 M0 f, d. k/ b) ~9 c
2 |" @2 `: Q; z5 g+ @) M: y" C% t$ v0 ]
        return subType;4 {2 d' D9 t+ s$ p" }
    }: h( Q  x- ~7 E6 q  m  w* }

4 m  U1 K3 C& Y$ j9 ^. i# b0 ^    /// <summary>8 ~* i; q8 o9 |
    /// Display System Information: j8 H, @  Y& _4 W& v# X
    /// </summary>
+ ?! j# ]- L+ ?    /// <param name="uFPart">The UFPart to Query</param>
- G3 o+ C; i; c) @9 o7 r0 W    /// <param name="workPart">The Work Part to Query</param>
' F* H+ n3 L1 G& q+ y2 ^' }    static void SystemInfo(UFPart uFPart, Part workPart)
$ [, J5 {/ w: c, F9 x4 n, k+ Z  n    {% F' \$ ~6 b# ^/ ?
        try
+ I3 q/ j* s7 T  i& T& n  W( x        {1 b* u; z; {+ a, S6 D* F8 V
            SystemInfo sysInfo = default(SystemInfo);4 y# V! b. O# I
            theUfSession.UF.AskSystemInfo(out sysInfo);
8 H+ W" {' P3 G3 x' ?  R2 I4 I
8 X% ^  K+ y; u& W! v1 Z0 T( A            string partName = string.Empty;
0 f& E9 a: Z2 k- d  c            if (workPart != null) uFPart.AskPartName(workPart.Tag, out partName);
$ [9 J( I; L: h/ k/ H( L+ J
9 [: |% j2 I; k- @% W' |2 D            if (!theSession.ListingWindow.IsOpen) theSession.ListingWindow.Open();
4 Z: @7 `( c+ A" i$ P            theSession.ListingWindow.WriteFullline("============================================================");$ L+ B3 _7 c% {1 m
            theSession.ListingWindow.WriteFullline("Information Listing Created by : " + sysInfo.user_name.ToString());
( m' B3 F$ Q0 H) F$ P( ?$ B            theSession.ListingWindow.WriteFullline("Date                           : " + sysInfo.date_buf.ToString());
4 _- H4 r% Y: ]/ {1 X            if (workPart != null) theSession.ListingWindow.WriteFullline("Current Work Part              : " + partName);
: p& R8 `1 w/ \+ l% s1 t/ t" d6 @4 x            theSession.ListingWindow.WriteFullline("Node Name                      : " + sysInfo.node_name.ToString());0 l) @& V3 }- S' N0 O  ]! z
            theSession.ListingWindow.WriteFullline("============================================================\n\n");
( Z4 ^  C! ~, Q        }& X: D& o1 i. d# Z' \# K! y. I
        catch (NXException nXException)! z) U! g% Z$ i- T$ t3 X* U/ r
        {
7 ?- e3 _2 Q% I) A8 U3 b            theUI.NXMessageBox.Show("System Information", NXMessageBox.DialogType.Error, "Unable to Display System Information. Error : " + nXException.Message.ToString());
9 N1 A; D" _  Q        }' @) ~9 Y% u3 z& N" k
    }
, D/ D# ]4 V  K* k* ]0 U% {# C7 x) V: d
    /// <summary>7 m- s& Z* U6 U' c
    /// Unload the Current Image% Q$ c6 s* T6 `# H; Z
    /// </summary>
) U* E9 }. Q, A" Z5 o6 U    /// <param name="arg">String Send by NX</param>  _( {" M8 i) b, N6 {2 Y- ^
    /// <returns>Unload Integer</returns>
  I( P+ X2 c  t1 i    public static int GetUnloadOption(string arg)2 X8 Q3 ]$ k" ~  r( X; w: L, S/ F
    {
$ O$ p6 G2 _( {        /* Unloads the Image Immediately */
( n* @/ m" \9 d% b        return System.Convert.ToInt32(Session.LibraryUnloadOption.Immediately);
" Q+ a, k2 Q# E6 ?
! e' `- M9 c( m1 P        /* Unloads the Image Explicitly, via an Unload Dialog */+ X, d! n# _( W0 j+ u; q
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.Explicitly);
. [! N) M9 q) o  B- \8 i. N: v$ z8 \$ t
        /* Unloads the Image when the NX Session Terminates */, @) Z& L. v/ D" X5 S! |: {9 _
        //return System.Convert.ToInt32(Session.LibraryUnloadOption.AtTermination);
# u$ H" ?8 Y& W* _  w$ E$ [    }
; s$ F; J4 l: W1 }  b. v! p$ I}[/mw_shl_code]7 k4 B3 S% U- r3 F% {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了