今天讲的是通过UFUN函数来获取边,然后再获取边的类型,再通过判断边的类型是否是圆边以及是否是封闭的圆边再获取圆边的直径。
我们已知条件是一个面face,其获取边的代码如下:
Tag edgetag = Tag.Null;//存放链表中边的tag值
theUfSession.Modl.AskFaceEdges(bb, out edgelist);//获取选择面上所有边的链表
其中输入的bb为面face的Tag值,其返回edgelist是一个链表。然后接下来我们需要对这个链表进行处理成为我们可以使用得Tag值。其代码如下:
theUfSession.Modl.AskListCount(edgelist, out count1);//获取链表中边的个数
for (int j = 0; j < count1; j++)
{
theUfSession.Modl.AskListItem(edgelist, j, out edgetag);//获取每条边的tag值
edgecoll.Add(edgetag);//每条边的tag值放入动态数组中
}
处理的边的Tag值都放在了一个list动态数组中。然后在动态数组中进行遍历,找出对应圆边的直径。代码如下:
for (int i = 0; i < edgecoll.Count; i++)
{
int edgetype1;
theUfSession.Modl.AskEdgeType(edgecoll[i], out edgetype1);
if (edgetype1 == 3002)//判断是圆形边
{
double ll = 0;//代表这个封闭圆直径的变量
bool boolval = judgecircle(edgecoll[i]);//判断是不是封闭的圆形边
if (boolval)
{
IntPtr uFEval2;
theUfSession.Eval.Initialize(edgecoll[i], out uFEval2);
UFEval.Arc arc1;
theUfSession.Eval.AskArc(uFEval2, out arc1);
ll = arc1.radius;//得到封闭圆的直径
}
}
}
其中判断是不是封闭圆形边的代码并不是我原创,所以我没有放上来,有需要的可以私信我。我把代码发给有需要的伙伴。