我正在使用C#在Rhino/Grasshopper内的FEA(有限元分析)过程中工作。我有线(FD)和网格三角面(NFD)作为输入,每个都有它们的节点坐标。我试图获取这些坐标并将它们恢复到列表中以索引每个节点。从坐标节点索引
由于线和网格面可以分享我做了以下努力避免重复信息相同的节点:
public void NodeIndex()
{
List<Point3d> coord = new List<Point3d>();
//Add all nodes
foreach (NFD nfdens in nfd)
{
foreach (Node node in nfdens.nodes)
{
coord.Add(node.point);
}
}
foreach (FD fdens in fd)
{
foreach (Node node in fdens.nodes)
{
coord.Add(node.point);
}
}
//Remove Duplicates
// 0.1 Stands for distance tolerance
Point3d[] coordf = Point3d.CullDuplicates(coord, 0.1);
coord = new List<Point3d>();
foreach (Point3d pt in coordf)
{
coord.Add(pt);
}
//Set indexes
int id = 0;
foreach (Point3d pt in coordf)
{
nodes.Add(new Node(pt, id));
id++;
}
foreach (NFD nfdens in nfd)
{
foreach (Node node in nfdens.nodes)
{
node.SetIndex(nodes);
}
}
foreach (FD fdens in fd)
{
foreach (Node node in fdens.nodes)
{
node.SetIndex(nodes);
}
}
foreach (Pload load in pointload)
{
load.node.SetIndex(nodes);
}
foreach (Supp sup in supports)
{
sup.node.SetIndex(nodes);
}
}
public void SetIndex(List<Node> nodes)
{
foreach (Node node in nodes)
{
double dist = point.DistanceTo(node.point);
if (dist < 0.1)
{
index = node.index;
}
}
}
然而,当我建立的项目,我仍然收到重复的信息。网格面临重复消失,但代码复制行的索引。 (例如,一个9节点问题给我13个节点,有时候是14或15个。查看网格索引,所有东西都在9以下,但是不在9和13之间)。
我该如何解决这个问题?
感谢,
马西奥
你是怎么做到的? –