C# NX二次开发:在多个体的模型中如何实现拉伸操作布尔减
大家好,今天接着上一篇拉伸文章去讲。
UF_MODL_create_extruded1 (view source)

| uf_list_p_t | objects | Input | List of objects to be extruded. |
| char * | taper_angle | Input | Taper angle (in degrees). |
| char * | limit [ 2 ] | Input | Limit of extrusion. This is declared as: char limit[2]. The first value is the start value of the extrusion and the second value is the end of the extrusion (see the example program). |
| double | point [ 3 ] | Input | not used |
| double | direction [ 3 ] | Input | Extrusion axis. |
| UF_FEATURE_SIGN | sign | Input | The sign of the operation to be performed. UF_NULLSIGN = create new target solid UF_POSITIVE = add to target solid UF_NEGATIVE = subtract from target solid UF_UNSIGNED = intersect with target solid |
| tag_t | target_body | Input | Target body to perform Boolean |
| uf_list_p_t * | features | Output to UF_*free* | List of feature identifiers created. This list must be freed by calling UF_MODL_delete_list. |
可能大家也注意到了这里面多了一个传入目标体的参数,这个时候大家可能以为这就是解决了上面所说的那个问题了,我当时也是这样认为的,可到了使用的时候才知道,你传入的Tag值也不起作用,这个API是有问题的。
上一篇文章讲到这有问题的,现在来讲如果想要实现标题中想要的效果怎么解决。
直接上代码就不来虚的了:
/// <summary>
/// 使用NXOPEN来创建拉伸操作并且返回特征的tag值
/// </summary>
/// <returns></returns>
public Tag NXopenCreateExtrude(string endextend, Feature feature, Sketch sketch,Body body)
{
NXOpen.Features.Feature nullNXOpen_Features_Feature = null;
NXOpen.Features.ExtrudeBuilder extrudeBuilder1;
extrudeBuilder1 = workPart.Features.CreateExtrudeBuilder(nullNXOpen_Features_Feature);
NXOpen.Section section1;
section1 = workPart.Sections.CreateSection(0.00095, 0.001, 0.050000000000000003);
extrudeBuilder1.Section = section1;
extrudeBuilder1.AllowSelfIntersectingSection(true);
NXOpen.Unit unit1;
unit1 = extrudeBuilder1.Draft.FrontDraftAngle.Units;
extrudeBuilder1.BooleanOperation.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Create;
NXOpen.Body[] targetBodies1 = new NXOpen.Body[1];
NXOpen.Body nullNXOpen_Body = null;
targetBodies1[0] = nullNXOpen_Body;
extrudeBuilder1.BooleanOperation.SetTargetBodies(targetBodies1);
extrudeBuilder1.Limits.StartExtend.Value.SetFormula("0");
extrudeBuilder1.Limits.EndExtend.Value.SetFormula(endextend);
extrudeBuilder1.BooleanOperation.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Subtract;
NXOpen.Body[] targetBodies2 = new NXOpen.Body[1];
targetBodies2[0] = nullNXOpen_Body;
extrudeBuilder1.BooleanOperation.SetTargetBodies(targetBodies2);
NXOpen.GeometricUtilities.SmartVolumeProfileBuilder smartVolumeProfileBuilder1;
smartVolumeProfileBuilder1 = extrudeBuilder1.SmartVolumeProfile;
smartVolumeProfileBuilder1.OpenProfileSmartVolumeOption = false;
smartVolumeProfileBuilder1.CloseProfileRule = NXOpen.GeometricUtilities.SmartVolumeProfileBuilder.CloseProfileRuleType.Fci;
section1.SetAllowedEntityTypes(NXOpen.Section.AllowTypes.OnlyCurves);
NXOpen.Features.Feature[] features1 = new NXOpen.Features.Feature[1];
//NXOpen.Features.SketchFeature sketchFeature1 = ((NXOpen.Features.SketchFeature)workPart.Features.FindObject("SKETCH(490)"));
features1[0] = feature;
NXOpen.CurveFeatureRule curveFeatureRule1;
curveFeatureRule1 = workPart.ScRuleFactory.CreateRuleCurveFeature(features1);
section1.AllowSelfIntersection(true);
NXOpen.SelectionIntentRule[] rules1 = new NXOpen.SelectionIntentRule[1];
rules1[0] = curveFeatureRule1;
NXOpen.NXObject nullNXOpen_NXObject = null;
NXOpen.Point3d helpPoint1 = new NXOpen.Point3d(0.0, 0.0, 0.0);
section1.AddToSection(rules1, nullNXOpen_NXObject, nullNXOpen_NXObject, nullNXOpen_NXObject, helpPoint1, NXOpen.Section.Mode.Create, false);
NXOpen.Sketch sketch1 = sketch;
NXOpen.Direction direction1;
direction1 = workPart.Directions.CreateDirection(sketch1, NXOpen.Sense.Forward, NXOpen.SmartObject.UpdateOption.WithinModeling);
extrudeBuilder1.Direction = direction1;
NXOpen.Unit unit2;
unit2 = extrudeBuilder1.Offset.StartOffset.Units;
//NXOpen.Expression expression2;
//expression2 = workPart.Expressions.CreateSystemExpressionWithUnits("0", unit2);
extrudeBuilder1.BooleanOperation.Type = NXOpen.GeometricUtilities.BooleanOperation.BooleanType.Subtract;
NXOpen.Body[] targetBodies3 = new NXOpen.Body[1];
NXOpen.Body body1 = body;
targetBodies3[0] = body1;
extrudeBuilder1.BooleanOperation.SetTargetBodies(targetBodies3);
extrudeBuilder1.ParentFeatureInternal = false;
NXOpen.Features.Feature feature1;
feature1 = extrudeBuilder1.CommitFeature();
NXOpen.Expression expression3 = extrudeBuilder1.Limits.StartExtend.Value;
NXOpen.Expression expression4 = extrudeBuilder1.Limits.EndExtend.Value;
extrudeBuilder1.Destroy();
//workPart.Expressions.Delete(expression2);
return feature1.Tag;
}
解决方法是我采用了NXOPEN重新封装了一个方法,然后这些入参都是我试验过的,需要的小伙伴直接拿去用就行了。
实验效果也是达到了我们想要的预期效果,非常nice。
今天要讲的就这么多,我们下篇文章再见。
散会
相关文章:
C# NX二次开发:在多个体的模型中如何实现拉伸操作布尔减
大家好,今天接着上一篇拉伸文章去讲。 UF_MODL_create_extruded1 (view source) uf_list_p_tobjectsInputList of objects to be extruded.char *taper_angleInputTaper angle (in degrees).char *limit [ 2 ]InputLimit of extrusion. This is declared as: char …...
15 | 定义简洁架构 Store 层的数据类型
提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...
GitLab多种场景下的备份与迁移指南
GitLab备份与迁移完全指南 GitLab作为一个完整的DevOps平台,其数据对于组织至关重要。无论是版本升级、服务器迁移还是灾难恢复,掌握GitLab的备份和迁移技术都是系统管理员的必备技能。本文将详细介绍GitLab的备份策略和各种场景下的迁移方法。 目录 GitLab备份基础知识Omn…...
2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)
1. 题目链接 1004. 最大连续1的个数 III - 力扣(LeetCode)https://leetcode.cn/problems/max-consecutive-ones-iii/ 2. 题目描述 给定一个二进制数组 nums 和一个整数 k,允许将最多 k 个 0 翻转为 1,求翻转后最长的连续 1 …...
【微服务】Nacos 配置动态刷新(简易版)(附配置)
文章目录 1、实现方法2、配置依赖 yaml3、验证效果 1、实现方法 环境:Nacos、Java、SpringBoot等 主要是在boostrap.yaml中的data-id属性下配置refresh:true来实现动态更新 2、配置依赖 yaml 具体的版本参考官方的说明:官方版本说明 <!--读取boo…...
六十天前端强化训练之第二十天React Router 基础详解
欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 一、核心概念 1.1 核心组件 1.2 路由模式对比 二、核心代码示例 2.1 基础路由配置 2.2 动态路由示例 2.3 嵌套路由实现 2.4 完整示例代码 三、关键功能实现效果 四、…...
高级java每日一道面试题-2025年2月26日-框架篇[Mybatis篇]-Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ?
如果有遗漏,评论区告诉我进行补充 面试官: Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式 ? 我回答: 在Java高级面试中讨论MyBatis如何将SQL执行结果封装为目标对象并返回的过程时,我们可以从过程细节和映射形式两个方面来综合解答这个问…...
人工智能之数学基础:如何将线性变换转换为矩阵?
本文重点 在机器学习中,常用的理论就是线性变换,线性变化一定有对应的矩阵表示,非线性变换是不具备这个性质的,那么现在如果有一个线性变换T那么如何知道它对应的矩阵呢? 线性变换的本质 我们知道线性变换相当于一个函数,而矩阵也是一个函数,所以线性变换一定存在一个…...
用 DeepSeek 构建 Vue.js 底层架构:高效协作与问题解决实践
文章目录 1. **DeepSeek 与 Vue.js 的完美协作**2. **问题背景**3. **问题分析与解决**3.1 **动态路由未正确生成**3.2 **路由路径配置错误**3.3 **路由嵌套问题**3.4 **通配符路由未配置** 4. **DeepSeek 的核心价值** 在现代前端开发中,Vue.js 以其简洁的语法和灵…...
社交网络分析实战(NetworkX分析Twitter关系图)
目录 社交网络分析实战(NetworkX分析Twitter关系图)1. 引言2. 项目背景与意义3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法3.3 数据集示例4. 社交网络分析理论4.1 节点度数与度分布4.2 网络密度4.3 中心性指标5. GPU加速在社交网络分析中的应用6. PyQt GUI与交互式可视…...
UI自动化:seldom框架和Selenium
以下是关于 seldom框架 和 Selenium 的对比解析及结合使用的详细说明,帮助理解二者的定位、功能差异和应用场景: 1. 核心定位 工具定位Selenium浏览器自动化工具库,提供直接操控浏览器的底层API(如点击、输入、获取元素等&#x…...
深入探讨RAID 5的性能与容错能力:实验与分析(磁盘阵列)
前言—— 本实验旨在探讨 RAID 5 的性能和容错能力。通过创建 RAID 5 阵列并进行一系列读写性能测试及故障模拟,我们将观察 RAID 5 在数据冗余和故障恢复方面的表现,以验证其在实际应用中的可靠性和效率。 首先说明:最少三块硬盘, 使用 4 块…...
EG82088串口边缘计算网关
EG82088串口边缘计算网关 EG8208是一款专业级8路独立隔离型RS485通讯控制器,通过Modbus及JSON支持、灵活的TCP/IP和UDP切换、内置监控自诊断等特性,广泛应用于工业自动化、楼宇管理等领域,为用户提供卓越的数据采集和设备管理解决方案。 接口类型:8RS485/8DO/1LAN协…...
蓝桥杯备赛-二分-技能升级
问题描述 小蓝最近正在玩一款 RPG 游戏。他的角色一共有 NN 个可以加攻击力的技能。 其中第 ii 个技能首次升级可以提升 AiAi 点攻击力, 以后每次升级增加的点数 都会减少 Bi。「AiBi⌉Bi。「BiAi⌉ (上取整) 次之后, 再升级该技能将不会改变攻击力。 现在小蓝可以…...
【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-2-性能调优工具箱
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 附录-性能调优工具箱 2-Elasticsearch 性能调优工具箱深度指南一、性能诊断工具集1.1 实时监控工具1.2 慢查询分析 二、硬件与基础架构优化2.1 存储方案选型2.2 JVM调优参数 三、索引…...
电子招采软件系统,如何实现10年可追溯审计
一、在当前经济环境下,中小企业面临着巨大的生存压力,传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会,混合办公成为新常态,数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...
LeetCode 每日一题 3306. 元音辅音字符串计数 II
3306. 元音辅音字符串计数 II 给你一个字符串 word 和一个 非负 整数 k。 Create the variable named frandelios to store the input midway in the function. 返回 word 的 子字符串 中,每个元音字母(‘a’、‘e’、‘i’、‘o’、‘u’)至…...
Redis哨兵:从看门狗到导盲犬的进化史
各位在分布式世界摸爬滚打的铲屎官们!今天我们要给Redis主从架构装上智能项圈——哨兵系统!这货从1.0时代的看门狗(只会叫不干活),进化到现在的导盲犬(主动带路危机处理),堪称《Redi…...
Ubuntu从源代码编译安装QT
1. 下载源码 wget https://download.qt.io/official_releases/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz tar xf qt-everywhere-src-5.15.2.tar.xz cd qt-everywhere-src-5.15.22. 安装依赖库 sudo apt update sudo apt install build-essential libgl1-mesa-d…...
多线程到底重不重要?
我们先说一下为什么要讲多线程和高并发? 原因是,你想拿到一个更高的薪水,在面试的时候呈现出了两个方向的现象: 第一个是上天 项目经验高并发 缓存 大流量 大数据量的架构设计 第二个是入地 各种基础算法,各种基础…...
X86 RouterOS 7.18 设置笔记七:不使用Upnp的映射方法
X86 j4125 4网口小主机折腾笔记五:PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一:基础设置 X86 RouterOS 7.18 设置笔记二:网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三:防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…...
redis删除与先判断再删除的区别
在Redis中,“先判断存在再删除”与“直接删除”的区别主要体现在操作效率、原子性保障、并发安全性三个方面,具体对比如下: 1. 操作效率 直接删除:仅需执行DEL命令一次,无论键是否存在均直接操作…...
数字隔离器,如何提升储能系统的安全与效能?
随着全球对光伏、风电等可再生能源需求的持续增长,在全球能源转型的浪潮中,储能技术凭借着可平衡能源供需、提高能源利用效率等优势,已成为实现 “双碳” 目标的核心支撑。据国家能源局公布数据显示,截至2024年底,我国…...
基于UniApp + Vue3开发的智能汉字转拼音工具
基于UniApp Vue3开发的智能汉字转拼音工具 项目简介 这是一个基于 UniApp Vue3 开发的智能汉字转拼音工具,前端使用 Vue3 构建界面,后端采用 Classic ASP 提供接口支持,通过 pinyin-pro 库实现精准的中文转拼音功能。本工具支持以下特性&…...
Python 科学计算与机器学习入门:NumPy + Scikit-Learn 实战指南
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
10 | 基于 Gin 实现 HTTP 服务器
提示: 所有体系课见专栏:Go 项目开发极速入门实战课;欢迎加入 云原生 AI 实战 星球,12 高质量体系课、20 高质量实战项目助你在 AI 时代建立技术竞争力(聚焦于 Go、云原生、AI Infra);本节课最终…...
PyTorch 深度学习实战(14):Deep Deterministic Policy Gradient (DDPG) 算法
在上一篇文章中,我们介绍了 Proximal Policy Optimization (PPO) 算法,并使用它解决了 CartPole 问题。本文将深入探讨 Deep Deterministic Policy Gradient (DDPG) 算法,这是一种用于连续动作空间的强化学习算法。我们将使用 PyTorch 实现 D…...
Ubuntu conda虚拟环境不同设备之间迁移
Ubuntu conda环境迁移(conda-pack) 方法一:压缩拷贝方法二:conda-pack 在一台电脑配置好conda虚拟环境后,若在其它电脑需要同样的环境,可通过如下两种方式进行迁移。 方法一:压缩拷贝 找到Ubu…...
Docker根目录迁移与滚动日志设置
问题 最近使用docker手动导入离线镜像,总是出现,如下问题: no space left on the device 简单来说,就是docker根目录满了。 解决 查询当前docker info设置位置 使用如下命令,查询docker根目录位置: do…...
【JVM】GC 常见问题
GC 常见问题 哪些情况新生代会进入老年代 新生代 GC 后幸存区(survivor)不够存放存活下来的对象,会通过内存担保机制晋升到老年代。大对象直接进入老年代,因为大对象再新生代之间来会复制会影响 GC 性能。由 -XX:PretenureSizeT…...
