青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

  [复制链接]
发表于 2012-5-13 14:28 | 显示全部楼层 |阅读模式
using System;  9 Q* K6 h9 e: _
using NXOpen;  
7 ^- M2 u: K7 F7 Uusing NXOpen.UF;  
( R0 ]6 y, ^- u& zusing NXOpenUI;  
5 N$ ~4 ~, r! A; J9 V" Q5 c! G  
% y! f* A' d" u3 X, R, ynamespace C__test_01  
8 w+ v8 Z/ p4 E& h1 p{  
# C. R* M: v8 t    public class Csharp_test  1 y, F  o" X. H8 Z& p
    {  ( w, P0 p; H, G) l
        public static void Main(string[] args)  8 K: L' E: {( a3 \# n/ j' I
        {  ; [3 o! F2 l; n3 ?
            Session theSession = Session.GetSession();  % e: |" F/ i6 R1 N0 u9 ]8 z! v
            UFSession theUFSession=UFSession.GetUFSession();
; X* N* L! g( l+ @+ K4 c3 a- v            
7 J1 z3 M' D; H( [- y% m1 z/ }- {$ @            UFUi ufui=theUFSession.Ui;
- e4 k  Q- d% o$ M) u  B            
/ P  u$ f: o' H1 Z            Part workPart = theSession.Parts.Work;  
) K9 O2 z2 E/ x. T& _0 e  K + F+ I3 e% N  @* K
            NXOpen.Features.Feature nullFeatures_Feature = null;  / V' X4 W( U( {6 _+ K
  
+ C/ q/ g3 F9 _6 k; Z            NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1;  9 Q- K* b6 \* b5 L: ^& v
            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);  ' V) N/ v# Y7 F# ]
  1 n7 |2 R3 C( S* h
            blockFeatureBuilder1.BooleanOption.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;  $ n. @+ ]) g6 D: B: G
  
$ ?+ F" F7 X* }! T* B7 ]: c            Body[] targetBodies1 = new Body[1];  4 P# c4 X9 E! C. L, |% `$ {
            Body nullBody = null;  
" p3 g7 @7 [) H( V+ D$ j            targetBodies1[0] = nullBody;  + ?8 U! D5 Z: D# J6 \, t
            blockFeatureBuilder1.BooleanOption.SetTargetBodies(targetBodies1);         //    不进行布尔运算
$ a+ D8 c$ ^% X% {  
5 @( b# W2 M8 Z% t- A            Unit unit1 = (Unit)workPart.UnitCollection.FindObject("MilliMeter");  
5 [8 R0 T$ c8 V5 O+ }  
( l/ Z# H: M' m+ S) E1 P            blockFeatureBuilder1.Type = NXOpen.Features.BlockFeatureBuilder.Types.OriginAndEdgeLengths;  2 G4 u$ A! A% G$ t: @
  
8 R  u; i# {) z- W( T3 ~            //        使用点构造器创建点  4 u% m0 f: Y# Q, V) h2 `
            string cue = "请选择一点";  3 t4 t# S1 b( w, I0 B8 M
            UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  
" ~! u9 u- H1 P# D# ~/ T9 i# O            Tag tPt;    Z' g+ z1 K9 v
            double []base_pt = new double[3];  7 g# t: i. |) r$ W! ]) F$ ^
            int resp;  
5 Y9 K0 k7 o9 g8 A% c6 |- U8 G  
- a- Y* e, k9 D" D% C            ufui.PointConstruct(cue, ref basemethod, out tPt, base_pt, out resp);  
$ l( {/ Z1 S) W2 f' B. ~& a            
. d  A0 x9 p# ]" e% r/ v            //        输出坐标信息
. L9 B4 x$ k* K4 {/ T1 Y            ufui.DisplayMessage("x= "+base_pt[0].ToString()+"\ny= "+base_pt[1].ToString()+"\nz= "+base_pt[2].ToString(),1);  
2 U. `$ X% V  F9 L0 b0 e  2 W3 Z& }# P$ y9 v4 i  C3 c
            Point3d pt = new Point3d(base_pt[0], base_pt[1], base_pt[2]);  
/ f( j2 C& J1 L  
" [( E) A- s, w8 X            //        设定原点和长宽高
0 S+ N4 G' u$ I# F2 ^- a7 y, C3 w, m            blockFeatureBuilder1.SetOriginAndLengths(pt,"100","150","180");  0 l6 }; v0 i$ S5 n6 g
  6 O+ B* G+ O3 {5 I* t! D
            blockFeatureBuilder1.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, nullBody);  
( z! U" O# X  J6 G6 I  Y  
5 q& l# T9 i7 M3 X3 T) _  N            NXOpen.Features.Feature feature1;  
- I1 ~$ W8 t$ N# g' {            feature1 = blockFeatureBuilder1.CommitFeature();         //    执行操作 生成block
2 x: k5 {/ i) d$ b            blockFeatureBuilder1.Destroy();  0 n* }+ \1 g+ G: w
  % J. e% u  P: E: q6 f
        }  / y" I7 K0 n8 H+ s( n7 S
  , o, U1 s% d  @) I$ H
        public static int GetUnloadOption(string dummy)  
# h2 Y- U4 D8 T7 n4 f3 M, m& ]        {  
, W, a) R1 M1 e! c$ l! t9 _            return (int)Session.LibraryUnloadOption.Immediately;  
+ @3 ]! C; d( u        }  
4 E$ z  k  C' l    }  3 J( o2 b8 n& R" ^2 l
}  0 n- V& P- g& O6 [; d% |3 _
9 ]. ^5 @! Z  n! T2 t

# o# |, ^' `  J//     仅供学习交流!  (smthan@163.com
发表于 2012-5-13 17:10 | 显示全部楼层
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:  O& _% Q4 S7 C& E& M7 @
001.gif
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-15 14:45 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:10 & _! N' X# M  `3 Q) K
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
* m3 T; D7 j- t3 r
修改前:# |3 x) R: F: E6 ~
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  # e! d0 r9 G, q) m: {9 D
表示默认方式为光标点9 v' p( K4 a& Z5 o- E* G

4 U) n% M" z1 x( z7 t* z修改后:% c4 O  h+ w" s0 H) W& \
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointInferred;  & w- ^6 [2 S, I! Y9 W) F
表示默认方式为自动判断8 v% |0 f) s) p5 d

) K. S/ r- W7 [1 o( M% L) J8 B& x其他的比如端点等都可以修改这个属性来实现   具体可以查阅帮助文档; Y2 c* |0 m6 E2 r0 u+ g+ M
回复 支持 反对

使用道具 举报

发表于 2012-5-15 19:34 | 显示全部楼层
本帖最后由 ugdesign2 于 2012-5-15 19:39 编辑 " }6 W9 G% y1 ]/ E  b' E$ `9 V
612524 发表于 2012-5-15 14:45
+ \3 S" m+ |! g$ ~! i/ h+ T修改前:2 P8 O$ t% j* O% t
UFUi.PointBaseMethod basemethod = UFUi.PointBaseMethod.PointCursorPos;  2 u, U% {& i" L1 ]' \. U# k
表示默认方式为 ...
9 f4 @6 _) T+ f4 E) i! r
# t! @9 U( W# L" O# m+ D8 u
非常感谢,现在明白了9 T+ T7 [2 ~  }' c
另问一下楼主那里有帮助文档下载?+ @, @; A/ X0 r0 y/ W7 o2 z5 G1 S
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2014-7-7 09:00 | 显示全部楼层
ugdesign2 发表于 2012-5-13 17:102 X4 G, c" p  t7 {" I. c
先感谢楼主了,这个例子真是我们初学者的福音,另测试了你的代码后,再请教如下图片的中一个问题:
& f; s* B4 X& k4 h, z: x3 \+ U- W
请问大神为什么我编译完之后会出错啊!为什么我的引用会出问题有感叹号呢?是不是哪里的设置出了问题,求大神指导!!

编译出错

编译出错

引用有问题

引用有问题
回复 支持 反对

使用道具 举报

发表于 2014-7-30 10:56 | 显示全部楼层
感谢楼主分享~' Q$ A) c7 j1 F. M

. K% A( w7 O8 J/ D话说,楼主的自动出图,不发表了吗?3 m' F* F$ l; F0 @; T2 V+ }
现在进展怎么样啊~~
% @  b9 f/ T) M9 E; r- P3 [8 @1 O8 }5 k
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 00:09 , Processed in 0.100013 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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