SolidWorks二次开发系列入门100篇之98、99-分割、保存零件中的实体

news2024/11/29 2:36:26

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

从这四张图,看了来这个保存实体和分割图标是一样的,可能只是选项不一样,所以这里一起写了,不浪费时间。

经过了几个小时的研究,没搞定。大哭
CreateSaveBodyFeature这个没有api例子,2021上有例子,但只有VBA
https://help.solidworks.com/2021/english/api/sldworksapi/Create_Save_Bodies_Feature_and_Create_Assembly_Example_VB.htm
,但C#里面怎么就是失败,2022上只能建出来空装配体,不知道是api有bug还是啥情况,当然也可能 是我水平不行呀。

所以临时只能间接调用宏来简单实现这个功能了。结果如下图了: 至于宏的参数应该怎么指定,后面再写方案。
当前之前我开发实例中已经用别的办法实现过。其实就是把每个实体单独输出成零件,然后再组装成一个装配。
总结下来,有时候solidworks提供了功能,但api不一定好调用。只能靠自己想办法去处理了
在这里插入图片描述

在这里插入图片描述

          //解决方案: 
            // 在2021中找到一个示例,18版本中测试ok.所以可以采用调用宏

            //BodiesToAssembly.swp  保存到D\temp下面

            SldWorks swApp = Utility.ConnectToSolidWorks();
            var swModel = (ModelDoc2)swApp.ActiveDoc;
            var swModelDocExt = swModel.Extension;
            var swSelMgr = (SelectionMgr)swModel.SelectionManager;
            var swFeatMgr = swModel.FeatureManager;

            if (swModel.GetType() != (int)swDocumentTypes_e.swDocPART)
            {
                return;
            }
            int err=0;
            var res= swApp.RunMacro2(RegDllPath("") + @"\BodiesToAssembly.swp", "Macro11", "main", 0, out err);

下面分割的例子拿出来看看,基本上执行正常。

 			SldWorks swApp = Utility.ConnectToSolidWorks();
            var swModel = (ModelDoc2)swApp.ActiveDoc;
            var swModelDocExt = swModel.Extension;
            var swSelMgr = (SelectionMgr)swModel.SelectionManager;
            var swFeatMgr = swModel.FeatureManager;

            //Select the cutting tool
            var boolstatus = swModelDocExt.SelectByID2("Top Plane", "PLANE", 0, 0, 0, true, 0, null, 0);

            object vBodyNames = null;
            object[] bodiesToMark = new Body2[2];
            string[] bodyNames = new string[2];
            object[] bodyOrigins = new Vertex[2];

            //Get bodies that will result from the split operation
            object[] vResultingBodies = null;
            vResultingBodies = (object[])swFeatMgr.PreSplitBody2();

            swModel.ClearSelection2(true);

            //Set up the arrays for the post-split operation

            //If you do not want to assign body origin, set it to nothing so that the default origin is used
            bodyOrigins[0] = null;
            bodyOrigins[1] = null;

            bodiesToMark[0] = vResultingBodies[0];
            bodiesToMark[1] = vResultingBodies[1];

            //Save the first body to a separate part document
            //Substitute the name of the actual folder where to save the body
            bodyNames[0] = "d:\\temp\\Body1.sldprt";
            //Do not save the second body
            bodyNames[1] = "";

            DispatchWrapper[] preSplitBodies = null;
            preSplitBodies = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray((bodiesToMark));
            vBodyNames = bodyNames;
            DispatchWrapper[] originsToUse = null;
            originsToUse = (DispatchWrapper[])ObjectArrayToDispatchWrapperArray((bodyOrigins));

            //Create the Split feature, consuming all split bodies
            var swFeat = (Feature)swFeatMgr.PostSplitBody2((preSplitBodies), true, (originsToUse), (vBodyNames), "");

            if (((swFeat != null)))
            {
                Debug.Print("Split feature: " + swFeat.Name);
                var swSplitBodyFeat = (SplitBodyFeatureData)swFeat.GetDefinition();
                swSplitBodyFeat.AccessSelections(swModel, null);
                swSplitBodyFeat.GetSplitBodies(out object bodyVar, out object PathVar, out object FlagVar);
                swSplitBodyFeat.ReleaseSelectionAccess();
                Debug.Print("Bodies consumed? " + swSplitBodyFeat.Consume);
                Debug.Print(" ");
            }

这个分割的例子没有什么问题,可以用,我了不解释了。唯一的问题就是还不能指定只分割部分实体。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从小白到大神之路之学习运维第75天-------Harbor企业镜像仓库部署

第四阶段 时 间:2023年8月7日 参加人:全班人员 内 容: Harbor企业镜像仓库部署 目录 一、案例概述 二、什么是 Harbor (一)Harbor 的优势 (二)Harbor 架构构成 (三&…

C++动态规划经典试题解析之打家劫舍系列

1.前言 力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。 学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观…

自然语言处理[信息抽取]:MDERank关键词提取方法及其预训练模型----基于嵌入的无监督 KPE 方法 MDERank

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

一百四十八、Kettle——Linux上安装的kettle8.2连接Hive3.1.2

一、目标 kettle8.2在Linux安装好后,需要与Hive3.1.2数据库建立连接 二、前提 (一)在Linux已经安装好kettle并可以启动kettle (二)版本:kettle8.2.0 Hive3.1.2 Hadoop3.1.3 (三&#…

虹科分享 | 如何通过ntopng流量规则来监控网络流量

让我们假设您有一个网络,其中本地主机生成恒定数量的流量。你如何发现他们是否行为错误?碰巧,一些本地主机行为开始异常,与它们之前相比,有一个异常的流量(发送或接收):您如何发现这些情况并通过警报报告它…

使用langchain与你自己的数据对话(五):聊天机器人

之前我已经完成了使用langchain与你自己的数据对话的前四篇博客,还没有阅读这四篇博客的朋友可以先阅读一下: 使用langchain与你自己的数据对话(一):文档加载与切割使用langchain与你自己的数据对话(二):向量存储与嵌入使用langc…

[Securinets CTF Quals 2023] Admin Service,ret2libc,One is enough

只作了3个pwn,第4个附件没下下来,第5个不会 Admin Service 这是个最简单的题,最后来弄出来。原来只是看过关于maps文件的,一直没什么印象。 题目一开始设置seccomp禁用execv等,看来是用ORW,然后建了个mm…

STM32 4G学习

硬件连接 ATK-IDM750C模块可直接与正点原子 MiniSTM32F103开发板板载的ATK模块接口(ATK-MODULE)进行连接。 功能说明 ATK-IDM750C是正点原子(ALIENTEK)团队开发的一款高性能4G Cat1 DTU产品,支持移动4G、联通4G和…

详细介绍golang中.()类型断言的使用方法

文章目录 一、什么是.()用法?二、.()的基本用法三、.()用法的高级应用3.1 nil类型的转换3.2 将函数作为参数传递 四、.()使用中的注意事项五、总结 Golang是一门非常流行的编程语言,在很多领域都有着广泛的应用。在开发过程中,很多时候我们需…

verxriscv中Fpu中的加法器add源码分析

一 加法器端口 case class AddInput() extends Bundle{val source = Source()val rs1, rs2 = FpuFloat(exponentSize = p.internalExponentSize, mantissaSize = p.internalMantissaSize+addExtraBits)val rd = p.rfAddress()val roundMode = FpuRoundMode()val format = p.wit…

华为harmonyos4.0鸿蒙4.0安装谷歌服务框架Play商店,解决从服务器检索信息时出错

8月4号华为手机发布了全新的harmonyos4.0鸿蒙4.0系统,很多人需要问还是不是支持谷歌服务框架?那么答案是肯定的,它和鸿蒙3是一样的,一样的操作,一样的支持安装谷歌服务框架,安装Google play商店。测试机型&…

【新】通达OA前台反序列化漏洞分析

0x01 前言 注:本文仅以安全研究为目的,分享对该漏洞的挖掘过程,文中涉及的所有漏洞均已报送给国家单位,请勿用做非法用途。 通达OA作为历史上出现漏洞较多的OA,在经过多轮的迭代之后已经很少前台的RCE漏洞了。一般来说…

python+requests+json 接口测试思路示例

实际项目中用python脚本实现接口测试的步骤: 1 发送请求,获取响应 》》2 提取响应里的数据,对数据进行必要的处理 》》3 断言响应数据是否与预期一致 以豆瓣接口为例,做一个简单的接口测试吧。使用到的知识涉及requests库&…

Vue3 第三节 计算属性,监视属性,生命周期

1.computed计算属性 2.watch监视函数 3.watchEffect函数 4.Vue的生命周期函数 一.computed计算属性 计算属性简写和完整写法 <template><h1>一个人的信息</h1>姓&#xff1a;<input type"text" v-model"person.firstName" />…

车载A2B总线AD2428主从模式调试问题汇总

一&#xff0c;简介 在实际A2B总线一主一从模式的调试过程中下载程序出现许多报错提示&#xff0c;本文将遇到的错误进行汇总记录&#xff0c;方便相关开发者进行参考。 二&#xff0c;错误现象 2.1 Cable Terminal Shorted to Ground 主机IIS&#xff08;TDM&#xff09;线…

Mir 2.14 正式发布,Ubuntu 使用的 Linux 显示服务器

Canonical 公司最近发布了 Mir 2.14&#xff0c;这是该项目的最新版本。 Mir 2.14 在 Wayland 方面通过 ext-session-lock-v1 协议增加了对屏幕锁定器 (screen lockers) 的支持&#xff0c;并最终支持 Wayland 拖放。此外还整合了渲染平台的实现&#xff0c;放弃了之前在 Raspb…

常见监控网络链路和网络设备的方法

网络监控主要包括网络链路监控和网络设备监控&#xff0c;通常系统运维人员会比较关注。 一、网络链路监控 网络链路监控主要包含三个部分&#xff0c;网络连通性、网络质量、网络流量。 连通性和质量的监控手段非常简单&#xff0c;就是在链路一侧部署探针&#xff0c;去探…

搭建 elasticsearch8.8.2 伪集群 windows

下载windows 版本 elasticsearch8.8.2 以下链接为es 历史版本下载地址&#xff1a; Past Releases of Elastic Stack Software | Elastic windows 单节点建立方案&#xff1a; 下载安装包 elasticsearch-8.8.2-windows-x86_64.zip https://artifacts.elastic.co/download…

设计模式原来是这样

目录 概述: 什么是模式&#xff01;&#xff01; 为什么学习模式&#xff01;&#xff01; 模式和框架的比较&#xff1a; 设计模式研究的历史 关于pattern的历史 Gang of Four(GoF) 关于”Design”Pattern” 重提&#xff1a;指导模式设计的三个概念 1.重用(reuse)…

Linux:shell脚本:基础使用(2)

test命令 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] (前后至少应有一个空格) 常用的测试操作符 -d&#xff1a;测试是否为目录&#xff08;Directory) -e&#xff1a;测试目录或文件是否存在&#xff08;Exist&#xff09; -f&#xff1a;测试是否…