青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 6639|回复: 6

[原创] C# NX OPEN 入门 经典源码

  [复制链接]
发表于 2012-5-13 14:28 | 显示全部楼层 |阅读模式
using System;  ) G: Z; N9 E* z. m
using NXOpen;  
$ w' i% Z+ K$ fusing NXOpen.UF;  / S$ a* l& q' j: Z1 N2 l
using NXOpenUI;  ) a" b+ T8 L: h5 M
  
( z7 W) r9 Y( N8 g- C# lnamespace C__test_01  
6 e- I8 ]; H6 J9 T{  
& A! c% H7 k/ i3 \0 |    public class Csharp_test  
) V, d- O+ p' x5 x3 e* h% k    {  
1 Z- H7 U5 J: y! A: a* P        public static void Main(string[] args)  
6 R  ~1 L# G5 l2 d" A/ z$ j, n        {  " ?- d' a2 b! j' v, _1 w4 k! Y6 d1 l
            Session theSession = Session.GetSession();  
) L6 x$ ?- P! @. {' L0 k: c            UFSession theUFSession=UFSession.GetUFSession(); 0 q) Y( A: Z' ~! v4 C6 ~+ e
            
) G* O0 f  T* K* w            UFUi ufui=theUFSession.Ui;
" I" R0 I2 |4 @3 |2 n7 c( t             ! T4 c9 R0 Y: H3 Y
            Part workPart = theSession.Parts.Work;  ' ^: s' U" T' B# E/ a
/ I" F( E, P% y2 R4 d
            NXOpen.Features.Feature nullFeatures_Feature = null;  
( N5 ~2 t5 E: L) A: T2 M; t  # Z1 p7 h* c& y. c+ M. h( _5 P
            NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  ! A$ @. K" ^1 _. C3 V' l
            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  7 V  r7 S0 T/ @2 m& h1 ?3 O
  : `9 j- w% s. i2 c
            blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  ) O/ B3 i$ t7 I8 I* z" c' S% |
  7 Q5 i) O5 E5 ?$ h' e$ X' [
            Body[] targetBodies1 = new Body[1];  
& H& x" y% B5 h            Body nullBody = null;  / W2 w0 S3 ?+ C2 ^& |2 V4 ?6 `6 ~- A
            targetBodies1[0] = nullBody;  ; N( Z$ ?& R  E8 k2 y" E4 O3 f5 N
            blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);         //    不进行布尔运算
7 p# q7 K" g( l, K& ?$ X3 x  
: V. E. k) B' P6 |4 k- M- c            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");  
7 x0 W7 [$ @& D" y  
; `  F  G# ~& s4 q            blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  4 \% ?  M2 o- q7 n! h
  ; r1 J- w1 E# z- y) s; z& ?6 t. p, _
            //        使用点构造器创建点  : e+ l1 W; g' V. d* N9 h
            string cue = "请选择一点";  
. e# B9 j* z& T* }            UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
$ }; `2 [" a8 z; Z9 \            Tag tPt;  ( Y; |) ~  S+ J6 o! W/ g' p7 i2 u  B, a
            double []base_pt = new double[3];  
1 T7 [. I! N$ X# P; g! I4 r! ^            int resp;  
  A% ^5 a' V/ @+ ~  % k; n/ E8 Q/ M: a5 |9 {' b: D3 Z
            ufui.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);  4 u: P0 B; o) @9 M
             6 l7 m0 r0 U4 ?, H, i$ X
            //        输出坐标信息
. s- u3 U5 v  C2 j- E            ufui.DisplayMessage("x= "+base_pt[0].ToString()+"\ny= "+base_pt[1].ToString()+"\nz= "+base_pt[2].ToString(),1);  3 z0 N  u$ \2 E  n$ R: Z
  
; q0 O. [4 O. M  V+ M6 i0 f& P, D            Point3d pt = new Point3d(base_pt[0], base_pt[1], base_pt[2]);  
: `' [. t; s# L/ ?% l3 E  
) e, b8 p  A0 i) r2 J! w6 U2 e            //        设定原点和长宽高
! X- `2 o5 I" a  \            blockFeatureBuilder1.SetOriginAndLengths(pt,"100","150","180");  
) x* y' m+ J7 P( a) n  
0 p. p$ a( h# Z9 E            blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  * x( A. m" Q0 u
  # y: D2 Q+ }* o% i" m* ]* \
            NXOpen.Features.Feature feature1;  
* n, K1 \3 R/ N' U8 _0 J: _% e' N            feature1 = blockFeatureBuilder1.CommitFeature();         //    执行操作 生成block
0 p. b, P) J6 s2 E& n            blockFeatureBuilder1.Destroy();  
) I1 i( x7 H4 ]! [, l5 ~8 F( s  
0 Q3 d( b4 j+ ~' y        }  
3 x; R( A1 }+ B* v  
7 E- [9 G* B0 x% z# Z0 j        public static int GetUnloadOption(string dummy)  
2 A8 R3 n$ F! y+ b, A        {  1 c& `1 H+ u4 B. a  x7 @
            return (int)Session.LibraryUnloadOption.Immediately;  
) A, X. f- z$ `        }  
) e5 g0 m" Z) }    }  # ?! j& j! I6 [: [& Y9 N7 c
}  - Q) t0 A* s5 U/ ^
3 A6 R/ ]+ a3 t
( p: J4 `; b% ^( @" u, q3 s3 I! O
//     仅供学习交流!  (smthan@163.com
发表于 2012-5-13 17:10 | 显示全部楼层
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:- m# J" W1 c5 q
001.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-15 14:45 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
- ]8 t; ^) }" G0 Q7 I& q4 n5 n& [先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
" A4 C: K) _% F9 w" f$ Z7 \
修改前:
, y( U5 f. L4 y, H, E; i, aUFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
% _! i3 }" q5 P" L! y表示默认方式为光标点; P% Z0 A) M3 E5 X  j9 C( Q
2 M/ H' w* }% |" x) p, G' |) m
修改后:4 T  }! E  ^2 q3 |" K
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointInferred;  
; |' c! B1 \' o  B( W8 P0 w2 S- ?7 v; a表示默认方式为自动判断
2 @/ K; C$ s$ j% `  D3 c- I  a, \8 d' _8 f6 o
其他的比如端点等都可以修改这个属性来实现   具体可以查阅帮助文档
0 z! n, l2 P$ v2 Z
回复 支持 反对

使用道具 举报

发表于 2012-5-15 19:34 | 显示全部楼层
本帖最后由 ugdesign2 于 2012-5-15 19:39 编辑 ! T4 \8 I. _  w
612524 发表于 2012-5-15 14:45
2 l( I$ j3 |+ v$ U. e+ u0 P修改前:  u5 @" Z5 T$ u  w4 k% s5 g
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
" b& @; g. ^8 ]- y8 k2 u/ d表示默认方式为 ...
6 d- i! {/ N) a) Q
) k6 n) }1 K3 O* V/ g' \+ B# z
非常感谢,现在明白了
4 O4 T- H# C, Z9 n' {另问一下楼主那里有帮助文档下载?
  s+ I1 l1 z$ m' @, {/ L6 ]' X
回复 支持 反对

使用道具 举报

发表于 2012-5-20 11:23 | 显示全部楼层
请教C#中选择两个面,然后计算两个面的距离如何实现,能否帮助写个子函数的例子
回复 支持 反对

使用道具 举报

发表于 2014-7-7 09:00 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
9 F8 r" `" F8 r  J" C9 j. s先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

3 j! C. l9 d* Q/ {4 I' O4 ?请问大神为什么我编译完之后会出错啊!为什么我的引用会出问题有感叹号呢?是不是哪里的设置出了问题,求大神指导!!

编译出错

编译出错

引用有问题

引用有问题
回复 支持 反对

使用道具 举报

发表于 2014-7-30 10:56 | 显示全部楼层
感谢楼主分享~
, v& C2 r4 ?: @' J9 N
" W  D3 ^6 a8 X" M# D3 [话说,楼主的自动出图,不发表了吗?
" o: ^0 \- o$ r6 ]2 \6 Y现在进展怎么样啊~~* j1 c" E8 q9 Z+ _" M: V
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-7-12 18:17 , Processed in 0.144700 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表