C# Solidworks二次开发:模型中实体Entity相关操作API详解

大家好,今天要讲的一些API是关于实体的相关API。

在开发的过程,很多地方会涉及到实体的相关操作,比如通过实体选中节点。下面就直接开始介绍API:

(1)第一个API为Select4,这个API的含义为选中一个实体,下面是API的官方解释:

输入参数有两个,第一个为ISelectData,第二个为布尔值。

返回值只有一个,成功选中会返回true,失败会返回false。

下面是官方使用的例子:

This example shows how to get data for an offset surface.

//----------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document that contains a component that
//    has a surface offset feature.
// 2. Select the component's surface offset feature.
// 3. Open the Immediate window.
//
// Postconditions: Inspect the Immediate window.
//----------------------------------------------------------------------


using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
namespace AnalyzeOffsetSurface_CSharp.csproj
{
    partial class SolidWorksMacro
    {

        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            SelectionMgr swSelMgr = default(SelectionMgr);
            SelectData swSelData = default(SelectData);
            SurfaceOffsetFeatureData swOffset = default(SurfaceOffsetFeatureData);
            Feature swFeat = default(Feature);
            Entity swEnt = default(Entity);
            object[] vFace = null;
            int i = 0;
            bool bRet = false;
            Component2 comp = default(Component2);
            Component2 swCompFace = default(Component2);

            swModel = (ModelDoc2)swApp.ActiveDoc;
            swSelMgr = (SelectionMgr)swModel.SelectionManager;
            swSelData = (SelectData)swSelMgr.CreateSelectData();
            swFeat = (Feature)swSelMgr.GetSelectedObject6(1, -1);
            swOffset = (SurfaceOffsetFeatureData)swFeat.GetDefinition();
            comp = (Component2)swSelMgr.GetSelectedObjectsComponent3(1, -1);

            Debug.Print("File = " + swModel.GetPathName());
            Debug.Print("CompFeature = " + comp.Name2);
            Debug.Print("  " + swFeat.Name);
            Debug.Print("    Distance       = " + swOffset.Distance * 1000.0 + " mm");
            Debug.Print("    Flip           = " + swOffset.Flip);
            Debug.Print("    FacesCount     = " + swOffset.GetEntitiesCount());

            bRet = swOffset.AccessSelections(swModel, comp);

            swModel.ClearSelection2(true);

            vFace = (object[])swOffset.Entities;

            for (i = 0; i <= vFace.GetUpperBound(0); i++)
            {
                swEnt = (Entity)vFace[i];
 

                                Debug.Print(" Entity selected = " + swEnt.Select4(true, null));


                swCompFace = (Component2)swEnt.GetComponent();
                Debug.Print("    Component face = " + swCompFace.Name2);

            }

            swOffset.ReleaseSelectionAccess();

        }

        public SldWorks swApp;

    }
}

(2)第二个为GetType,这个API的含义为获取实体的类型,下面是API的具体解释:

方法没有输入值,返回值为这个实体的类型swSelectType_e。

下面是官方的例子:

This example shows how to get a component from an assembly feature.

//-----------------------------------------------------------------------------
// Preconditions:
// 1. Open an assembly document with at least one component.
// 2. Select a feature in a component in the FeatureManager design tree.
//
// Postconditions: Inspect the Immediate window.
//----------------------------------------------------------------------------
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using SolidWorks.Interop.sldworks;
using SolidWorks.Interop.swconst;
using System.Runtime.InteropServices;
namespace GetComponentFromFeature_CSharp.csproj
{
    partial class SolidWorksMacro
    {

        public void Main()
        {
            ModelDoc2 swModel = default(ModelDoc2);
            Feature swFeature = default(Feature);
            Entity swEntity = default(Entity);
            bool bValue = false;
            Component2 swComponent = default(Component2);

            // Get active document
            swModel = (ModelDoc2)swApp.ActiveDoc;

            // Check the document is an assembly
            if ((swModel.GetType() != (int)swDocumentTypes_e.swDocASSEMBLY))
            {
                return;
            }

            // Get the feature
            swFeature = (Feature)((SelectionMgr)(swModel.SelectionManager)).GetSelectedObject6(1, -1);

            // Cast the feature to an entity
            swEntity = (Entity)swFeature;

            // Get type through entity interface
            Debug.Print("Entity type as defined in swSelectType_e: " + swEntity.GetType());
            Debug.Assert(swEntity.GetType() == (int)swSelectType_e.swSelBODYFEATURES);

            // Get type through feature interface
            // Feature inherits from Entity, so will actually call Entity::GetType
            Debug.Print("Entity type: " + swFeature.GetType());

            // Get the component for the entity
            swComponent = (Component2)swEntity.GetComponent();

            // Print component details
            Debug.Print(swComponent.Name2);
            Debug.Print("  " + swComponent.GetPathName());

            // Clear the selection lists
            swModel.ClearSelection2(true);

            // Select the feature through the Entity interface
            bValue = swEntity.Select4(false, null);

            // Print the type of the selected object
            Debug.Print("Selected object type as defined in swSelectType_e: " + ((SelectionMgr)(swModel.SelectionManager)).GetSelectedObjectType3(1, -1));
            Debug.Assert(((SelectionMgr)(swModel.SelectionManager)).GetSelectedObjectType3(1, -1) == (int)swSelectType_e.swSelBODYFEATURES);

            // Clear the selection lists
            swModel.ClearSelection2(true);

            // Select the feature through the Feature interface
            bValue = swFeature.Select2(false, 0);

            // Print the type of the selected object
            Debug.Print("Selected object type as defined in swSelectType_e: " + ((SelectionMgr)(swModel.SelectionManager)).GetSelectedObjectType3(1, -1));
            Debug.Assert(((SelectionMgr)(swModel.SelectionManager)).GetSelectedObjectType3(1, -1) == (int)swSelectType_e.swSelBODYFEATURES);

        }

        public SldWorks swApp;

    }
}

(3)第三个为FindAttribute,这个API的含义为查找实体上的属性,下面是API的具体解释:

参数的输入值有两个,第一个为要查找的属性,第二个为此实体上的类型实例。

今天要介绍的就是上面这三种API,本篇文章到此结束,我们下篇文章再见。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编译器领域一些特别好的文章

xz​​​​​​​s​​​​​​​cv_note/cv算法工程师成长路线.md at master HarleysZhang/cv_note GitHub记录cv算法工程师的成长之路&#xff0c;分享计算机视觉和模型压缩部署技术栈笔记。https://harleyszhang.github.io/cv_note/ - cv_note/cv算法工程师成长路线.md at…

Llama2模型本地部署(Mac M1 16G)

环境准备 环境&#xff1a;Mac M1 16G、Conda Conda创建环境配置 使用Anaconda-Navigator创建python 3.8环境 切换到新建的conda环境&#xff1a; conda activate llama38 llama.cpp 找一个目录&#xff0c;下载llama.cpp git clone https://github.com/ggerganov/llama.…

【汇编】计算机系统构成

计算机系统构成 计算机系统包括硬件和软件两部分 硬件 典型的计算机结构包括 中央处理器(CPU)、存储器和输入输出(I/O)子系统 三个主要组成部分&#xff0c;用系统总线把它们连接在一起 计算机硬件组成与各部分之间的联系 软件 计算机软件可以分为系统软件和用户软件两大类 …

​​​​网络编程学习探索系列之——广播原理剖析

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之广播原理剖析&#xff0c;在这篇文章中&#xff0c; 你将会学习到如何在网络编程中利用广播来与局域网内加入某个特定广播组的主机&#xff01; 希望这篇文章能对你有所帮助&#xff0c;大家要是觉得我写…

集运公司代购系统|轻松为国外客户代购转运中国电商平台货物

做集运的公司会有大量的在国外的客户&#xff0c;客户会有需求购买中国电商平台&#xff0c;如淘宝、1688、京东等的货物。使用代购系统可以实现让客户在系统中搜索查找国内电商平台的货源&#xff0c;自动下单付款&#xff0c;支持多语言多货币支付。 查看演示网站 前台/会员中…

常用组合逻辑电路模块(3):数据选择器

数据选择器概述 数据选择&#xff1a;指经过选择&#xff0c;将多路数据中的某一路数据传到公共数据线上。(相当于多个输入的单刀多掷开关) 数据选择器&#xff1a;能实现数据选择功能的逻辑电路。也称多路选择器或多路开关。如下图为4选1数据选择器&#xff1a; 对于4选1数据…

电大搜题:为您解锁学习的新大门

近年来&#xff0c;随着社会的不断进步和教育的普及化&#xff0c;广大民众对学习的需求也越来越迫切。在这个信息爆炸的时代&#xff0c;大家对于获取准确、可靠学习资料的渴望日益增长。正是基于这样的背景&#xff0c;黑龙江开放大学&#xff08;简称黑开大&#xff09;与广…

Linux学习_进程等待和替换

1.进程等待 概述&#xff1a;父进程通过进程等待的方式&#xff0c;回收子进程资源&#xff0c;获取子进程退出信息 1.1等待方法 wait&#xff1a; #include<sys/types.h> #include<sys/wait.h> pid_t wait(int*status); 返回值&#xff1a; 成功返回被等待进程…

【MATLAB基础】频谱分析

01.引言 频率是单位时间内某事件重复发生的次数,用ω表示,单位是赫兹(Hz)。设m时间内某事件重复发生n次,则此事件发生的频率ω为一。又因为周期定义为重复事件发生的最小时间间隔,故频率也可以表示为周期的倒数:ωn/m,T表示周期。频率是一个很重要的概念,在工程数学中常用于分…

BST:一款功能强大的二进制字符串代码格式转换工具

关于BST BST是一款功能强大的二进制字符串代码格式转换工具&#xff0c;该工具可以将二进制字符串转换为能够兼容不同语言源代码的各种格式&#xff0c;以满足各种安全开发领域中的渗透测试或漏洞利用开发场景。 功能介绍 1、将二进制文件转换并转储为二进制字符串格式的标准输…

leaflet 显示地图加载的瓦片的行列号

背景&#xff1a; 在开发过程中&#xff0c;对接wmts服务的时候&#xff0c;调试参数过程中有时候需要直观看到当前地图加载的瓦片的行列号。 实现原理&#xff1a; 利用Leaflet的L.GridLayer图层&#xff0c;加载一个网格图层&#xff0c;重写其createTile方法&#xff0c;…

开源AI图像识别:支持文件批量识别快速对接数据库存储

随着数字化转型的不断深入&#xff0c;图像识别技术在各行各业中的应用越来越广泛。文件封识别作为图像识别技术的一个分支&#xff0c;能够有效地提高文件处理的自动化程度和准确性。本文将探讨文件封识别技术的原理、应用场景以及如何将识别后的内容批量对应数据库字段进行存…

Blast生态借贷协议Pac Finance陷“清算”风波,兄弟项目ParaSpace曾上演内斗

Blast生态协议又出事了。4月11日晚间&#xff0c;有用户发现借贷协议Pac Finance上出现了大量ezETH清算&#xff0c;涉及金额达2400 万美元。官方回应称&#xff0c;系一位智能合约工程师的操作导致Pac Finance发行清算阈值在没有事先通知团队的情况下被意外更改。 目前社区内…

dPET论文笔记

PBPK论文笔记 题目&#xff1a;Self-supervised Learning for Physiologically-Based Pharmacokinetic Modeling in Dynamic PET 摘要 动态正电子发射断层扫描成像 &#xff08;dPET&#xff09; 提供示踪剂的时间分辨图像。从 dPET 中提取的时间活动曲线 &#xff08;TAC&a…

办公提效-截图录屏

使用感受:滚动截图,目前用着pixpin最方便,简单可控制,有点类似qq截图。faststone容易在长截图出错,显示重复,而share X截不了大模型聊天记录。 我的办公工作流-截图录屏:pixpin截图且识别、录屏gif格式,faststone录屏成mp4格式,截图提取文字技术为OCR文字识别,短截图…

C语言基础:回顾判断素数

什么是素数&#xff08;也称质数&#xff09;&#xff1f;和合数相对。 其特点是只能被 1 和它本身 整除&#xff0c;无法被其他整数整除。或者公因数只有它自己和1两个数的数 怎么求解素数呢&#xff1f;对于求解质数的方法很多&#xff0c;但是有一种专门求解素数的功能&am…

Harmony鸿蒙南向外设驱动开发-Camera

功能简介 OpenHarmony相机驱动框架模型对上实现相机HDI&#xff08;Hardware Device Interface&#xff09;接口&#xff0c;对下实现相机Pipeline模型&#xff0c;管理相机各个硬件设备。 该驱动框架模型内部分为三层&#xff0c;依次为HDI实现层、框架层和设备适配层。各层基…

python--对象序列化和反序列化以及with语句块的使用

1.对象序列化和反序列化 对象序列化&#xff1a;将对象这种抽象概念转化为可以传输存储的物理概念 对象反序列化&#xff1a;将磁盘或者网络间的物理数据转化为对应的编程语言的对象 对象持久化&#xff1a;将对象永久的存储下来 对相反持久化&#xff1a; 将磁盘上永久存储…

Spring启动流程和循环依赖

文章目录 概览对Spring的理解Spring启动流程Spring循环依赖与三级缓存 概览 Spring是一个轻量级的Java开源框架&#xff0c;为了解决企业应用开发的复杂性而创建的。Spring的核心是控制反转&#xff08;IOC&#xff09;和面向切面&#xff08;AOP&#xff09;。 简单来说&…

性能优化 - 你知道CSS有哪些优化方案吗

难度级别:中高级及以上 提问概率:70% CSS是前端开发工作中必不可少的技能之一,同时也是网页开发中必不可少的重要元素之一。但很多人所开发的项目本身对性能要求并不高,再加上项目周期紧张,久而久之,也就容易养成不考虑细节的习惯,觉得C…