青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2012-5-13 14:28 | 显示全部楼层 |阅读模式
using System;  
6 G8 i  l$ Q8 z* Ousing NXOpen;  
$ E) l5 @+ s) b% k+ @using NXOpen.UF;    |, G* K$ n) g  J
using NXOpenUI;  
+ n# E( E5 a" ^' l5 y  + c. {8 x2 Q' i- ]+ a$ Q/ Z! _+ {
namespace C__test_01  * K, Y! O1 Y7 z/ ~2 T
{  
" J$ a6 M% a- d- |3 H7 j% P1 U    public class Csharp_test  # `- ?4 H" x: @& \2 w+ p
    {  % i2 b8 P- M, S) L0 p
        public static void Main(string[] args)  
% B. g1 F. P7 B2 C" D! f1 i; B) q' G1 y  P        {  ! x6 R( ~0 n5 t2 J3 q; P. U% E6 E
            Session theSession = Session.GetSession();  
( q% v, L; \. Z3 S) x  F            UFSession theUFSession=UFSession.GetUFSession();
$ u% w! W5 y0 P; L8 Y             7 c/ L2 U7 A2 B. V+ P
            UFUi ufui=theUFSession.Ui; ( V% X3 h+ [& }1 t
             ; W' u" Q. K8 y3 p* W
            Part workPart = theSession.Parts.Work;  , y3 x8 C3 F6 [* ?9 G) t
/ l5 C0 `- e/ y* W' Q" m2 Q  G
            NXOpen.Features.Feature nullFeatures_Feature = null;  
& w0 H0 H$ R, l$ j    b; v/ ~) _/ z8 U, T$ x
            NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  
2 ^. B; Y/ Z8 `, k" s            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  7 }4 T  ]- i5 r2 d
  
! G- `: U: n8 s' q, @+ T& z            blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  
0 e& q# W3 {& L3 F3 y0 b1 H  
1 A! v# Q! R4 K+ x            Body[] targetBodies1 = new Body[1];  
! ?1 [' t' q, f1 Y            Body nullBody = null;  
1 k! V0 D6 l+ c' ^/ |8 t            targetBodies1[0] = nullBody;  4 u. D7 C# Z" i/ Z6 O
            blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);         //    不进行布尔运算 # z+ V' f, N, l4 `; b
  
5 n9 b' O3 K+ l" E* T- K* s            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");  $ @& s2 @( F$ p! J8 Z+ [! H! \
  & Z8 k, M7 F# P  c) v, @8 n
            blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  
+ s# X' M4 k3 ~3 P- o- y  ) s9 c/ D: T+ Q1 u8 y
            //        使用点构造器创建点  
! ~9 ]& E6 [, L1 P; M' v" ~            string cue = "请选择一点";  0 m* a( s9 ~2 M# ~! q
            UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
; f) b+ Q6 {0 Y' `2 f            Tag tPt;  
  ~9 q3 _: d6 j3 w% R0 R9 T            double []base_pt = new double[3];  9 t! P: e+ k5 ~. T7 b
            int resp;  
! i3 m, I: H) D: a  |4 Y0 d  
( f: p6 W: T" e) w& T  m3 m* _            ufui.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);  3 i& n' J7 }6 k2 c* S* R# z
             / B5 q: h3 s! J& W
            //        输出坐标信息
8 ?" ^; b$ t- c6 H% g& ]0 O            ufui.DisplayMessage("x= "+base_pt[0].ToString()+"\ny= "+base_pt[1].ToString()+"\nz= "+base_pt[2].ToString(),1);  ' e) c! X% U( m# l
  4 d! x5 d0 F$ T3 G5 q' s0 I7 h
            Point3d pt = new Point3d(base_pt[0], base_pt[1], base_pt[2]);  2 I1 L: _! x( D& }# C0 a# ?
  9 \/ P$ }6 [" x: R3 D
            //        设定原点和长宽高 7 f) w5 w7 V+ h. Y" b* ^- X
            blockFeatureBuilder1.SetOriginAndLengths(pt,"100","150","180");  ( a$ k$ D$ T) `. [5 f
  # J( U0 t# R' c, z
            blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  % I9 y, ^" E2 v- N" Y" u& O) x
  
1 O) s7 U% p; h2 m' `* C; j  r, Y            NXOpen.Features.Feature feature1;  
$ G" o* ?$ g1 M- D& I            feature1 = blockFeatureBuilder1.CommitFeature();         //    执行操作 生成block
* M% H# c/ P  M* E            blockFeatureBuilder1.Destroy();  3 m2 j/ B6 i6 g
  
8 W) B3 L0 O, Q& t( k( H+ c) e        }  
2 u- }' K& |/ A- N) g! Z  4 z; Q3 J/ `, j( i$ d! f% j  c" q" C0 j
        public static int GetUnloadOption(string dummy)  
5 I: ]6 q; p/ c        {  
- n) `' M+ a, X9 @2 [: v            return (int)Session.LibraryUnloadOption.Immediately;  : |) s, \- k3 @2 l8 a
        }  0 E- C7 n% L" ^7 t7 v
    }  
; f( C3 N$ _9 v}  
9 T1 b9 ]  C( U! w. K) J 3 M) Y, J7 h1 f  Q9 \
7 n, e2 h" ~& o  o& Q% B( u
//     仅供学习交流!  (smthan@163.com
发表于 2012-5-13 17:10 | 显示全部楼层
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
  |, l$ J. s& Y: S2 w1 ?
001.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-15 14:45 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
9 [5 i. z2 D! m7 a9 t0 Y先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

. l+ E0 J% w& \7 Z修改前:% Q( \: M9 V/ p; W$ i8 ?1 S3 r
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  0 {3 G) N% ^8 d% c; L
表示默认方式为光标点6 ?8 }! N3 p6 j! J, `. ?' r4 g

: K1 P7 t, |  x3 Y. H1 o$ E修改后:9 y9 o2 p, Z' W8 _3 g0 p
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointInferred;  
& F. K, T* N: r% \表示默认方式为自动判断
' B* q( X8 h" O' Y/ w% l( Y. A/ |: t
其他的比如端点等都可以修改这个属性来实现   具体可以查阅帮助文档
( `' B, m8 Q* ^; I( D7 ~. W+ B1 l
回复 支持 反对

使用道具 举报

发表于 2012-5-15 19:34 | 显示全部楼层
本帖最后由 ugdesign2 于 2012-5-15 19:39 编辑
2 T+ f" w, L$ I8 q& |) q
612524 发表于 2012-5-15 14:45
. }# _- t) M1 ]6 G修改前:2 q: [6 Y2 Q4 x$ I
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
/ r2 A7 z' x) Y: [6 x" R; J2 E表示默认方式为 ...
1 j' s  Y( y1 }1 E" ~6 Y+ Z4 Q
% ]+ Y: [- P. A& u+ m
非常感谢,现在明白了
. k- c9 G6 V, J1 B4 ]+ J另问一下楼主那里有帮助文档下载?
& \& j& b) i3 l) v3 H0 X% K
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-7-7 09:00 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
: A1 {( R- a! M& [先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

, g  c2 {# i* ^6 o3 {* C" t$ O请问大神为什么我编译完之后会出错啊!为什么我的引用会出问题有感叹号呢?是不是哪里的设置出了问题,求大神指导!!

编译出错

编译出错

引用有问题

引用有问题
回复 支持 反对

使用道具 举报

发表于 2014-7-30 10:56 | 显示全部楼层
感谢楼主分享~
' w& f- p1 Z3 V- W) O% b! Y! a2 O8 V: w6 ^: Z8 y2 ?
话说,楼主的自动出图,不发表了吗?6 N% m: w- Q# N' g  e9 ^
现在进展怎么样啊~~) `1 I; s; X6 @) f( ]) W/ z0 \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-15 15:36 , Processed in 0.111126 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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