NX二开ufun函数UF_MODL_ask_bounding_box(获取边界坐标)

2023-10-27 21:10

本文主要是介绍NX二开ufun函数UF_MODL_ask_bounding_box(获取边界坐标),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个函数用来返回线框和实体类型对象的边界框。
线框对象包括直线,圆弧,样条曲线和圆锥曲线。实体类型对象包括实体 ,面和边。

返回结果如下图,分别返回了曲线和一个block的边界信息:

1、函数结构: 

int UF_MODL_ask_bounding_box (tag_t obj_tag,double bounding_box [6])

2、概述

返回线框和实体类型对象的边界框。 
线框对象包括直线,圆弧,样条曲线和圆锥曲线。实体类型对象包括实体 ,面和边。
根据零件文件中对象的位置,以绝对坐标值返回 边界框值 。

3、实例源码

1)C# 实例源码

using System;
using NXOpen;
using NXOpen.UF;
using NXOpen.Features;public class Program
{// class memberspublic static Session theSession;public static NXOpen.UF.UFSession theUFSession;private static UI theUI = null;public static Part workPart;public static int Main(string[] args){theSession = Session.GetSession();theUFSession = UFSession.GetUFSession();theUI = UI.GetUI();workPart = theSession.Parts.Work;int retValue = 0;try{Tag arc, wcs;UFCurve.Arc arc_coords = new UFCurve.Arc();arc_coords.start_angle = 0.0;arc_coords.end_angle = 3.0;arc_coords.arc_center = new double[3];arc_coords.arc_center[0] = 0.0;arc_coords.arc_center[1] = 0.0;arc_coords.arc_center[2] = 1.0;arc_coords.radius = 2.0;theUFSession.Csys.AskWcs(out wcs);theUFSession.Csys.AskMatrixOfObject(wcs, out arc_coords.matrix_tag);theUFSession.Curve.CreateArc(ref arc_coords, out arc);FeatureSigns sign = 0;double[] corner = new double[3]{0.0, 0.0, 0.0};string[] edgeLen = new string[3] {"100","80","50"};Tag blockTag = Tag.Null;theUFSession.Modl.CreateBlock1(sign, corner, edgeLen, out blockTag);Tag blockBodyTag = Tag.Null;theUFSession.Modl.AskFeatBody(blockTag, out blockBodyTag);double[] boxArc = new double[6];theUFSession.Modl.AskBoundingBox(arc, boxArc);double[] boxBlock = new double[6];theUFSession.Modl.AskBoundingBox(blockBodyTag, boxBlock);}catch (NXOpen.NXException ex){theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());}return retValue;}
}

2)C++实例源码

#include <stdio.h>
#include <uf.h>
#include <uf_part.h>
#include <uf_curve.h>
#include <uf_modl.h>
#include <uf_csys.h>
#include <uf_defs.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{if (irc){char    messg[133];printf("%s, line %d:  %s\n", file, line, call);(UF_get_fail_message(irc, messg)) ?printf("    returned a %d\n", irc) :printf("    returned error %d:  %s\n", irc, messg);}return(irc);
}
static void do_ugopen_api(void)
{char *part_name = "bound";tag_t part, arc_id, wcs_tag;double box[6];UF_CURVE_arc_t arc_coords;/* Fill out the data structure */arc_coords.start_angle = 0.0;arc_coords.end_angle = 270.0 * DEGRA;arc_coords.arc_center[0] = 0.0;arc_coords.arc_center[1] = 0.0;arc_coords.arc_center[2] = 1.0;arc_coords.radius = 2.0;UF_PART_new(part_name, UF_PART_ENGLISH, &part);UF_CSYS_ask_wcs( &wcs_tag );UF_CSYS_ask_matrix_of_object( wcs_tag,&arc_coords.matrix_tag );/* Create arc */UF_CURVE_create_arc(&arc_coords,&arc_id);/* Ask bounding box of arc */UF_MODL_ask_bounding_box(arc_id,box);/* Print bounding box values */printf("\nMinimum x value: %f\n", box[0]);printf("Maximum x value: %f\n", box[3]);printf("Minimum y value: %f\n", box[1]);printf("Maximum y value: %f\n", box[4]);printf("Minimum z value: %f\n", box[2]);printf("Maximum z value: %f\n", box[5]);
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int param_len)
{if (!UF_CALL(UF_initialize())){do_ugopen_api();UF_CALL(UF_terminate());}
}
int ufusr_ask_unload(void)
{return (UF_UNLOAD_IMMEDIATELY);
}

这篇关于NX二开ufun函数UF_MODL_ask_bounding_box(获取边界坐标)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288408

相关文章

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java子线程无法获取Attributes的解决方法(最新推荐)

《Java子线程无法获取Attributes的解决方法(最新推荐)》在Java多线程编程中,子线程无法直接获取主线程设置的Attributes是一个常见问题,本文探讨了这一问题的原因,并提供了两种解决... 目录一、问题原因二、解决方案1. 直接传递数据2. 使用ThreadLocal(适用于线程独立数据)