UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock

这篇具有很好参考价值的文章主要介绍了UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

列文章目录

UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock
UG/NX二次开发Siemens官方NXOPEN实例解析—1.2 BlockStyler/EditExpression
UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview
UG/NX二次开发Siemens官方NXOPEN实例解析—1.4 BlockStyler/HoleCoordinates
UG/NX二次开发Siemens官方NXOPEN实例解析—1.5 BlockStyler/MatrixOperations
UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample
UG/NX二次开发Siemens官方NXOPEN实例解析—1.7 BlockStyler/TreeListDemo
UG/NX二次开发Siemens官方NXOPEN实例解析—1.8 BlockStyler/UDB_CreateCylinder
UG/NX二次开发Siemens官方NXOPEN实例解析—1.9 BlockStyler/UpdateExample

文章目录

列文章目录

文章目录

前言

一、UI样式文件分析

1. 样式文件目录

2. 样式文件导入预览 

 3. 样式文件解析

二、源码文件解析

1. 主程序分析

2. 处理模块分析

3. 运行结果截图

总结


前言

        随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。

        然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。


一、UI样式文件分析

1. 样式文件目录

目录位置:UGOPEN\SampleNXOpenApplications\C++\BlockStyler\ColoredBlock\ColoredBlock.dlx

2. 样式文件导入预览 

UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock

 3. 样式文件解析

本实例主要用到了双精度、指定点、对象颜色拾取器三个控件

二、源码文件解析

1. 主程序分析

    public static void Main()
    {
        try
        {
            theColoredBlock = new ColoredBlock();
            // The following method shows the dialog immediately
            theColoredBlock.Show();
        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.Message);
        }
        finally
        {
            theColoredBlock.Dispose();
        }
    }
    public ColoredBlock()
    {
        try
        {
            theSession = Session.GetSession();
            theUI = UI.GetUI();
            theDialogName = "D:\\Program Files\\Siemens\\NX 8.0\\UGOPEN\\SampleNXOpenApplications\\C++\\BlockStyler\\ColoredBlock\\ColoredBlock.dlx";
            theDialog = theUI.CreateDialog(theDialogName);
            theDialog.AddApplyHandler(new NXOpen.BlockStyler.BlockDialog.Apply(apply_cb));
            theDialog.AddInitializeHandler(new NXOpen.BlockStyler.BlockDialog.Initialize(initialize_cb));
            theDialog.AddDialogShownHandler(new NXOpen.BlockStyler.BlockDialog.DialogShown(dialogShown_cb));
        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            throw ex;
        }
    }

        Main函数里,我们只需要关注ColoredBlock()方法;

        在ColoredBlock()方法里,主要加载了dlx文件路径,提交方法apply_cb,控件初始化方法initialize_cb,回调方法dialogShown_cb。下面,我们重点讲一下提交方法和控件初始化方法。

2. 处理模块分析

    public void initialize_cb()
    {
        try
        {
            group0 = theDialog.TopBlock.FindBlock("group0");
            blockHeight = theDialog.TopBlock.FindBlock("blockHeight");
            blockWidth = theDialog.TopBlock.FindBlock("blockWidth");
            blockLength = theDialog.TopBlock.FindBlock("blockLength");
            blockOrigin = theDialog.TopBlock.FindBlock("blockOrigin");
            blockColor = theDialog.TopBlock.FindBlock("blockColor");

            // Set the upper-limits and lower-limits
            PropertyList blockHeightProps = blockHeight.GetProperties();
            blockHeightProps.SetDouble("MaximumValue", 100000.0);
            blockHeightProps.SetDouble("MinimumValue", 0.001);
            blockHeightProps.SetDouble("Value", 100.0);
            blockHeightProps.Dispose();
            blockHeightProps = null;

            PropertyList blockWidthProps = blockWidth.GetProperties();
            blockWidthProps.SetDouble("MaximumValue", 100000.0);
            blockWidthProps.SetDouble("MinimumValue", 0.001);
            blockWidthProps.SetDouble("Value", 100.0);
            blockWidthProps.Dispose();
            blockWidthProps = null;

            PropertyList blockLengthProps = blockLength.GetProperties();
            blockLengthProps.SetDouble("MaximumValue", 100000.0);
            blockLengthProps.SetDouble("MinimumValue", 0.001);
            blockLengthProps.SetDouble("Value", 100.0);
            blockLengthProps.Dispose();
            blockLengthProps = null;
        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.Message);
        }
    }

初始化方法initialize_cb()

1、获取控件方法:

     group0 = theDialog.TopBlock.FindBlock("group0");
     blockHeight = theDialog.TopBlock.FindBlock("blockHeight");
     blockWidth = theDialog.TopBlock.FindBlock("blockWidth");
     blockLength = theDialog.TopBlock.FindBlock("blockLength");
     blockOrigin = theDialog.TopBlock.FindBlock("blockOrigin");
     blockColor = theDialog.TopBlock.FindBlock("blockColor");

2、PropertyList在BlockUI里面是最常用的对象:

     PropertyList blockHeightProps = blockHeight.GetProperties();

3、分别设置双精度输入框的最大值、最小值、默认值:

     blockHeightProps.SetDouble("MaximumValue", 100000.0);
     blockHeightProps.SetDouble("MinimumValue", 0.001);
     blockHeightProps.SetDouble("Value", 100.0);

    public int apply_cb()
    {
        int errorCode = 0;
        NXOpen.Features.BlockFeatureBuilder blockFeatureBuilder1 = null;

        try
        {
            Part workPart = theSession.Parts.Work;

            //Get the values from UI Blocks
            PropertyList blockHeightProps = blockHeight.GetProperties();
            double theHeight = blockHeightProps.GetDouble("Value");
            blockHeightProps.Dispose();
            blockHeightProps = null;

            PropertyList blockWidthProps = blockWidth.GetProperties();
            double theWidth = blockWidthProps.GetDouble("Value");
            blockWidthProps.Dispose();
            blockWidthProps = null;

            PropertyList blockLengthProps = blockLength.GetProperties();
            double theLength = blockLengthProps.GetDouble("Value");
            blockLengthProps.Dispose();
            blockLengthProps = null;

            PropertyList blockOriginProps = blockOrigin.GetProperties();
            Point3d originPoint = blockOriginProps.GetPoint("Point");
            blockOriginProps.Dispose();
            blockOriginProps = null;

            PropertyList blockColorProps = blockColor.GetProperties();
            int[] color = blockColorProps.GetIntegerVector("Value");
            blockColorProps.Dispose();
            blockColorProps = null;

            //Create the NX block
            NXOpen.Features.Feature nullFeatures_Feature = null;
            blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);

            blockFeatureBuilder1.SetOriginAndLengths(originPoint, theLength.ToString(), theHeight.ToString(), theWidth.ToString());

            NXOpen.Features.Feature feature1;
            feature1 = blockFeatureBuilder1.CommitFeature();


            // Get the body from Feature
            NXOpen.Features.BodyFeature bodyFeat = (NXOpen.Features.BodyFeature)feature1;
            Body[] bodies = new Body[1];
            bodies = bodyFeat.GetBodies();
            // Apply the color to feature body
            DisplayModification displayModification1 = theSession.DisplayManager.NewDisplayModification();
            displayModification1.ApplyToAllFaces = true;
            displayModification1.NewColor = color[0];
            DisplayableObject[] objects1 = new DisplayableObject[1];
            objects1[0] = bodies[0];
            displayModification1.Apply(objects1);
            displayModification1.Dispose();
        }
        catch (Exception ex)
        {
            //---- Enter your exception handling code here -----
            errorCode = 1;
            theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.Message);
        }
        finally
        {
            if (blockFeatureBuilder1 != null)
            {
                blockFeatureBuilder1.Destroy();
                blockFeatureBuilder1 = null;
            }
        }
        return errorCode;
    }

 提交方法apply_cb()

1、获取输入框的值:

     double theHeight = blockHeightProps.GetDouble("Value");

2、获取选择点的坐标:

     Point3d originPoint = blockOriginProps.GetPoint("Point");

3、获取颜色选择器的颜色:

     int[] color = blockColorProps.GetIntegerVector("Value");

4、使用BlockFeatureBuilder对象,创建块:

     NXOpen.Features.Feature nullFeatures_Feature = null;
     blockFeatureBuilder1 = workPart.Features.CreateBlockFeatureBuilder(nullFeatures_Feature);
     blockFeatureBuilder1.SetOriginAndLengths(originPoint, theLength.ToString(), theHeight.ToString(), theWidth.ToString());
     NXOpen.Features.Feature feature1;
     feature1 = blockFeatureBuilder1.CommitFeature();

5、根据创建块的feature1,获取到块,然后通过DisplayModification设置颜色:

     NXOpen.Features.BodyFeature bodyFeat = (NXOpen.Features.BodyFeature)feature1;
     Body[] bodies = new Body[1];
     bodies = bodyFeat.GetBodies();
     DisplayModification displayModification1 = theSession.DisplayManager.NewDisplayModification();
     displayModification1.ApplyToAllFaces = true;
     displayModification1.NewColor = color[0];
     DisplayableObject[] objects1 = new DisplayableObject[1];
     objects1[0] = bodies[0];
     displayModification1.Apply(objects1);

3. 运行结果截图

UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock

总结

官方实例ColoredBlock

1、前端BlockUI主要用到了的3种控件:双精度、指定点、颜色拾取器。这里介绍了如何获取控件,初始化控件,获取指定点坐标,获取颜色信息。

2、后台通过前端获取信息,讲述了如何通过BlockFeatureBuilder创建块,通过DisplayModification设置块的颜色。文章来源地址https://www.toymoban.com/news/detail-455111.html

到了这里,关于UG/NX二次开发Siemens官方NXOPEN实例解析—1.1 BlockStyler/ColoredBlock的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UG NX二次开发(C#)-装配-删除阵列矩阵

    在外部模式对装配体进行替换或者删除时,有时遇到部分组件不能替换或者删除,其中一个原因是阵列主组件,是不允许更改的。下面介绍下采用UG NX二次开发的方法删除阵列主组件。 在一个装配体模型中,删除某个组件时会出现下面的错误: “不能删除组件图样的主组件”

    2024年02月07日
    浏览(50)
  • UG\NX二次开发BlockUI 进入NX的BlockUI编辑界面

    文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,CC++-CSDN博客         要使用BlockUI,需要先进入NX的BlockUI编辑界面。在低版本中,可以在Toolbar工具条中进入 开始→所有应用模块→块UI样式编辑器 ;在高版本中,可以在Ribbon工具栏中进入

    2024年02月02日
    浏览(58)
  • UG\NX二次开发 实现预览和取消预览

    文章作者:里海 来源网站: https://blog.csdn.net/WangPaiFeiXingYuan         介绍两种方法。一是先创建特征,记录创建的特征,取消预览时删除这些特征。另一种方法是在创建特征前Set_mark,取消预览就undo_to_mark。       

    2024年02月14日
    浏览(47)
  • UG/NX二次开发 将当前视图截图到剪切板

    文章作者:里海 来源网站: https://blog.csdn.net/WangPaiFeiXingYuan         将当前视图截图到剪切板,运行完程序后,找一个位置(比如PPT) 粘贴。

    2024年02月11日
    浏览(69)
  • UG\NX二次开发 用户自定义UI块

    1.打开NX软件,点击“块UI样式编辑器”,进入UI编辑界面;  2.将类型改为“用户定义 UI 块”;  3.设置名称、目录名称,也可以设置自定义UI块的图标;  4.点击保存,需要注意自定义UI块会多生成一个目标文件“.udx”,如果需要使用自定义的UI块,则必须把自定义UI块生成的

    2024年02月16日
    浏览(55)
  • UG NX二次开发(C#)-机械管线布置-添加管道路径

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 机械管道布局是UG NX的一个应用模块,以前给客户做过一个项目,现在分享给大家。这篇文章是讲解如何布置管道路径(创建线性路径),后面会逐步的讲解,如果有需要的可以私信博主,或者加入QQ群

    2024年01月20日
    浏览(90)
  • UG\NX 二次开发 相切面、相邻面的选择控件

    文章作者:里海 来源网站: https://blog.csdn.net/WangPaiFeiXingYuan         有群友问“UFUN多选功能过滤面不能选择相切面或相邻面之类的吗?” 这个用Block UI的\\\"面收集器\\\"可以,ufun函数也可以,请参照这篇:【NX二次开发】相切面封装函数-CSDN博客                   

    2024年02月12日
    浏览(50)
  • UG NX二次开发(C#)-创建点到曲线(边)的切线

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 在UG NX二次开发时,对于求点到曲线的切线,采用ufun函数可以实现,即是UF_CURVE_create_line_point_tangent,但是对于C#,这个函数尚未封装进来,所以没有直接对应的函数。本文讲一下采用C#创建点到曲线的切

    2024年02月09日
    浏览(58)
  • UG\NX二次开发 获取部件的4x4矩阵

    文章作者:里海 来源网站: https://blog.csdn.net/WangPaiFeiXingYuan 输入部件occ,获取矩阵。用函数UF_ASSEM_ask_transform_of_occ(),比较直接。 输入部件的实例或事例,获取矩阵。用函数UF_ASSEM_ask_component_data()。 通过部件事例获取实例的方法

    2024年02月14日
    浏览(47)
  • UG NX二次开发(C#)-UI Styler-批量选择点

    在设计UG NX的对话框界面时,有时需要选择点,在UI Styler编辑器中已经设置好了可以指定点选择按钮,这个点选择对话框是单选,不是多选的,如果想选择多个点,那么可以采用对象选择按钮,本文介绍下选择点的操作。 UG NX的UI Styler对话框中,指定点如下图所示: 添加此按

    2023年04月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包