You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La classe Polyline2d représente une entité polyligne 2D héritée dans AutoCAD. Contrairement à la classe légère Polyline, Polyline2d est un objet conteneur qui possède une collection d'objets Vertex2d. Chaque sommet est un objet de base de données séparé. Cette classe est principalement utilisée pour la compatibilité avec les anciens dessins et pour les polylignes nécessitant des données étendues par sommet.
Obtient/définit le type de polyligne (SimplePoly, FitCurvePoly, QuadSplinePoly, CubicSplinePoly)
DefaultStartWidth
double
Obtient/définit la largeur de départ par défaut pour les sommets
DefaultEndWidth
double
Obtient/définit la largeur de fin par défaut pour les sommets
Thickness
double
Obtient/définit l'épaisseur de la polyligne (extrusion)
Elevation
double
Obtient/définit l'élévation (coordonnée Z)
Normal
Vector3d
Obtient/définit le vecteur normal
Closed
bool
Obtient/définit si la polyligne est fermée
LinetypeGenerationOn
bool
Obtient/définit si la génération de type de ligne est continue
Length
double
Obtient la longueur totale de la polyligne
Méthodes Clés
Méthode
Type de Retour
Description
GetEnumerator()
IEnumerator
Obtient un énumérateur pour les sommets
AppendVertex(Vertex2d)
void
Ajoute un sommet à la polyligne
InsertVertexAt(int, Vertex2d)
void
Insère un sommet à l'index spécifié
OpenVertex(Vertex2d, OpenMode)
Vertex2d
Ouvre un sommet en lecture ou écriture
ConvertToPolylineType(Poly2dType)
void
Convertit la polyligne en un type différent
Straighten()
void
Supprime tout lissage de courbe
SplineFit()
void
Applique un lissage spline
Exemples de Code
Exemple 1: Créer une Polyline2d
using(Transactiontr=db.TransactionManager.StartTransaction()){BlockTablebt=tr.GetObject(db.BlockTableId,OpenMode.ForRead)asBlockTable;BlockTableRecordbtr=tr.GetObject(bt[BlockTableRecord.ModelSpace],OpenMode.ForWrite)asBlockTableRecord;// Créer le conteneur de polylignePolyline2dpoly=newPolyline2d();poly.SetDatabaseDefaults();// Ajouter la polyligne au dessinObjectIdpolyId=btr.AppendEntity(poly);tr.AddNewlyCreatedDBObject(poly,true);// Créer les sommetsPoint3d[]points=newPoint3d[]{newPoint3d(0,0,0),newPoint3d(10,0,0),newPoint3d(10,10,0),newPoint3d(0,10,0)};foreach(Point3dptinpoints){Vertex2dvertex=newVertex2d(pt,0,0,0,0);poly.AppendVertex(vertex);tr.AddNewlyCreatedDBObject(vertex,true);}// Fermer la polylignepoly.Closed=true;tr.Commit();}
Exemple 2: Lire les Sommets de Polyline2d
using(Transactiontr=db.TransactionManager.StartTransaction()){Polyline2dpoly=tr.GetObject(polylineId,OpenMode.ForRead)asPolyline2d;ed.WriteMessage($"\n=== Information Polyline2d ===");ed.WriteMessage($"\nType : {poly.PolyType}");ed.WriteMessage($"\nFermée : {poly.Closed}");ed.WriteMessage($"\nLongueur : {poly.Length:F3}");ed.WriteMessage($"\nÉlévation : {poly.Elevation:F3}");ed.WriteMessage("\n\nSommets :");intindex=0;foreach(ObjectIdvertexIdinpoly){Vertex2dvertex=tr.GetObject(vertexId,OpenMode.ForRead)asVertex2d;ed.WriteMessage($"\n Sommet {index} : ({vertex.Position.X:F2}, {vertex.Position.Y:F2})");ed.WriteMessage($"\n Largeur Début : {vertex.StartWidth:F2}");ed.WriteMessage($"\n Largeur Fin : {vertex.EndWidth:F2}");ed.WriteMessage($"\n Courbure : {vertex.Bulge:F3}");index++;}tr.Commit();}
Types de Polyline2d
Type
Description
SimplePoly
Polyligne standard avec segments droits et arcs
FitCurvePoly
Polyligne lissée passant par les sommets
QuadSplinePoly
B-spline quadratique
CubicSplinePoly
B-spline cubique
Propriétés Vertex2d
Propriété
Type
Description
Position
Point3d
Emplacement du sommet
StartWidth
double
Largeur de départ à ce sommet
EndWidth
double
Largeur de fin à ce sommet
Bulge
double
Facteur de courbure d'arc (0 = droit, ±1 = demi-cercle)
TangentUsed
bool
Si la direction tangente est utilisée
Tangent
double
Angle de direction tangente
Polyline vs Polyline2d
Fonctionnalité
Polyline (Légère)
Polyline2d (Héritée)
Objets Base de Données
Objet unique
Conteneur + objets sommet
Utilisation Mémoire
Plus faible
Plus élevée
Performance
Plus rapide
Plus lent
XData par Sommet
Non
Oui (chaque sommet est un DBObject)
Support 3D
Non
Non (utiliser Polyline3d)
Recommandé
Oui (moderne)
Seulement pour compatibilité
Meilleures Pratiques
Utiliser Polyligne Légère : Préférez Polyline à Polyline2d pour les nouveaux dessins
Gestion de Transaction : N'oubliez pas d'ajouter à la fois la polyligne et les sommets à la transaction
Propriété des Sommets : Les sommets appartiennent à la polyligne et sont supprimés avec elle