C# SolidWorks二次开发——判断模型面之间的相邻关系(SolidWorks 2020 + VS 2019)

C# SolidWorks二次开发——判断模型面之间的相邻关系(SolidWorks 2020 + VS 2019)

在SolidWorks二次开发的过程中,我们经常会遇到需要判断模型中两个面是否相邻。但SolidWorks本身并没有可以直接判断两个面是否相邻的函数,这里我们可以利用一个简单的函数来实现这个功能。

1、最近距离函数

这里利用SolidWorks自带的检测两个Object之间最近距离的函数来实现判断相邻的功能。当两个face之间的最近距离为0时,则这两个面相邻。关于该函数具体介绍见帮助文档。
在这里插入图片描述

2、简单示例

这里给出了一个简单的示意函数IsAdjacent()。

传入参数1为IFace2类型的面,传入参数2为另一个IFace2类型的面,返回值为0或1,表示这两个面是否相邻。

public void IsAdjacent(IFace2 face1,IFace2 face2)
{
   
	//创建两个点
    object point1;
    object point2;
    //找到最近距离
    double closestDistance = iSwApp.IActiveDoc2.ClosestDistance(face1, face2, out point1, out point2);
    //如果最近距离小于一定阈值,这是由于SolidWorks本身可能存在一定误差
    if ((int)(closestDistance * 1000000) == 0)
    {
   
    	//相邻
    	return 1;
    }
    else
    {
   
    	//否则,不相邻
    	return 0;
    }
}

3、扩展示例

这里给出一个扩展示例,该示例可以创建模型的面邻接矩阵,并且判断两个面不同相邻关系,外环相邻、内环相邻还是某个面的内环和另一个面的外环相邻。

具体代码实现如下,其中bodyFaces是全局的IFace2类型的List:

public void GenerateAdjacentMatrix()
{
   
    //面的数量
    int faceNumber = bodyFaces.Count;
    //定义邻接矩阵
    double
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值