Bonjour à tous,
Je suis en train d'écrire un code lisant un fichier stl (fichier CAO maillé surfacique) et interprétant son contenu.
Le contexte : je veux créer un tableau de points (une liste de coordonnées xyz de points = tableau "n x 3" avec n= nbre de points) mais certains points apparaissent plusieurs fois dans le tableau. J'enlève donc les doublons dans la liste en utilisant le code ci après :
Le problème est que certaines valeurs des coordonnées sont arrondies. Exemple : un même point peut être sous la forme (100.0, 0.0, 10.0) et sous la forme (99.9999999, 1.4e-12, 10.000001) car la conversion STL (réalisée par CATIA V5) gère mal les arrondis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 tableau_des_points = [[-300.0, 0.0, 700.0], [-300.0, 100.0, 700.0]], [[-300.0, 0.0, 700.0], [-325.88189999999997, 0.0, 796.59259999999995]], [[-428.7901, 0.0, 665.49080000000004], [-454.67200000000003, 0.0, 762.08339999999998]], [[-300.0, 100.0, 700.0], [-300.0, 1.421085e-014, 700.0]], [[-300.0, 66.666659999999993, 700.0], [-325.88189999999997, 66.666659999999993, 796.59259999999995]], [[-325.88189999999997, 0.0, 796.59259999999995], [-351.7638, 0.0, 893.18520000000001]], [[-325.88189999999997, 0.0, 796.59259999999995], [-300.0, 1.421085e-014, 700.0]], [[-351.5573, 0.0, 720.69449999999995], [-377.43920000000003, 0.0, 817.28700000000003]], [[-377.64569999999998, 0.0, 989.77779999999996], [-351.7638, 0.0, 893.18520000000001]], [[-308.62729999999999, 22.22222, 732.19749999999999], [-334.50920000000002, 22.22222, 828.79010000000005]] tableau_des_points_sans_doublon = [] for k in tableau_des_points: if k not in tableau_des_points_sans_doublon: tableau_des_points_sans_doublon.append(k)
Quelqu'un pourrait-il m'indiquer une astuce pour que mon code reconnaisse ces deux écritures différentes du même point comme identiques et ne les ajoute donc pas au tableau sans doublons. L'idéal serait qu'une variable me permette de définir à combien de chiffres après la virgule on peut considérer que les points sont identiques.
Merci d'avance,
Fred
Partager