青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2012-5-13 14:28 | 显示全部楼层 |阅读模式
using System;  6 M2 k0 _* s4 o$ A5 A/ e, ?8 }
using NXOpen;  
' \( ~+ E& k- C. {# ?1 C" Husing NXOpen.UF;  
; e" u' G  M5 B  _# D  L" y7 Iusing NXOpenUI;  : F( ]: `$ r9 l$ G8 M2 Q& h6 P" U
  
; G7 Q6 A$ U0 o. h# Gnamespace C__test_01  
  N- v2 ^/ ~1 g( v{  % \$ W$ K; b- i  X0 I. s
    public class Csharp_test  
9 N( c' f1 \3 C- P3 _    {  % D1 U* I2 Q" p  Q
        public static void Main(string[] args)  
: ?- W5 j% l4 X4 ?        {  
$ T3 I" M  P, _# S$ O- t. Z            Session theSession = Session.GetSession();  
4 h& [8 @( m8 p# z$ k* `8 `0 r            UFSession theUFSession=UFSession.GetUFSession(); ' b" [; H# j$ p5 }/ Z8 z6 T! O( l
            
  W: E1 i$ Y) G5 A( E            UFUi ufui=theUFSession.Ui;
/ @1 T; A  Z: y3 t5 @9 g             % o8 p7 e: }  ~7 s& K
            Part workPart = theSession.Parts.Work;  
7 T3 V" Y2 N% b' j. X6 F* e" e, F
  Z+ j) B% X; ?2 F" ^$ c4 E* h$ A            NXOpen.Features.Feature nullFeatures_Feature = null;  ( W7 K. ~! x5 j* e4 X
  + G. R7 r+ I0 X6 z; G* H% ^# R
            NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  
5 j6 f6 C  V8 ^! j  F            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  
% j8 I  |5 s+ G  9 e! S# K* Q8 B) D
            blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  : F4 n6 N  T0 G+ F
  
9 L3 y# K7 z2 O2 D3 O- E; E1 O* C! D            Body[] targetBodies1 = new Body[1];  
/ i8 _/ ^8 W& v# s) f2 e            Body nullBody = null;  
! c& Q- U4 j5 e            targetBodies1[0] = nullBody;  ! e1 A* A$ b- b* F
            blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);         //    不进行布尔运算
$ J: v3 a; v/ V9 j  
0 M1 s2 L5 u9 N0 g0 z/ `0 v            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");  
5 _. w. I, I6 J' D9 n8 u$ ~  
5 n; }/ c$ l0 o" V0 B5 [7 l            blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  
, @) m4 g, Y& C9 }  
, L8 F5 ]' n: k) n/ C3 ~" {            //        使用点构造器创建点  + E" E& f- c/ d6 ~$ R2 G- Z
            string cue = "请选择一点";  8 m/ f' b0 n7 ]+ F
            UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
6 x$ B$ I* U4 X. H' U; O            Tag tPt;  / ]7 c7 \' ]$ r) Q
            double []base_pt = new double[3];  6 D1 G1 C- g/ P8 ~; E, @
            int resp;  4 A" }, K2 O# K& x: ?) o% A
  
  E7 T3 {. P& f! ~$ d            ufui.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);  
9 C1 M( p# @# \( Z; W             # X. Z* N2 ~  ~% g) w
            //        输出坐标信息 3 ~, \9 M- ^( A5 H; g4 y" ^7 V
            ufui.DisplayMessage("x= "+base_pt[0].ToString()+"\ny= "+base_pt[1].ToString()+"\nz= "+base_pt[2].ToString(),1);  ) O. B" C) q! ]' B
  : ~. Z) @9 b& ~( S5 H
            Point3d pt = new Point3d(base_pt[0], base_pt[1], base_pt[2]);  
0 z. i# `; {3 T% R  
. H+ w8 H1 X- N$ @  H            //        设定原点和长宽高
0 S) o& m( h3 g$ c0 K1 U  S8 W' T            blockFeatureBuilder1.SetOriginAndLengths(pt,"100","150","180");  
8 t* @! t1 f; n  O  ^9 q, z! u1 t7 G  : c. Y0 b3 @  G( K9 s1 e* W
            blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  * o. g3 y$ i( ^% |
  8 `( S) _9 [& p% Q6 @, R8 s
            NXOpen.Features.Feature feature1;  
1 Z% n) P' k8 Z8 v            feature1 = blockFeatureBuilder1.CommitFeature();         //    执行操作 生成block 0 I5 T" P2 h* K2 _& c5 R! ^
            blockFeatureBuilder1.Destroy();  
* \* ?+ o7 ], l  b  
2 I! l' t( I+ ~0 l        }  
. N1 z& _' T9 U  
2 E2 F+ ], b  Y! H/ d. |        public static int GetUnloadOption(string dummy)  9 M! ?2 F3 ^$ E( N0 l8 F
        {  # s5 I# t) p3 J2 y5 t. ~: n3 q% v
            return (int)Session.LibraryUnloadOption.Immediately;  
5 x* [! f( D; J6 M- ~! r        }  
4 M5 q: ]. X3 x    }  2 L+ W  l% F. N" @. k
}  
! o& r9 B2 w! n, ~
, W: l1 ?5 L. O# e
3 E+ c8 T- }+ c: B) z//     仅供学习交流!  (smthan@163.com
发表于 2012-5-13 17:10 | 显示全部楼层
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
! Q, ^- h8 `6 L3 _4 i
001.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-15 14:45 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10 1 [& ]3 s3 ]+ K
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

6 v, H6 X* b8 \  }- _4 K5 m修改前:1 U5 m% G7 V  @
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
. l7 W% z5 N; N; A  y+ j) x! K表示默认方式为光标点
3 b4 N* A1 s" {# ]6 D0 ^8 s9 h0 J/ z" q, b
修改后:; j0 E7 U1 T/ D" M. T3 v6 m' y
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointInferred;  
+ E. w9 c) I  Z( v表示默认方式为自动判断
2 n' v3 g& L) F) A7 x( ^* o, q
# v1 m  f+ q' S" I: x其他的比如端点等都可以修改这个属性来实现   具体可以查阅帮助文档
8 w* i2 b( K$ ]9 l# Q& p
回复 支持 反对

使用道具 举报

发表于 2012-5-15 19:34 | 显示全部楼层
本帖最后由 ugdesign2 于 2012-5-15 19:39 编辑
- a  _$ O) j1 v0 c3 ~" r7 T
612524 发表于 2012-5-15 14:45   a% i. a. j/ k8 ]/ a2 x9 T
修改前:* W* D2 h* {) q& |6 n. T1 W
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
3 R! s6 L1 [' A, P& t表示默认方式为 ...
! v5 e# M' P$ h* x
# Z0 t; c9 i& m$ t) u
非常感谢,现在明白了
9 e3 g8 w' G8 F' @) |另问一下楼主那里有帮助文档下载?6 c- x0 a4 r" {9 b- I3 E
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-7-7 09:00 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:100 z& ?5 V( h7 b$ D+ |' l; g
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

5 B8 G6 F; q! O; ?" v: r请问大神为什么我编译完之后会出错啊!为什么我的引用会出问题有感叹号呢?是不是哪里的设置出了问题,求大神指导!!

编译出错

编译出错

引用有问题

引用有问题
回复 支持 反对

使用道具 举报

发表于 2014-7-30 10:56 | 显示全部楼层
感谢楼主分享~
- |' h  ~; `$ v; w& U( |+ S4 L. S# b; j5 D
话说,楼主的自动出图,不发表了吗?. a; o, Q2 T8 w0 g* L
现在进展怎么样啊~~
; d( ?( i  d$ U8 ~6 r$ \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-17 17:26 , Processed in 0.053140 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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