Я работаю в процедуре FEA (конечный элементный анализ) внутри Rhino/Grasshopper с использованием C#. У меня есть строки (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]).
Как я могу это решить?
Спасибо,
Марсио
Как вы это сделали? –