iCAx开思工具箱

标题: 用C#在NX上写的一个小程序:遍历part得到实体及特征 [打印本页]

作者: ice-snow    时间: 2009-11-12 21:58
标题: 用C#在NX上写的一个小程序:遍历part得到实体及特征
今天刚开始学用C#在NX上写程序,做了个小测试,即遍历work part得到实体及实体所包含的特征,与所有初学者共勉~~

ok,开始啦~新建类库程序,工程名为CycleBodies,添加相关引用,NXOpen.dll,NXOpenUI.dll,NXOpen.UF.dll,NXOpen.Utilities.dll
以下是代码部分:(我已经做了很详细的注释)
using NXOpen;
namespace CycleBodies (, 下载次数: 106)
{
    public class Class1
    {
        private static NXOpen.Session theSession;
        private static NXOpen.Part workPart;
        public static void Main()
        {
            theSession = Session.GetSession();  //得到UG session
            workPart = theSession.Parts.Work;  //得到当前的工作部件
            theSession.ListingWindow.Open();
            NXOpen.Body[] BodiesInPart;
            BodiesInPart = workPart.Bodies.ToArray(); //得到当前工作部件中的所有bodies
            int SolidBodyCount = 0;
            string SolidBodyNum;
            foreach (NXOpen.Body i in BodiesInPart)  //遍历bodies数组
            {
                if (i.IsSolidBody)  //判断是否为实体,如果是则计数器加1,并给实体赋名,最后在listing window中打印实体名字。
                {
                    SolidBodyCount++;
                    SolidBodyNum = SolidBodyCount.ToString();  //将整型数据转换成字符型
                    i.SetName("SolidBody" + SolidBodyNum);     //设置实体名称
                    theSession.ListingWindow.WriteLine("SolidBodyName: "+i.Name);//把实体名称打印在listing window中
                    
                    NXOpen.Features.Feature[] FeaturesInSolidBody;
                    FeaturesInSolidBody = i.GetFeatures(); ////得到实体所包含的所有特征
                    string FeatType;
                    int FeatCount=0;
                    string FeatNum;
                    //将特征的类型显示在listing window中
                    foreach (NXOpen.Features.Feature j in FeaturesInSolidBody)
                    {
                        FeatCount++;
                        FeatNum = FeatCount.ToString();
                        FeatType = j.FeatureType;
                        theSession.ListingWindow.WriteLine("Feature "+FeatNum+":"+" "+FeatType);
                    }            
                }
            }
        }
    }
}


作者: waster    时间: 2009-11-16 10:39
呵呵,终于又遇见一个用C#的了
作者: ffhi    时间: 2009-11-16 11:48
NX/Open C++没有人用吗?
作者: 有偿帮助    时间: 2009-11-16 16:41
用c++啊 c#也不错啊
作者: 苏州人    时间: 2009-11-18 16:22
楼主,能发一个使用多选对话框selectwithclassdialog()这个函数的例子么,要C#的,我用VB.NET开发,vb.net我会的,只是不知道怎么换成C#的,谢了
作者: ice-snow    时间: 2009-11-19 10:45
呵 我也刚开始学c# 不太懂 试了下多选对话框selectwithclassdialog()  设定只有边和线可选  代码如下:
using NXOpen;
using NXOpen.UF;
using NXOpen.Utilities;
using NXOpenUI;

namespace SelectWithClass
{
    public class Class1
    {
        public static NXOpen.Session theSession;
        public static UFSession theUFSession;
        public static NXOpen.Part workPart;

        static int sel_init_proc(IntPtr select_,IntPtr user_data)
        {
            int num_triples = 2;
            UFUi.Mask[] mask_triples = new UFUi.Mask[2];             /* enable only lines and edges */
            mask_triples[0].object_type = UFConstants.UF_line_type;
            mask_triples[0].object_subtype = 0;
            mask_triples[0].solid_type = 0;
            mask_triples[1].object_type = UFConstants.UF_solid_type;
            mask_triples[1].object_subtype = 0;
            mask_triples[1].solid_type = UFConstants.UF_UI_SEL_FEATURE_ANY_EDGE;
            theUFSession.Ui.SetSelMask(select_, UFUi.SelMaskAction.SelMaskClearAndEnableSpecific, num_triples, mask_triples);
            return UFConstants.UF_UI_SEL_SUCCESS;
        }

        public static void Main()
        {
            theSession = Session.GetSession();
            theUFSession = UFSession.GetUFSession();
            workPart = theSession.Parts.Work;

            string cue = "Please Select Objects";
            string title = "User Title";
            int response;
            int count;
            Tag[] objects;
            int i = 0;
            IntPtr user_data = (IntPtr)i;   
            theUFSession.Ui.SelectWithClassDialog(cue, title, UFConstants.UF_UI_SEL_SCOPE_WORK_PART, sel_init_proc,user_data,out response, out count,out objects);
        }
    }
}


作者: ice-snow    时间: 2009-11-19 10:56
(, 下载次数: 56) SelectWithClassDialogSample源码
作者: liubo.focus    时间: 2010-9-10 21:49
多给点贡献值好吗?
作者: hd726    时间: 2010-9-29 11:41
挺不错  支持支持
作者: fisherliu    时间: 2011-1-20 21:19
不错,用net的也可参考
作者: wxwxwxwx    时间: 2011-1-29 09:51
不错的资料
作者: mould    时间: 2011-2-9 23:45
不错的资料
作者: cadjack    时间: 2011-2-10 14:15
有使用NX/Open API for C++的朋友分享交流嘛?
作者: wxwxwxwx    时间: 2011-2-13 09:32
挺不错  支持支持
作者: yibo77712    时间: 2012-3-31 11:36
很有用啊,多谢多谢,前辈的东西,我有我方向
作者: w580602    时间: 2014-6-26 20:53
谢谢楼主分享...




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3