NX Open允许用户创建和查询所有基本体素特征,通过API函数建立基本体素特征返回的是相应的特征标识,如果需要可以通过函数UG_MODL_ask_feat_body()获得特征对应的实体对象标识。
UF_MODL_ask_block_parms可以用来获取块尺寸信息
1、函数结构:
UF_MODL_ask_block_parms
(
tag_t feature_obj_id,
int edit,
char * size [ 3 ]
)
2、参数说明:
第1个参数为输入:
feature_obj_id代表参数变量,tag_t 为输入参数类型,Feature对象标识符
第2个参数为输入:
输入int 整数型的参数,参数的变量格式为edit,这是一个未使用的标志。它用于确定是否返回右手侧或表达式的两侧。目前,正在返回的表达的两侧。
第3个参数为输出:
输出char * 字符类型的参数,参数的变量格式为size [ 3 ],块尺寸(长,宽,高)中分配为三要素的字符串空间应该经由UF_free不使用时被释放。
3、函数使用
1)C++版本
#include <uf.h>
#include <uf_modl.h>
extern "C" DllExport void ufsta(char *param, int *retcod, int param_len);
extern "C" DllExport void ufsta(char *param, int *retcod, int param_len)
{
UF_initialize();
UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
double Corner_pt[] = {0.0, 0.0, 0.0};//设置原点
char *Edge_Len[] = {"100", "80", "50"};//设置长宽高
tag_t BlkTag = NULL_TAG;
UF_MODL_create_block(Sign, NULL_TAG, Corner_pt, Edge_Len, &BlkTag);
char *Size[3];//输出长宽高值
UF_MODL_ask_block_parms(BlkTag, 1, Size);
UF_terminate();
}
2)C# 版本
using System;
using NXOpen;
using NXOpen.UF;
public class Program
{
// class members
public static Session theSession;
public static NXOpen.UF.UFSession theUFSession;
private static UI theUI = null;
public static int Main(string[] args)
{
theSession = Session.GetSession();
theUFSession = UFSession.GetUFSession();
theUI = UI.GetUI();
int retValue = 0;
try
{
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);
string[] size = new string[3];
theUFSession.Modl.AskBlockParms(blockTag, 1, size);
}
catch (NXOpen.NXException ex)
{
theUI.NXMessageBox.Show("Block Styler", NXMessageBox.DialogType.Error, ex.ToString());
}
return retValue;
}
}