Civil 3D 2025 : Modéliser via une macro VBA
- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Lien permanent
- Imprimer
- Signaler
Bonjour à tous,
Je suis en train de faire une macro vba sur excel pour modéliser des lignes dans un dessin Civil 3D, puis exporter au format ifc (2x3 ou 4x3).
Pour l'instant, je peux générer des polylignes dans un dessin Civil 3D, mais le format ifc ne prend pas en compte les polylignes.
J'ai commencé à regarder pour balayer un cercle le long des lignes mais ça ne fonctionne pas. J'ai essayé plusieurs fonctions, ajouté plusieurs références différentes et j'ai aussi essayé de faire juste une extrusion (ce qui fait planter le logiciel...).
Voici le code :
Sub CreerBalayage()
Dim acadApp As Object
Dim acadDoc As Object
Dim acadModelSpace As Object
Dim basePoint(2) As Double
Dim ligneStart(2) As Double
Dim ligneEnd(2) As Double
Dim cercleObj As Object
Dim ligneObj As Object
Dim regionArray As Variant
Dim regionObj As Object
Dim solideObj As Object
Dim rayon As Double
' Initialisation
Set acadApp = GetObject(, "AutoCAD.Application")
Set acadDoc = acadApp.ActiveDocument
Set acadModelSpace = acadDoc.modelSpace
' Coordonnées et paramètres
basePoint(0) = 0: basePoint(1) = 0: basePoint(2) = 0 ' Centre du cercle
ligneStart(0) = 0: ligneStart(1) = 0: ligneStart(2) = 0 ' Début de la ligne
ligneEnd(0) = 0: ligneEnd(1) = 0: ligneEnd(2) = 50 ' Fin de la ligne
rayon = 1 ' Rayon du cercle
Set cercleObj = acadModelSpace.AddCircle(basePoint, rayon)
Set ligneObj = acadModelSpace.AddLine(ligneStart, ligneEnd)
' Méthode 1 : Balayer le long de la ligne
Set solideObj = cercleObj.Sweep(ligneObj)
' Méthode 2 : Balayer via l'invite de commandes
acadDoc.SendCommand "_SWEEP " & vbCr
acadDoc.SendCommand "_PICKFIRST [" & cercleObj.ObjectName & "] " & vbCr
acadDoc.SendCommand "_PICKFIRST [" & ligneObj.ObjectName & "] " & vbCr
End Sub
---
Merci à ceux qui prennent le temps d'y jeter un oeil.
Je cherche aussi en parallèle une méthode pour pour que l'ifc exporte les polylignes 3D.
Merci d'avance. 🙂