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 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).
doublepoint [ 3 ]Inputnot used
doubledirection [ 3 ]InputExtrusion axis.
UF_FEATURE_SIGNsignInputThe 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_ttarget_bodyInputTarget body to perform Boolean
uf_list_p_t *featuresOutput 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。

今天要讲的就这么多,我们下篇文章再见。

散会

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34357.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】多源物料融合算法(一):量纲对齐常见方法

目录 一、引言 二、量纲对齐常见方法 2.1 Z-score标准化Sigmoid归一化 2.2 Min-Max 归一化 2.3 Rank Transformation 2.4 Log Transformation 2.5 Robust Scaling 3、总结 一、引言 类似抖音、快手、小红书等产品的信息流推荐业务&#xff0c;主要通过信息流广告、信…

前端高级CSS用法

前端高级CSS用法 在前端开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;不仅是用来控制网页的外观和布局&#xff0c;更是实现复杂交互和动态效果的关键技术之一。随着前端技术的不断发展&#xff0c;CSS的用法也日益丰富和高级。本文将深入探讨前端高级CSS的用法&a…

How to install a package in offline scenario in Ubuntu 24.04

概述 做过信创项目的兄弟们在工作上每天可能面对很多需要解决的问题&#xff0c;不过&#xff0c;有一类问题可能是大家经常遇的&#xff0c;比方说&#xff0c;有时候我们不得不硬着头皮在离线生产环境中安装某些软件包&#xff0c;相信很多兄弟被这种细碎的小事搞得焦头烂额…

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数&#xff1a; 如果⼀个构造函数的第⼀个参数是自身类类型的引用&#xff0c;且任何额外的参数都有默认值&#xff0c;则此构造函数 也叫做拷贝构造函数&#xff0c;也就是说拷贝构造是⼀个特殊的构造函数…

数学建模 第一节

目录​​​​​​ 前言 一 优化模型的类型 二 线性规划1 线性规划2 三 0-1规划 总结 前言 数学建模主要是将问题转化为模型&#xff0c;然后再以编程的形式输出出来 算法都知道&#xff0c;数学建模也需要用到算法&#xff0c;但是不是主要以编程形式展示&#xff0c;而是…

计算机网络——DNS

一、什么是DNS&#xff1f; DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09; 是互联网的核心服务&#xff0c;负责将人类可读的域名&#xff08;如 www.baidu.com&#xff09;转换为机器可识别的 IP地址&#xff08;如 14.119.104.254&#xff09;。它像一…

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…

基于SpringBoot+Vue的毕业论文管理系统+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、指导教师、评阅教师、学生功能模块&#xff1a;用户管理、毕业论文管理、课题信息管理、选题申请管理、课题任务管理、基础数据管理、公告信息管理、评阅教师管理、指导教师管理等技术选型&#xff1a;SpringBoot&#xff0c;Vue等测试…

文件系统 linux ─── 第19课

前面博客讲解的是内存级文件管理,接下来介绍磁盘级文件管理 文件系统分为两部分 内存级文件系统 : OS加载进程 ,进程打开文件, OS为文件创建struct file 和文件描述符表 ,将进程与打开的文件相连, struct file 内还函数有指针表, 屏蔽了底层操作的差异,struct file中还有内核级…

第十次CCF-CSP认证(含C++源码)

第十次CCF-CSP认证 分蛋糕满分题解 学生排队满分题解 Markdown语法题目解读满分代码 结语 分蛋糕 题目链接 满分题解 基本思路&#xff1a;我们需要保证除了最后一个小朋友之外的所有人&#xff0c;分得的蛋糕都大于等于给定的K值&#xff0c;为什么是大于等于&#xff0c;是…

MyBatis框架操作数据库一>xml和动态Sql

目录 配置连接字符串和MyBatis:数据库的连接配置&#xff1a;XML的配置&#xff1a; XML编写Sql:model层&#xff1a;mapper层&#xff1a; 动态Sql:if 标签和trim标签&#xff1a;where标签:Set标签:Foreach标签: Mybatis的开发有两种方式&#xff1a;&#xff1a; 注解和XML&…

编写Dockerfile制作tomcat镜像,生成镜像名为tomcat:v1,并推送到私有仓库。

1.具体要求如下&#xff1a; 基于rockylinux:8基础镜像&#xff1b; 指定作者为openlab&#xff1b; 安装tomcat服务&#xff0c;暴露8080端口&#xff1b; 设置服务自启动。 总结步骤&#xff1a;基于rockylinux:8&#xff0c;安装Java环境&#xff0c;安装Tomcat&a…

医院手术麻醉信息系统是如何为医院提质增效的?

近年来&#xff0c;随着HIS系统、LIS系统、PACS系统、EMR系统等信息系统的出现&#xff0c;医疗信息化已成为医疗领域推广的重点&#xff0c;显著提高了医院业务的运营效率。手术麻醉系统作为医院信息系统的一部分&#xff0c;由两个子部分组成&#xff1a;监测设备数据采集系统…

ios打包需要的证书及步骤

官网&#xff1a;https://developer.apple.com/account 避免他人登录apple账号的方法&#xff1a;就是让他们发测试设备的udid&#xff0c;手动注册到账号下&#xff0c;然后再给他们导p12证书和描述文件 iOS App Development iOS 开发版本签名&#xff08;仅限 iOS App&#x…

C#特性和反射

1。特性概念理解&#xff1f; 特性&#xff08;Attribute&#xff09;是用于在【运行时】传递程序中各种元素&#xff08;比如类、属性、方法、结构、枚举、组件等&#xff09;行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所…

【毕业论文格式】word分页符后的标题段前间距消失

文章目录 【问题描述】 分页符之后的段落开头&#xff0c;明明设置了标题有段前段后间距&#xff0c;但是没有显示间距&#xff1a; 【解决办法】 选中标题&#xff0c;选择边框 3. 选择段前间距&#xff0c;1~31磅的一个数 结果

操作系统-八股

进程基础&#xff1a; 进程定义&#xff1a;运行中的程序&#xff0c;有独立的内存空间和地址&#xff0c;是系统进行资源调度和分配的基本单位。 并发&#xff0c;并行 并发就是单核上面轮询&#xff0c;并行就是同时执行&#xff08;多核&#xff09;&#xff1b; 进程上下…

骑士74CMS_v3.34.0SE版uniapp全开源小程序怎么编译admin和member流程一篇文章说清楚

有粉丝一直问我骑士系统怎么编译后台和小程序目前骑士人才系统74CMS分标准版&#xff0c;创业板&#xff0c;专业版&#xff0c;其除功能不同外其配置方法完全一致有喜欢系统的也可以私信我或者找我获取 一.安装打包环境[Nodejs]这个就不用我说了吧&#xff0c;用不小于V20的版…

c语言zixue

该文主要是记录我学习中遇到的一些重点、易出问题的内容 教材p16.17 先从一个简单的例子开始吧 #include <stdio.h> //编译预处理命令 int main() //程序的主函数 {printf("To C"); //输出语句return 0; //返回语句 } #include <stdio.h>是编译预…

ollama API 本地调用

ollama API 本地调用 前提条件&#xff0c;ollama 已经启动了模型&#xff0c;查看 ollama 中的 model 名称 ollama list使用 openai 调用 from openai import OpenAI import openaiopenai.api_key ollama openai.base_url http://localhost:11434/v1/def get_completion(pro…