La structure Tolerance définit des valeurs de tolérance pour les comparaisons géométriques dans AutoCAD. Elle fournit des tests d'égalité approximative pour les points, vecteurs et autres entités géométriques afin de tenir compte des problèmes de précision en virgule flottante.
Autodesk.AutoCAD.Geometry
| Propriété | Type | Description |
|---|---|---|
EqualPoint |
double |
Tolérance pour les comparaisons d'égalité de points |
EqualVector |
double |
Tolérance pour les comparaisons d'égalité de vecteurs |
Global |
Tolerance (static) |
Obtient la tolérance globale par défaut |
| Constructeur | Description |
|---|---|
Tolerance(double, double) |
Crée une tolérance avec des tolérances de point et de vecteur |
Point3d pt1 = new Point3d(10.0, 20.0, 0.0);
Point3d pt2 = new Point3d(10.0001, 20.0001, 0.0);
// Sans tolérance (comparaison exacte)
bool exactEqual = pt1 == pt2; // false
// Avec tolérance
Tolerance tol = new Tolerance(0.001, 0.001);
bool fuzzyEqual = pt1.IsEqualTo(pt2, tol); // true
ed.WriteMessage($"\nÉgalité exacte : {exactEqual}");
ed.WriteMessage($"\nÉgalité approximative (tol=0.001) : {fuzzyEqual}");// Utiliser les paramètres de tolérance globale d'AutoCAD
Tolerance globalTol = Tolerance.Global;
Point3d pt1 = new Point3d(5.0, 5.0, 0.0);
Point3d pt2 = new Point3d(5.00001, 5.00001, 0.0);
bool isEqual = pt1.IsEqualTo(pt2, globalTol);
ed.WriteMessage($"\nTolérance de point globale : {globalTol.EqualPoint}");
ed.WriteMessage($"\nTolérance de vecteur globale : {globalTol.EqualVector}");
ed.WriteMessage($"\nPoints égaux avec tolérance globale : {isEqual}");Vector3d v1 = new Vector3d(1.0, 0.0, 0.0);
Vector3d v2 = new Vector3d(1.00001, 0.00001, 0.0);
Tolerance tol = new Tolerance(0.0001, 0.0001);
bool areEqual = v1.IsEqualTo(v2, tol);
ed.WriteMessage($"\nVecteurs égaux : {areEqual}");Point3d lineStart = new Point3d(0, 0, 0);
Point3d lineEnd = new Point3d(10, 0, 0);
Point3d testPoint = new Point3d(5.00001, 0.00001, 0);
// Calculer la distance à la ligne
Vector3d lineVec = lineStart.GetVectorTo(lineEnd);
Vector3d pointVec = lineStart.GetVectorTo(testPoint);
Vector3d cross = lineVec.CrossProduct(pointVec);
double distance = cross.Length / lineVec.Length;
// Vérifier avec tolérance
Tolerance tol = new Tolerance(0.001, 0.001);
bool isOnLine = distance < tol.EqualPoint;
ed.WriteMessage($"\nDistance à la ligne : {distance:F6}");
ed.WriteMessage($"\nPoint sur la ligne (dans la tolérance) : {isOnLine}");- Utiliser la Tolérance : Toujours utiliser la tolérance pour les comparaisons géométriques en virgule flottante
- Tolérance Globale : Utiliser
Tolerance.Globalpour la cohérence avec les paramètres AutoCAD - Valeurs Appropriées : Choisir des valeurs de tolérance appropriées pour l'échelle de votre application
- Point vs Vecteur : Utiliser des tolérances différentes pour les points et les vecteurs si nécessaire
- Point3d - Utilise la tolérance dans la méthode
IsEqualTo() - Vector3d - Utilise la tolérance dans la méthode
IsEqualTo() - Point2d - Utilise la tolérance pour les comparaisons 2D
- Vector2d - Utilise la tolérance pour les comparaisons de vecteurs 2D