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. MySQL_demo_50道习题

    title: MySQL_demo_50道习题 author: 杨晓东 permalink: MySQL_demo date: 2021-10-02 11:27:04 categories: - 投篮 ...

  2. 睿爸信奥-【临阵磨枪】练习赛(第二场)- T2

    目录 题面 code 题面 徐老师在[睿爸信奥]里面颇受学生欢迎,有一天校长石老师想要搞个最受欢迎老师投票,徐老师就很想拿到这个奖.假设有 名候选者,有 人参加了投票,与以往不同的是,这次所有得票数超 ...

  3. svn提交注释限制

    找到svn仓库 目录结构长这样 在hooks下的新建一个名字为pre-commit.bat的可执行文件 注意:findstr后边的.通配符表示一个任意字符,findstr "." ...

  4. ORACLE 查看用户下表占用空间大小

    方式一: select  * from user_segments s  where s.BYTES  is not null  order by s.BYTES desc 方式二: select s ...

  5. Python3注释

    Python中的注释有单行注释和多行注释: python中单行注释以#开头,例如: #这是一个注释 print("hello,word!") 多行注释用三个单引号'''或者三个双引 ...

  6. cadence报错:Class must be one of IC, IO, DISCRETE, MECHANICAL, PLATING_BAR or DRIVER_CELL.

    在原理图文件上右键选择Edit Object Properties, 然后在class一栏中修改class为IC, IO, DISCRETE, MECHANICAL, PLATING_BAR or D ...

  7. nacos之服务注册、发现及维持心跳

    注册服务(增加健康检查)  服务发现(默认15s没有心跳请求,则自动注销服务)  心跳(维持服务运行状态) 参数说明 serviceName:服务名称 beat:服务的详细信息 ip 端口等,json ...

  8. Taro3 扫描不同二维码参数不同,但是热启动之后参数不变 根据环境不同更换域名

    热启动:先执行缓存的静态数据,然后再执行页面代码.比如右上角退出或者按home键错误用法:用的Taro3 react function函数,之前用的  Taro.getLaunchOptionsSyn ...

  9. Windows 进程间通信 共享内存

    向内存中写数据 1 // SharedMemorySample_write_main.cpp 2 #include <SDKDDKVer.h> 3 #include <Windows ...

  10. HTML初体验之各种标签练习

    HTML初体验之各种标签练习 首先是<!DOCTYPE>标签 放在网页顶部的doctype声明是让浏览器进入正确呈现模式的关键.浏览器自动切换到恰当的呈现模式,以便正确显示由doctype ...