Script d'exemple d'API : génération de points COGO

Crée des nœuds dans Autodesk Dynamo pour Civil 3D afin de créer des points, d'ajouter des points à un groupe de points et de créer une surface à partir d'un groupe de points.

Exemple de script de Dynamo : CoGoPoints.dyn

Exemple de projet : CoGoPoints.dwg

  1. Créez un projet C# appelé CoGoPoints Class Lubrary(.Net Framework) à l'aide de .NET Framework 4.7.
  2. Ajoutez les fichiers Point.cs, PointGroup.cs et Surface.cs au projet.
  3. Ajoutez des références à ces fichiers, par exemple AeccDbMgd.dll, à partir du chemin d'installation de Civil 3D.
  4. Élaborez la solution, puis générez CoGoPoints.dll.
  5. Exécutez Civil 3D et ouvrez CoGoPoints.dwg.
  6. Cliquez sur l'onglet Gérer  groupe de fonctions Programmation visuelle  Dynamo .
  7. Sélectionnez Fichier  Importer une bibliothèque, puis sélectionnez le fichier CoGoPoints.dll.

    Les nœuds créés lors de l'importation du fichier CoGoPoints.dll sont présentés dans l'illustration suivante.

  8. Ouvrez et exécutez le script CoGoPoints.dll.

    Les points COGO sont créés dans le dessin et ajoutés à un groupe de points, et une surface est générée à partir de ce dernier.

Deux classes sont fournies dans Dynamo pour la création de noeuds et l'ajout d'un mécanisme de trace aux nouveaux noeuds.
  1. Autodesk.AutoCAD.DynamoNodes.ObjectBase : fournit l'encapsulation d'Autodesk.AutoCAD.DatabaseServices.DBObject
  2. Autodesk.AutoCAD.DynamoNodes.Object : dérivée d'Autodesk.AutoCAD.DynamoNodes.ObjectBase pour étendre les propriétés ou les fonctions selon Autodesk.AutoCAD.DatabaseServices.Object

Deux méthodes permettent de réaliser un mécanisme de trace. Vous pouvez d'une part utiliser la méthode existante (CommonConstruct) lors de la création de nœuds. D'autre part, vous pouvez écrire le code de trace à l'aide d'un gabarit.

Pour réaliser un mécanisme de trace pour les nouveaux nœuds, les classes doivent être dérivées d'Autodesk.AutoCAD.DynamoNodes.ObjectBase ou d'Autodesk.AutoCAD.DynamoNodes.Object. Un noeud de trace doit disposer des données de sortie de la classe créée du noeud afin que la trace soit valide.

Utilisation de la méthode de trace (CommonConstruct)

La fonction CommonConstruct est créée dans Autodesk.AutoCAD.DynamoNodes.ObjectBase et Autodesk.AutoCAD.DynamoNodes.Object.

Autodesk.AutoCAD.DynamoNodes.ObjectBase Autodesk.AutoCAD.DynamoNodes.Object

Vous pouvez créer des classes pour hériter d'Autodesk.AutoCAD.DynamoNodes.ObjectBase ou d'Autodesk.AutoCAD.DynamoNodes.Object. Les méthodes ci-dessus peuvent être appelées lorsque vous créez des noeuds selon la relation héritée. Par exemple, observez ce noeud PointGroup.CreateFromPoints.

Il crée un groupe de points dans Civil 3D à partir d'une liste de points.

Autodesk.Civil.DatabaseServices.PointGroup définit un groupe de points dans Civil 3D dérivé de Autodesk.AutoCAD.DatabaseServices.Object. Une nouvelle classe nommée PointGroup et dérivée d'Autodesk.AutoCAD.DynamoNodes.Objectbase doit également être créée pour encapsuler le type de groupe de points Civil 3D. L'attribut DynamoServices.RegisterForTrace peut être ajouté à la classe PointGroup pour créer un mécanisme de trace. Cette procédure n'est pas nécessaire, car Dynamo la prend en charge par défaut, mais il s'agit d'une bonne convention de codage.

Le noeud CreateFromPoints peut désormais être défini dans PointGroup. En raison de leur relation, CommonConstruct contenu dans Autodesk.AutoCAD.DynamoNodes.ObjectBase peut être appelé.

La méthode TNode désigne le type du nœud et est requise pour hériter d'Autodesk.AutoCAD.DynamoNodes.ObjectBase.

Dans cet exemple :
TNode = CogoPoints.PointGroup
TObject est le type de l'objet AutoCAD requis pour hériter de Autodesk.AutoCAD.DatabaseServices.DBObject.
Dans cet exemple :
TObject = Autodesk.Civil.DatabaseServices.PointGroup
La fonction objectCreator crée un objet. Dans cet exemple, cela entraîne la création d'un groupe de points.

La fonction objectUpdater met à un jour un objet. Dans cet exemple, cela entraîne la mise à jour d'un groupe de points existant.

La fonction CommonConstruct tente de trouver des objets existants dans l'identificateur tracé. Une fois ces objets détectés, ils sont mis à jour grâce à un appel d'objectUpdater avec la valeur isExisting==true. Si la mise à jour échoue, objectCreator génère un appel pour la création d'un objet, puis objectUpdater appelle isExisting==false.

La fonction CommonConstruct tente de mettre à jour les objets existants dans la base de données avec la même valeur d'identificateur tracé. Si l'opération échoue, un objet est créé. Si votre objet ne prend pas en charge les mises à jour, vous pouvez renvoyer la valeur isExisting==false. Cela vous permet de créer un objet et de supprimer l'ancien objet. CommonConstruct tentera tout de même de conserver la même valeur d'identificateur.

Les exemples de code complets sont affichés dans PointGroup.cs et la méthode CommonStruct apparaît dans Autodesk.AutoCAD.DynamoNodes.Object, comme ci-dessus.

Utilisation d'un gabarit de code de trace

Le gabarit suivant permet d'écrire un code de trace. Toutefois, la classe des nouveaux noeuds devra tout de même hériter de Autodesk.AutoCAD.DynamoNodes.Object ou Autodesk.AutoCAD.DynamoNodes.Entity.

Vous pouvez remplir à la fois le code de création et le code de mise à jour afin de réaliser le code de trace dans le gabarit ci-dessus.

À propos de DocumentContext

DocumentContext s'assure que le verrouillage du document permet l'accès en lecture/écriture à la base de données ainsi que lors d'une opération d'ouverture des objets de la base de données. Les nœuds qui souhaitent lire ou écrire des objets de la base de données doivent utiliser la méthode décrite ci-dessus.