C# Solidworks二次开发:获取面的单位法向量

今天要讲的是如何获取面的单位法向量如何获取,我的思路是首先在模型的面上写下属性为“法向量”。然后循环遍历这个体找到带属性的这个面,再获取这个面的单位法向量。

下图为定义好属性的面:

下面直接上代码:

SldWorks swApp;

swApp = Utility.ConnectToSolidWorks();

var swModel = (ModelDoc2)swApp.ActiveDoc;

var swAss = (AssemblyDoc)swModel;

var comps = (object[])swAss.GetComponents(false);//获取装配体中的所有组件

for (int j = 0; j <= comps.GetUpperBound(0); j++)

{

Component2 swcomp = (Component2)comps[j];

string parentname = swcomp.Name2;

//Debug.Print(parentname);

swcompDoc = (ModelDoc2)swcomp.GetModelDoc2();

if (swcompDoc.GetType() == 1)//判断是不是零部件文档

{

var swPart = (PartDoc)swcompDoc;

var swModelExt = swModel.Extension;

var swBody = (object[])swPart.GetBodies2((int)swBodyType_e.swAllBodies, true);

foreach (object body in swBody)

{

var swBody2 = (Body2)body;

var swFace = (object[])swBody2.GetFaces();

if (swFace != null)

{

foreach (object face in swFace)

{

var swFace2 = (Face2)face;

var faceName = swcompDoc.GetEntityName(swFace2);

if (faceName.Contains("法向量") == true)

{

double[] verty = (double[])swFace2.Normal;

MessageBox.Show("单位法向量为:"+verty[0]+","+ verty[1] + ","+verty[2], "提示");

}

}

}

}

}

}

代码的运行效果如下所示:

最后根据坐标系确定一下获取的单位法向量是否正确,坐标系如下图所示:

可以看得出来,程序求的的单位法向量和坐标系所显示的一致,所以说明我们获取的正确。

本文到此结束,我们下篇文章见。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵桑さん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值