int Read_ATTR_Type(int ObjTag, char* Attr_Title); //读取属性返回属性类型
string Read_ATTR_StringValue(int ObjTag, char* Attr_Title);//读取属性返回属性字符串值
string Read_PartExprDoubleValue(int ComponentTag, char * Expressions_Title); //遍历部件获取表达式值 Double型
string Read_PartExprIntValue(int ComponentTag, char* Expressions_Title); //遍历部件获取表达式值 Int型

int YN_BOM::Read_ATTR_Type(int ObjTag, char * Attr_Title) //读取属性返回属性类型
{
try
{
UF_initialize();
UF_ATTR_value_t Attr_Value;//定义结构体
Attr_Value.value.string = new char[UF_ATTR_MAX_STRING_LEN + 1];
UF_ATTR_read_value(ObjTag, Attr_Title, UF_ATTR_string, &Attr_Value);//获取属性
int TypeResults = Attr_Value.type;

return TypeResults;

//释放内存
delete Attr_Value.value.string;
UF_terminate();
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
YN_BOM::theUI->NXMessageBox()->Show("属性类型", NXOpen::NXMessageBox::DialogTypeError, "程序错误,请检查代码");
}
}

string YN_BOM::Read_ATTR_StringValue(int ObjTag, char* Attr_Title) //读取属性返回属性字符串值
{
try
{
UF_initialize();
UF_ATTR_value_t Attr_Value;//定义结构体
Attr_Value.value.string = new char[UF_ATTR_MAX_STRING_LEN + 1];
UF_ATTR_read_value(ObjTag, Attr_Title, UF_ATTR_string, &Attr_Value);//获取属性
string StringValeResults = Attr_Value.value.string;

return StringValeResults;

//释放内存
delete Attr_Value.value.string;
UF_terminate();
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
YN_BOM::theUI->NXMessageBox()->Show("属性字符串值", NXOpen::NXMessageBox::DialogTypeError, "程序错误,请检查代码");
}
}
string YN_BOM::Read_PartExprDoubleValue(int ComponentTag , char* Expressions_Title) //遍历部件获取表达式值 Double型
{
try
{
Assemblies::Component* component = dynamic_cast<NXOpen::Assemblies::Component*>(NXObjectManager::Get(ComponentTag));//获取Component
NXOpen::Part* ThePart = dynamic_cast<Part*>(component->Prototype()); //component强制转换为part
//遍历表达式
std::vector<Expression*> PartExprs = ThePart->Expressions()->GetVisibleExpressions();
Expression* PartExpression;

char PartExpCharValue[256];
string PartExpStrValue;

for (int i = 0 ; i < PartExprs.size(); i++)
{
PartExpression = dynamic_cast<Expression*>(PartExprs[i]);
NXString PartExpressionName = PartExpression->Name();
double PartExpressionValue = PartExpression->Value();
if (strcmp(PartExpressionName.GetLocaleText(), Expressions_Title) == 0)
{
sprintf(PartExpCharValue, "%.2f", PartExpressionValue);
}
}
PartExpStrValue = PartExpCharValue;
//theSession->ListingWindow()->WriteLine(component->DisplayName()+"表达式:" + Expressions_Title +"值=" + PartExpStrValue );
return PartExpStrValue;
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
YN_BOM::theUI->NXMessageBox()->Show("获取表达式Double值", NXOpen::NXMessageBox::DialogTypeError, "程序错误,请检查代码");
}
}

string YN_BOM::Read_PartExprIntValue(int ComponentTag, char* Expressions_Title) //遍历部件获取表达式值 Int型
{
try
{
Assemblies::Component* component = dynamic_cast<NXOpen::Assemblies::Component*>(NXObjectManager::Get(ComponentTag));//获取Component
NXOpen::Part* ThePart = dynamic_cast<Part*>(component->Prototype()); //component强制转换为part
//遍历表达式
std::vector<Expression*> PartExprs = ThePart->Expressions()->GetVisibleExpressions();
Expression* PartExpression;

char PartExpCharValue[256];
string PartExpStrValue;

for (int i = 0; i < PartExprs.size(); i++)
{
PartExpression = dynamic_cast<Expression*>(PartExprs[i]);
NXString PartExpressionName = PartExpression->Name();
int PartExpressionValue = PartExpression->Value();
if (strcmp(PartExpressionName.GetLocaleText(), Expressions_Title) == 0)
{
sprintf(PartExpCharValue, "%d", PartExpressionValue);
//theSession->ListingWindow()->WriteLine(component->DisplayName() + "表达式:" + Expressions_Title + "值=" + PartExpCharValue);
}
}
PartExpStrValue = PartExpCharValue;

return PartExpStrValue;
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
YN_BOM::theUI->NXMessageBox()->Show("获取表达式Int值", NXOpen::NXMessageBox::DialogTypeError, "程序错误,请检查代码");
}
}

NX二次开发读属性/表达式封装函数的更多相关文章

  1. 【NX二次开发】用户出口函数介绍

    用户出口(User Exit)是NX Open 中的一个重要概念.NX在运行过程中某些特定的位置存在规定的出口,当进程执行到这些出口时,NX会自动检查用户是否在此处已定义了指向内部程序位置的环境变量: ...

  2. NX二次开发-UFUN删除链表函数UF_MODL_delete_list

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  3. NX二次开发-UFUN输出UF函数使用错误UF_get_fail_message

    #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> UF_initialize(); UF_FEATUR ...

  4. NX二次开发-设置对象名称函数UF_OBJ_set_name

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> UF_initialize( ...

  5. NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...

  6. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  7. NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2

    NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...

  8. 【NX二次开发】大开眼界,DLL还可以这么调!

    NX二次开发应用程序有交互式.批处理和远程3中模式.交互模式的应用程序(.dll)在NX界面环境下运行.dll以动态链接库的方式被加载到NX的进程空间中.dll可以通过下列几种方式执行. 1.直接激活 ...

  9. NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数

    在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...

  10. NX二次开发-UFUN发射线函数UF_MODL_trace_a_ray的用法

    今天是国庆节,放假休息懒得动,没有出去玩,在家研究一下发射线函数UF_MODL_trace_a_ray.小弟以前在软件公司混的时候,当时我做的那个项目就用到了UF_MODL_trace_a_ray,当 ...

随机推荐

  1. JDK、JRE、JVM和i++

    JRE:运行环境(包含JVM和JAVA核心类库) JDK:JAVA开发工具包(包含JRE和开发工具)----开发工具:指编译工具javac和运行工具java JVM:虚拟机,保证了跨平台 ++i:先运 ...

  2. 小米手机MIUI安装APK时自动获取安装权限(自动点击权限框)

      这篇主要是记录一下在完全没学过Android的情况下硬拗完的这个APK,拖了很久查了很多资料才勉强写完,比较垃圾但还是实现功能了.记录的过程我也尽量把知识点贴出来. 一开始是看了一个大佬的分享贴( ...

  3. Linux环境下将.net6项目部署到docker

    1.创建一个ASP.NET Core Web应用(MVC) 注意点:建议不用勾选单选框"启用Docker(E)",因为勾选后,涉及到Docker-Desktop的安装,可能会引起本 ...

  4. python对象的三要素

    id() 函数返回对象的唯一标识符,标识符是一个整数. 返回值 :返回对象的内存地址. >>>a = 'runoob' >>> id(a) 4531887632 i ...

  5. 从URL中获取参数

    1.跳转测试页面  获取的url上的参数    <!doctype html> <html lang="en"> <head>     < ...

  6. swoole的使用场景

    一.TCP服务器 二.UDP服务器 三.HTTP服务器 四.WebSocket服务器 五.物联网服务器 六.执行异步任务 七.协程

  7. 解决xpath提取的数据列表,保存时不能一一对应的问题

    """拉链函数,zip将几个列表的数据进行封装,一一对应.如果一方列表的数据,比另一方少,那么按数据少的一方对应"""# 数据个数对应相等l ...

  8. php excel导出列超过26个字母处理

    /** * String from columnindex * * @param int $pColumnIndex Column index (base 0 !!!) * @return strin ...

  9. 突然连不上虚拟机,本地网络里没有VMnet8

    今天打开虚拟机,突然发现无法ping通网络了,但是能ping通虚拟机ip,打开我的window的网络适配器发现居然没有vmnet 8虚拟网卡了,防火墙什么的都设置好了,仍然不行,后来发现,在网络和共享 ...

  10. 挖坑——未完成题目列表QwQ

    OI一些的小计划: 日拱一卒,功不唐捐! Unfinished luogu P2814 家谱 Luogu P2076 聚会 luogu P2212 Watering the Fields  草坪上有N ...