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

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博客

http://www.xdnf.cn/news/6797.html

相关文章:

  • ESP32 PWM开发对比:底层驱动 VS Arduino封装,谁更适合你?
  • FEKO许可证与版本兼容性问题
  • 问答数字人解决方案​
  • 2025 年TTS 语音模型推荐:全面解析与对比
  • 力扣-78.子集
  • 常见激活函数——作用、意义、特点及实现
  • 生产级JVM参数优化
  • UL 1973:2022标准深度解析
  • eBPF及相关工具和技术介绍
  • p40上编译vllm0.8.6
  • Seata源码—4.全局事务拦截与开启事务处理二
  • Cacti 未经身份验证SQL注入漏洞
  • ECMAScript标准:JavaScript的核心
  • 基于VITA57.4标准的4路2G/2.6G/3G 14位AD采集子卡
  • QBasic 一款古老的编程语言在现代学习中的价值(附程序)
  • 前端JSON序列化中的隐形杀手:精度丢失全解析与实战解决方案
  • 5.15离散化
  • vue2中父组件监听子组件的生命周期触发函数
  • muduo库Poller模块详解
  • linux使用pyenv安装python环境
  • windows服务器下自启动后台运行python脚本
  • 从微积分到集合论(1630-1910)(历史简介)——第1章——积分技巧(1630-1660)(Kirsti Møller Pedersen)
  • 一款强大的压测带宽工具-iperf3
  • FC7300 WDG MCAL 配置引导
  • 路桥塌陷感知监测预警系统解决方案
  • 服务图层自定义参数customParameters使用(Arcgis API for js)
  • 命令拼接符
  • MySQL锁机制详解与加锁流程全解析
  • sychronized原理(嚼碎了喂版)
  • 代码随想录算法训练营第三十八天打卡