Site est un conteneur topologique fondamental dans Civil 3D. Il agit comme un seau pour les objets liés qui interagissent entre eux, spécifiquement les Parcelles, Axes, et Terrassements. Les objets au sein du même Site interagissent automatiquement (par exemple, les axes subdivisent les parcelles).
Autodesk.Civil.DatabaseServices
System.Object
└─ RXObject
└─ DBObject
└─ Entity
└─ Feature
└─ Site
| Propriété | Type | Description |
|---|---|---|
Name |
string |
Nom du site. |
Parcels |
ObjectId |
ID de la collection de parcelles. |
Alignments |
ObjectId |
ID de la collection d'axes. |
FeatureLines |
ObjectId |
ID de la collection de lignes caractéristiques. |
| Méthode | Type de Retour | Description |
|---|---|---|
Create(CivilDocument, string) |
ObjectId |
Méthode statique pour créer un nouveau site. |
using (Transaction tr = db.TransactionManager.StartTransaction())
{
CivilDocument civDoc = CivilApplication.ActiveDocument;
ObjectId siteId = Site.Create(civDoc, "Phase 1 Développement");
// Le site est maintenant prêt à accepter des parcelles/axes
tr.Commit();
}CivilDocument civDoc = CivilApplication.ActiveDocument;
foreach (ObjectId siteId in civDoc.GetSiteIds())
{
using (Transaction tr = db.TransactionManager.StartTransaction())
{
Site site = tr.GetObject(siteId, OpenMode.ForRead) as Site;
ed.WriteMessage($"\nSite : {site.Name}");
}
}public ObjectId FindSite(string name)
{
CivilDocument civDoc = CivilApplication.ActiveDocument;
foreach (ObjectId id in civDoc.GetSiteIds())
{
Site s = id.GetObject(OpenMode.ForRead) as Site;
if (s.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
return id;
}
return ObjectId.Null;
}// L'objet Site n'expose PAS directement une collection "Parcels"
// Au lieu de cela, vous accédez généralement aux parcelles via le CivilDocument ou en vérifiant les collections de dépendance du Site.
// Approche correcte : Accéder aux collections via l'ID du site.// Vous ne "déplacez" pas les objets ; vous les créez dans le site.
// Changer le site d'une Parcelle implique généralement une recréation ou des APIs MoveToSite spécifiques si disponibles.// Usage DBObject standard
site.Erase(); // Supprime le site ET son contenu topologiquesite.Name = "Nouveau Nom Site";// Objets dans ce site :
// 1. Les Axes coupent les Parcelles
// 2. Les Groupes de Terrassement interagissent
// 3. Les objets dans des sites DIFFÉRENTS n'interagissent pas.- Séparation : Utilisez différents Sites pour empêcher les interactions indésirables. Par exemple, gardez les axes "Conditions Existantes" séparés des parcelles "Projetées" si vous ne voulez pas qu'ils se subdivisent.
- Site "Aucun" : Certains objets peuvent être "sans site" (Site
ObjectId.Null). Cela empêche toute interaction topologique.