青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2012-5-13 14:28 | 显示全部楼层 |阅读模式
using System;  " j7 m5 s; R5 l
using NXOpen;  : ^# L( F# {0 s5 n  m+ M3 _3 d
using NXOpen.UF;  # I( R& K+ d9 m* D" y1 J
using NXOpenUI;  5 F8 d, {9 g# D$ ~3 p. Z
  
/ B9 d6 J+ M+ R- K6 x0 a$ znamespace C__test_01  
6 q$ t) k* D! H5 [{  
& H# E/ h2 [4 b! J! c8 z' E    public class Csharp_test  / m, v0 l8 R" Q/ l1 Q" v8 X
    {  / Q& I( c/ M% e/ L( A( j6 |
        public static void Main(string[] args)  ' W+ a/ u. f$ B) c
        {  
1 F, d( K7 C! m) f9 l; L, D# G            Session theSession = Session.GetSession();  
: C3 Y( P- @  X/ Z            UFSession theUFSession=UFSession.GetUFSession(); 5 p! w% h8 f$ i! I0 c8 `6 J
            
  N' J7 ]6 g) }) y- K% R  R            UFUi ufui=theUFSession.Ui; + ^. A+ X2 b: e; e2 L, R* e! @1 R- ]
             2 n5 D5 ~7 B, D0 z# ?1 C1 b( z
            Part workPart = theSession.Parts.Work;  " a: O# E( A1 S3 f+ `7 T
0 ?4 A) d) a+ Q: D1 \/ k4 u+ a0 p
            NXOpen.Features.Feature nullFeatures_Feature = null;  / I7 y  F% {$ A& Y8 B
  * M5 {- a. w/ m$ H. W" K) y
            NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  4 F- O4 [! d" J4 @2 L
            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  
. w4 K4 P0 s+ G) z; W  
: c3 n3 ^2 [( ], h            blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  # P6 W9 `9 J  Y8 U, p
  7 d+ d# {8 k1 P8 t0 \2 d% ^* p
            Body[] targetBodies1 = new Body[1];    ^2 _3 l, V; I6 ?" B- X' k
            Body nullBody = null;  5 \) I" N$ K- d. l- @
            targetBodies1[0] = nullBody;  
/ m; Y& {, n+ S            blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);         //    不进行布尔运算
3 P/ j+ S: B6 k* @5 V: d( {  - e/ _1 B+ D0 ]  p" y# v
            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");  
% D0 ]/ ]/ C6 H5 U  ( S  ^% A( U2 E# r- r' y4 p
            blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  
6 n+ r$ R5 b4 ?7 A+ t3 q4 U' S  
$ E1 K  Z0 ^. p1 z) H            //        使用点构造器创建点  
; ^8 [( O% o! s* b4 j% c            string cue = "请选择一点";  7 J( x) M8 y! s% [( I9 x
            UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
, R' `$ V, m& a8 p            Tag tPt;  0 _& C( q7 x2 ]7 S6 d" o5 Y; G
            double []base_pt = new double[3];  1 e2 f7 |7 l( x8 M
            int resp;  2 L6 T! R* m2 L1 j9 s
  
% o1 C& R: R$ Y1 A1 m            ufui.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);  
0 I1 `" k; a, ?: b             - s& r. x7 o! B% [1 q( d
            //        输出坐标信息
; r) |, I- f- ?5 @8 t2 x            ufui.DisplayMessage("x= "+base_pt[0].ToString()+"\ny= "+base_pt[1].ToString()+"\nz= "+base_pt[2].ToString(),1);  
/ g  k6 Y0 x  u% G: i3 T% |6 _  
- n' `4 x$ J0 A  a/ a            Point3d pt = new Point3d(base_pt[0], base_pt[1], base_pt[2]);  , E6 n% O; p& D* X
  ! _. _# V# O3 x  O- P
            //        设定原点和长宽高
/ m: f1 b) h. u5 d4 k2 s: M            blockFeatureBuilder1.SetOriginAndLengths(pt,"100","150","180");  1 |/ z4 r5 x( w. [$ d8 D
  
- O, d2 K! h- z/ B% A# {% L            blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  % p) H3 h3 j" z# d! n  F
  + S2 r8 s& B& t9 G  P: |% w" |9 Z
            NXOpen.Features.Feature feature1;  % d' m# N- ~' S. C* |4 o+ J
            feature1 = blockFeatureBuilder1.CommitFeature();         //    执行操作 生成block
! S9 `8 l' Z, y! E4 L$ B# I. n            blockFeatureBuilder1.Destroy();  
& s+ j6 m4 E& F' o# A  
$ S/ c  B" m9 C, z' T2 @% ~        }  
3 q# ?( n2 ]' j  ( C+ Z/ T/ b* b8 @. I* F
        public static int GetUnloadOption(string dummy)  
; P6 {1 b- g6 A        {  
/ b2 Z/ K" I% i/ W9 F  X            return (int)Session.LibraryUnloadOption.Immediately;  6 A  s; ?. Z# P# F2 ^: |
        }  
; E$ y5 T* w8 Q' u    }  5 M  m7 u4 t7 ]5 z/ C8 x  J
}  0 y3 F+ G# K9 k7 q, F) ^
1 q4 }- b" w! Q# k2 F! D
/ r& G7 ?: h  ]  q) a) }( T" F1 V
//     仅供学习交流!  (smthan@163.com
发表于 2012-5-13 17:10 | 显示全部楼层
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
7 k. b6 l' C! z$ h
001.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-15 14:45 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
3 h% Z4 O0 H& i' G3 |8 M, \9 _6 ?先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

- `% g- {( r* I6 y9 n9 k# ~+ v修改前:- {5 H8 `5 a) F. x" m8 ~
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  . ?2 o( s9 f6 R6 x& [
表示默认方式为光标点
4 Q8 |' z5 i5 C6 I8 `0 E& {( C$ S1 O9 \/ O
修改后:0 T1 O6 k$ \' G  v* f: M
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointInferred;  
% C) C9 Y. a' _表示默认方式为自动判断
1 h; i' r6 N9 j- g9 A# r
# F, H4 c( [8 D" k7 R  ]其他的比如端点等都可以修改这个属性来实现   具体可以查阅帮助文档
9 h. C, p+ \' e& x+ F* a6 g$ ]
回复 支持 反对

使用道具 举报

发表于 2012-5-15 19:34 | 显示全部楼层
本帖最后由 ugdesign2 于 2012-5-15 19:39 编辑
- z' y. w6 V3 d, z; T
612524 发表于 2012-5-15 14:45 , d6 f* d2 |; D5 Z% ?7 Z, O/ v0 N
修改前:0 u% V8 {) h$ q
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
! M! B" H6 p$ R5 r, k表示默认方式为 ...
3 x6 |5 Y1 g/ |$ g$ j* J# }; e  m
7 x( q8 X) e1 N! r) [# Q
非常感谢,现在明白了
" q  b! t/ O! k) {$ {% f( K另问一下楼主那里有帮助文档下载?
; O2 [2 v' A' c* [! }6 V: o
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-7-7 09:00 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10
5 Y8 A( O0 ]3 l$ w5 A$ H1 P先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:

, Q5 [- \- D, ?8 b& |3 }- [+ P请问大神为什么我编译完之后会出错啊!为什么我的引用会出问题有感叹号呢?是不是哪里的设置出了问题,求大神指导!!

编译出错

编译出错

引用有问题

引用有问题
回复 支持 反对

使用道具 举报

发表于 2014-7-30 10:56 | 显示全部楼层
感谢楼主分享~
' i5 S1 y) f6 y5 U
3 A- B, Z; o' X+ [话说,楼主的自动出图,不发表了吗?4 L, d/ Y2 [3 H# M1 @3 [" G
现在进展怎么样啊~~
! ?- A% F9 a' s3 P% A8 M1 }
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 18:01 , Processed in 0.059213 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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