当前位置: 首页 > news >正文

NX二次开发——设置对象的密度(UF_MODL_set_body_density)

        在前几篇博客中我们已经探讨了如何设置实体的密度。在装配环境中,同样可以为组件设置密度。虽然不能直接对组件进行密度设置,但可以通过一种间接方式实现:在装配环境下,利用 UF_ASSEM_set_work_part_quietly() 函数以静默方式将组件设为工作部件,然后对该组件中的实体设置密度,从而间接完成装配环境中组件密度的设置。

具体代码及注释如下所示(注意单位转化)

//设置对象密度
void NXopen_AssignmentQuality::SetObjectDensity(int type)
{try{vector<NXOpen::TaggedObject *> ObjectTags = bodySelect0->GetProperties()->GetTaggedObjectVector("SelectedObjects");for (int i = 0; i < (int)ObjectTags.size(); i++){bool is_occ;//判断是否为组件tag_t body = ObjectTags[i]->Tag();//用来存储选择对象的TAGtag_t owning_part, part = UF_PART_ask_display_part();// 判断是否为装配体中的实例对象is_occ = (UF_ASSEM_is_occurrence(body) && !UF_OBJ_is_object_a_promotion(body));if (is_occ){body = UF_ASSEM_ask_prototype_of_occ(body);//输入对象的事例occurrence,返回对象的原型。如果输入的是未加载的部件则返回NULL_TAG。UF_OBJ_ask_owning_part(body, &owning_part);//获得对象所在部件的PartTagUF_ASSEM_set_work_part_quietly(owning_part, &part);//再不打开窗口,静默下,将组件中的对象设置为工作部件进行修改,因为密度修改只能该实体的密度,组件其实实体链接到装配环境中,就像不能修改装配体名字,只能修改实体零件名字,该链接到组件中完成名字修改UF_MODL_density_units_t units;			//units:磅/英寸=UF_MODL_pounds_inches;磅/英尺 = UF_MODL_pounds_feet;克/厘米 = UF_MODL_grams_centimeters;千克/米 = UF_MODL_kilograms_metersif (type == 1){units = UF_MODL_pounds_inches;}else if (type == 2){units = UF_MODL_pounds_feet;}else if (type == 3){units = UF_MODL_grams_centimeters;}else if (type == 4){units = UF_MODL_kilograms_meters;}double Volum = GetBodyVolum(body);		//克/mm^3		double Quality = double0->GetProperties()->GetDouble("Value");double density = (Quality / Volum) * 1000000;//kg/mm^3转化为g/cm^3UF_MODL_set_body_density(body, units, density);UF_ASSEM_set_work_part_quietly(part, &owning_part);}else{UF_MODL_density_units_t units;			//units:磅/英寸=UF_MODL_pounds_inches;磅/英尺 = UF_MODL_pounds_feet;克/厘米 = UF_MODL_grams_centimeters;千克/米 = UF_MODL_kilograms_metersif (type == 1){units = UF_MODL_pounds_inches;}else if (type == 2){units = UF_MODL_pounds_feet;}else if (type == 3){units = UF_MODL_grams_centimeters;}else if (type == 4){units = UF_MODL_kilograms_meters;}double Volum = GetBodyVolum(body);double Quality = double0->GetProperties()->GetDouble("Value");double density = (Quality / Volum) * 1000000;//kg/mm^3转化为g/cm^3UF_MODL_set_body_density(body, units, density);}}}catch (exception& ex){//---- Enter your exception handling code here -----NXopen_AssignmentQuality::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());}}

关于实体设置密度的方式参考一下博客:

NX二次开发——设置体的密度(UF_MODL_set_body_density)-CSDN博客

相关文章:

  • redisson分布式锁实现原理归纳总结
  • JAVA EE_HTTP
  • 仅需三张照片即可生成沉浸式3D购物体验?谷歌电商3D方案全解析
  • 信息系统项目管理师高级-软考高项案例分析备考指南(2023年案例分析)
  • 【通用智能体】Search Tools:Open Deep Research 项目实战指南
  • Ubuntu 安装 squid
  • 【MySQL】第五弹——表的CRUD进阶(三)聚合查询(上)
  • AI:人形机器人的应用场景以及商业化落地潜力分析
  • 神经网络与深度学习第六章--循环神经网络(理论)
  • 16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则
  • 业务系统上线为什么这么难
  • Level2.8蛇与海龟(游戏)
  • 浅谈前端架构设计与工程化
  • C语言_编译全攻略_从原理到实战的深度解析
  • 如何利用 Python 获取京东商品 SKU 信息接口详细说明
  • 深度学习模型基本框架
  • 谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程
  • 【Redis】零碎知识点(易忘 / 易错)总结回顾
  • C++学习:六个月从基础到就业——C++11/14:decltype关键字
  • Redis持久化机制详解:保障数据安全的关键策略
  • 光明日报社副总编辑薄洁萍调任求是杂志社副总编辑
  • 北邮今年本科招生将首次突破四千人,新增低空技术与工程专业
  • 国际金价下跌,中概股多数上涨,穆迪下调美国主权信用评级
  • 新华时评:博物馆正以可亲可近替代“高冷范儿”
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查