Bonjour,
Voici le fil d'Ariane entre l'objet `AutoCAD.Application` et le plus petit objet utilisable dans AutoCAD, qui est souvent une entité graphique comme une ligne, un cercle, ou un autre objet de dessin :
1. **AutoCAD.Application**
- Représente l'application AutoCAD elle-même.
2. **Application.Documents**
- Représente la collection de tous les documents (dessins) ouverts dans AutoCAD.
3. **Documents.Item**
- Représente un document (dessin) spécifique. On accède à un dessin particulier via son index ou son nom.
4. **Document.ModelSpace (ou Paperspace)**
- Représente l'espace modèle ou l'espace papier du dessin, où les entités sont créées.
5. **ModelSpace (ou Paperspace).Items**
- Représente la collection d'entités dans l'espace modèle ou l'espace papier.
6. **Items (Entities)**
- Représente une entité spécifique dans l'espace modèle ou l'espace papier, comme une ligne, un cercle, etc.
Ainsi, le fil d'Ariane serait :
`AutoCAD.Application -> Documents -> Document -> ModelSpace (ou Paperspace) -> Items (Entities)`
Voici un exemple de code VBA utilisant l'instruction `With` pour accéder à chaque niveau d'objets depuis `AutoCAD.Application` jusqu'à une entité spécifique dans l'espace modèle (ModelSpace) :{with facilitera la vie pour faire des boucles For Each sur chaque niveau !}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
Sub AccessAutoCADObjects()
' Déclaration des variables
Dim acadApp As Object
Dim acadDocs As Object
Dim acadDoc As Object
Dim modelSpace As Object
Dim acadEntity As Object
' Initialisation de l'application AutoCAD
Set acadApp = GetObject(, "AutoCAD.Application")
' Utilisation de With pour parcourir les objets
With acadApp
' Accès à la collection de documents
Set acadDocs = .Documents
' Accès au document actif
With acadDocs
Set acadDoc = .Item(0) ' On suppose qu'on accède au premier document ouvert
End With
' Accès à l'espace modèle du document
With acadDoc
Set modelSpace = .ModelSpace
End With
' Accès à une entité spécifique dans l'espace modèle
With modelSpace
' Ajout d'une ligne d'exemple
Set acadEntity = .AddLine(.Item(0).StartPoint, .Item(0).EndPoint)
' Ici, on pourrait manipuler l'entité acadEntity comme nécessaire
End With
End With
' Nettoyage des variables
Set acadEntity = Nothing
Set modelSpace = Nothing
Set acadDoc = Nothing
Set acadDocs = Nothing
Set acadApp = Nothing
End Sub |
Dans cet exemple, nous avons utilisé l'instruction `With` à chaque niveau pour accéder aux objets successifs. Notez que l'objet `acadEntity` est ajouté en tant que ligne d'exemple, mais vous pouvez adapter cela à toute autre entité nécessaire (comme des cercles, arcs, etc.).
Veuillez ajuster les paramètres (comme les indices des documents ou des entités) en fonction de vos besoins spécifiques.
Petite astuce ; toutes commandes exécuter manuellement dans Autocad est sauvegardé dans l'espace linge de commande afin de pouvoir la reexecuter plusieurs fois. Il suffit d'agrandir la zone de saisie pour récupérer le script voici un exemple
acadDoc.SendCommand "ZOOM E " & vbCr
Partager