Je travaille sur une procédure FEA (analyse par éléments finis) dans Rhino/Grasshopper en utilisant C#. J'ai des lignes (FD) et des faces triangulaires (NFD) en entrée, chacune avec leurs coordonnées de nœuds. J'essaie d'obtenir ces coordonnées et de les reprendre dans une liste pour indexer chaque nœud.Indexation des nœuds à partir des coordonnées
Comme les lignes de maillage et visages peuvent partager les mêmes nœuds que j'ai fait ce qui suit en essayant d'éviter les informations en double:
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;
}
}
}
Cependant, quand je construis le projet que je reçois encore des informations en double. Les doublons de faces maillées ont disparu, mais le code duplique les index des lignes. (Par exemple, un problème de 9 nœuds me donne 13 nœuds, parfois 14 ou 15. En regardant les index des mailles, tout est sous 9, mais dans les lignes pas [sont entre 9 et 13]).
Comment puis-je résoudre ce problème?
Merci,
Márcio
Comment est-ce que tu t'entends? –