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. vue-quill-editor 图片上传处理

    <template> <div class="quill-editor"> <!-- 图片上传组件辅助--> <el-upload cla ...

  2. 打卡node day02--url qs 内置模块

    node 内置模块 url [官网链接:http://nodejs.cn/api/url.html] 1.url.parse() 2.url.format() 内置模块Query String 查询字 ...

  3. c++单例模式设计

    class singleClass { public: static singleClass* getInstance() { //双判断保证在多线程下不会每次getInstance都加锁 if(!m ...

  4. react 非父子组件传参方式

    1.通过父组件当中间人方式,子传父再传子 2.通过发布订阅模式 obj={ list:[], sub(callback){ list.push(callback) }, pub(){ list.for ...

  5. 【SSO单点系列】(2):CAS4.0 之 跨域 Ajax 登录实践

    CAS4.0 之 跨域 Ajax 登录实践 一.问题描述 CAS实现单点 实现一处登录 可访问多个应用 . 但是原登录是CAS默认登录页面和登出页面是无法重定向到自定义页面的   此处使用Ajax+I ...

  6. 【2020NOI.AC省选模拟#2】A. 旋转

    题目链接 原题解: 把每个点的坐标视为复数,那么每次询问就是区间求平均数(先求和然后除以个数).一个点绕着原点旋转就是乘以$(\cos 60^\circ +i\sin 60^\circ)$. 一个点绕 ...

  7. Delphi中纤程的使用

    首先我们来看看纤程的定义 纤程(来自百科): 纤程是Windows为了将Unix服务程序更好的移植到Windows上而创建的, 线程是在Windows内核中实现的,纤程是在用户模式下实现的,内核对纤程 ...

  8. 2020-2021第一学期2024"DCDD"小组第十周讨论

    2020-2021第一学期"DCDD"第十周讨论 小组名称:DCDD 小组成员:20202403孟凡斌.20202411陈书桓.20202416刘铭睿.20202420黄椿淇 照例 ...

  9. iClock数据服务器默认账号密码

    网络空间资产搜索: shodan 搜索 默认密码 admin/a***n End!!!

  10. Go语言中密码加密校验

    使用go自带的库bcrypt bcrypt是不可逆的加密算法,无法通过解密密文得到明文. bcrypt和其他对称或非对称加密方式不同的是,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储 ...