Table of Contents
L'automatisation est devenue une pierre angulaire de l'ingénierie structurelle moderne, permettant aux professionnels de gérer des modèles de plus en plus complexes tout en maintenant des horaires serrés. STAAD Pro, un logiciel d'analyse et de conception de structures largement adopté de Bentley Systems, offre des capacités étendues de modélisation, d'analyse et de conception. Cependant, de nombreux ingénieurs effectuent encore des tâches répétitives manuellement : charger des membres, exécuter des combinaisons de charges multiples ou générer des résumés de résultats.
Le rôle de l'automatisation dans l'analyse structurelle
L'analyse structurale implique souvent des processus itératifs : réglage des tailles des membres, modification des conditions de support ou réévalua tion des cas de charge. La répétition manuelle non seulement consomme des heures mais introduit également des incohérences. Les scripts automatisés assurent que chaque itération suit exactement la même procédure, de la modification du modèle à l'extraction des résultats. De plus, l'automatisation permet aux ingénieurs d'effectuer des études paramétriques – différentes dimensions ou charges systématiquement – sans retravail manuel.
Comprendre les Scripts VBA dans le contexte de STAD Pro
VBA est un langage de programmation piloté par des événements intégré dans des applications Microsoft Office comme Excel, Word et Access. Bien que STAAD Pro ne supporte pas nativement l'exécution VBA dans son propre environnement, il expose une interface d'automatisation COM (Component Object Model) . Cette interface permet aux programmes externes – comme une macro Excel VBA – d'interagir avec STAAD Pro programmatiquement . Grâce à cette API, un script VBA peut ouvrir des modèles, exécuter des analyses, modifier la géométrie, assigner des charges, récupérer des résultats et même générer des rapports . La clé est de comprendre le modèle d'objet exposé par STAAD Pro . Bentley fournit la documentation pour l'API STAAD Pro, qui comprend des objets comme , , et . En créant une instance de l'objet d'application STAAD Pro de VBA, les ingénieurs acquièrent le contrôle total du logiciel.
Avantages de l'automatisme STAAD Pro avec VBA
- Épargne de temps:[ Les tâches qui prennent des heures manuellement – comme l'exécution de 50 combinaisons de charges et l'exportation des réactions – peuvent être terminées en quelques secondes.
- Consistance et exactitude:[ Les erreurs humaines causées par des erreurs de frappe ou des étapes manquées sont éliminées. Le même script peut être réutilisé dans plusieurs projets, assurant ainsi des procédures normalisées.
- Personnalisation: Les scripts peuvent être adaptés aux exigences spécifiques du projet – modèles de charge personnalisée, vérifications de code de conception uniques ou formats de résultats exclusifs.
- Intégration sans couture avec Excel: Excel sert à la fois de centre de contrôle et de dépôt de données. Les résultats peuvent être écrits directement dans des tableurs pour une analyse, une cartographie ou un rapport plus poussés.
- Licence de logiciel réduite Verrouillage:[ En automatisant par Excel, les équipes peuvent partager des scripts sans exiger de tous les utilisateurs d'avoir des compétences avancées en programmation STAAD Pro.
Prérequis pour l'utilisation de VBA avec STAAD Pro
Avant d'écrire des scripts d'automatisation, assurez-vous que les éléments suivants sont en place :
- Installation STAAD Pro sous licence : L'interface d'automatisation nécessite une licence valide de STAAD Pro (généralement STAD.Pro Connect Edition ou versions antérieures).
- Microsoft Excel (2010 ou ultérieure): VBA est pris en charge dans toutes les éditions; cependant, pour le développement professionnel, Excel 365 est recommandé.
- Activer l'onglet développeur: Dans Excel, activez l'onglet développeur pour accéder aux paramètres de l'éditeur VBA et de la macro.
- Ajouter une référence à STAAD Pro Type Library:[ Dans l'éditeur VBA (Outils > Références), assurez-vous que la bibliothèque d'objets STAAD Pro (par exemple, -STAAD.Pro.Application - ou -STAAD.Pro v2.0 Type Library-SQ) est cochée.
- Paramètres de sécurité: Ajustez la macro sécurité pour permettre -'Accès fiable au modèle d'objet du projet VBA et permettre en option des macros signées numériquement de éditeurs de confiance.
Si la bibliothèque de type STAAD Pro n'est pas listée, consultez le dossier d'installation (généralement ou similaire) et sélectionnez le fichier [ ou (p. ex. .
Guide étape par étape : Création d'un Macro VBA pour contrôler STAD Pro
Configuration de l'environnement VBA dans Excel
Ouvrez Excel, appuyez sur Alt+F11 pour lancer l'éditeur de base visuel. Insérez un nouveau module (Insert > Module). C'est là que vous rédigerez vos procédures d'automatisation. Assurez-vous que la référence à STAAD Pro est ajoutée comme décrit ci-dessus.
Établir une connexion avec STAAD Pro
Pour interagir avec STAAD Pro, vous devez créer une instance de l'objet de l'application. L'approche la plus simple utilise une liaison précoce (si la référence est définie):
Dim staadApp As STAADPro.Application
Set staadApp = New STAADPro.Application
Si vous préférez une fixation tardive (aucune référence n'est requise), utilisez:
Dim staadApp As Object
Set staadApp = CreateObject("STAAD.Pro.Application")
La fixation précoce offre une meilleure performance et un support IntelliSense, mais la fixation tardive évite les dépendances spécifiques à la version. Pour les scripts de production, la fixation précoce avec une gestion appropriée de la version est conseillée.
Ouverture d'un modèle et exécution d'une analyse
Une fois l'objet de l'application disponible, vous pouvez ouvrir un fichier STAAD existant, exécuter l'analyse et enregistrer les résultats. Voici un exemple plus complet:
Sub RunStaadAnalysis()
Dim staadApp As STAADPro.Application
Dim staadModel As STAADPro.Model
Dim analysisResult As Boolean
' Create STAAD Pro application object
Set staadApp = New STAADPro.Application
' Make STAAD Pro visible (optional)
staadApp.Visible = True
' Open an existing model file
staadApp.OpenFile "C:\Projects\Bridge.std"
Set staadModel = staadApp.ActiveModel
' Run all analysis cases
analysisResult = staadModel.Analyze()
If analysisResult Then
MsgBox "Analysis completed successfully."
Else
MsgBox "Analysis failed. Check STAAD Pro output for errors."
End If
' Save changes
staadModel.Save
' Close the model (optional)
staadApp.Close
' Release objects
Set staadModel = Nothing
Set staadApp = Nothing
End Sub
Note: La méthode exécute tous les cas de charge définis. Pour une analyse partielle ou des combinaisons de charge spécifiques, des appels API supplémentaires peuvent être requis.
Récupération et exportation des résultats vers Excel
L'une des utilisations les plus puissantes de VBA est l'extraction des résultats directement dans une feuille de travail. Le script suivant lit les déplacements d'articulations pour tous les nœuds et les écrit sur la feuille active:
Sub ExportDisplacementsToExcel()
Dim staadApp As STAADPro.Application
Dim staadModel As STAADPro.Model
Dim resultSet As STAADPro.ResultSet
Dim nodeID As Long
Dim displ As STAADPro.Displacement
Dim ws As Worksheet
Dim rowIdx As Long
Set staadApp = New STAADPro.Application
staadApp.Visible = False
staadApp.OpenFile "C:\Projects\Bridge.std"
Set staadModel = staadApp.ActiveModel
' Run analysis if not already done
staadModel.Analyze
' Get results for a specific load case (e.g., load case 1)
Set resultSet = staadModel.GetResultSet(1)
' Set up Excel worksheet
Set ws = ThisWorkbook.Sheets(1)
ws.Cells.Clear
ws.Cells(1, 1).Value = "Node ID"
ws.Cells(1, 2).Value = "X Displacement (mm)"
ws.Cells(1, 3).Value = "Y Displacement (mm)"
ws.Cells(1, 4).Value = "Z Displacement (mm)"
rowIdx = 2
' Loop through all nodes in the model
For Each nodeID In staadModel.Nodes.Keys
Set displ = resultSet.GetNodeDisplacement(nodeID)
ws.Cells(rowIdx, 1).Value = nodeID
ws.Cells(rowIdx, 2).Value = displ.X
ws.Cells(rowIdx, 3).Value = displ.Y
ws.Cells(rowIdx, 4).Value = displ.Z
rowIdx = rowIdx + 1
Next nodeID
' Clean up
staadApp.Close
Set resultSet = Nothing
Set staadModel = Nothing
Set staadApp = Nothing
MsgBox "Displacements exported to sheet: " & ws.Name
End Sub
Cet exemple démontre la puissance de combiner le moteur d'analyse STAAD Pro , avec la présentation des données Excel , des approches similaires peuvent être utilisées pour les forces des membres, les réactions de soutien ou les résultats de conception.
Gestion des erreurs et débogage
Les scripts d'automatisation doivent gérer les échecs gracieusement. Utilisez structures pour attraper des problèmes comme les fichiers manquants, les échecs d'analyse ou les erreurs API:
Sub SafeAnalysis()
On Error GoTo ErrHandler
Dim staadApp As Object
Set staadApp = CreateObject("STAAD.Pro.Application")
staadApp.OpenFile "C:\Projects\Structure.std"
If Not staadApp.ActiveModel.Analyze() Then
MsgBox "Analysis returned false. Check STAAD Pro log."
End If
staadApp.ActiveModel.Save
staadApp.Close
Set staadApp = Nothing
Exit Sub
ErrHandler:
MsgBox "Error " & Err.Number & ": " & Err.Description
If Not staadApp Is Nothing Then staadApp.Quit
Set staadApp = Nothing
End Sub
Assurez-vous toujours que STAAD Pro est correctement fermé même en cas d'erreur, pour éviter les processus persistants.
Techniques d'automatisation avancées
Traitement par lots de modèles multiples
Les ingénieurs doivent souvent analyser un ensemble de modèles similaires, par exemple, différentes configurations de fermes ou conditions de sol. En utilisant une boucle, un script VBA peut ouvrir chaque fichier, exécuter l'analyse, extraire les résultats clés et les regrouper dans un cahier de travail sommaire :
Sub BatchAnalyze()
Dim filePath As String
Dim modelFiles As Variant
Dim i As Integer
Dim staadApp As STAADPro.Application
Dim resultSummary As Worksheet
Set resultSummary = ThisWorkbook.Sheets("Summary")
resultSummary.Cells.Clear
resultSummary.Cells(1, 1).Value = "Model Name"
resultSummary.Cells(1, 2).Value = "Max Displacement (mm)"
' List of .std files (could also read from a folder)
modelFiles = Array("C:\Models\Case1.std", "C:\Models\Case2.std", "C:\Models\Case3.std")
Set staadApp = New STAADPro.Application
staadApp.Visible = False
For i = LBound(modelFiles) To UBound(modelFiles)
staadApp.OpenFile modelFiles(i)
If staadApp.ActiveModel.Analyze() Then
' Extract maximum displacement (example)
Dim maxDisp As Double: maxDisp = 0
Dim nodeKeys As Variant: nodeKeys = staadApp.ActiveModel.Nodes.Keys
Dim nd As Long
Dim rs As Object
Set rs = staadApp.ActiveModel.GetResultSet(1)
For Each nd In nodeKeys
Dim d As Object: Set d = rs.GetNodeDisplacement(nd)
Dim mag As Double: mag = Sqr(d.X ^ 2 + d.Y ^ 2 + d.Z ^ 2)
If mag > maxDisp Then maxDisp = mag
Next
resultSummary.Cells(i + 2, 1).Value = modelFiles(i)
resultSummary.Cells(i + 2, 2).Value = maxDisp
End If
staadApp.ActiveModel.Close False ' don't save changes
Next i
staadApp.Quit
Set staadApp = Nothing
MsgBox "Batch processing complete."
End Sub
Génération et modification de modèles paramétriques
VBA peut également créer des modèles entiers à partir de zéro en utilisant des données de coordonnées et de membres stockées dans Excel. Par exemple, un tableur de géométrie de pont peut conduire à la création de nœuds, de poutres et de supports. Cette approche est particulièrement utile pour les structures répétitives comme les tours de transmission ou les ponts à fermes.
Production automatisée de rapports
En utilisant VBA, vous pouvez contrôler le moteur de rapport pour générer une sortie normalisée pour plusieurs cas de charge ou codes de conception. Combiné avec les capacités de cartographie Excel, vous pouvez créer des tableaux de bord qui se mettent à jour automatiquement après chaque analyse.
Applications et études de cas dans le monde réel
L'automatisation via VBA a été appliquée avec succès dans de nombreuses firmes de consultants. Par exemple, une firme d'ingénierie structurelle a utilisé une macro VBA pour automatiser la vérification de conception de plus de 500 cadres en acier pour un projet de stade. Le script a été itéré par différentes combinaisons de charge de vent, extrait des vérifications d'unité des membres, et a signalé tout membre surchargé directement dans une feuille d'audit Excel.
Un autre cas concernait un organisme gouvernemental chargé des inspections des ponts. Les ingénieurs ont utilisé l'ABV pour produire des rapports d'analyse pour des centaines de ponts existants en lisant les données de terrain d'Excel, en mettant à jour les modèles de STAAD et en produisant des rapports PDF avec des tableaux et des cartes intégrés.
Meilleures pratiques pour l'automatisation VBA en ingénierie structurelle
- Démarrer Simple: Commencez par de petites tâches comme ouvrir un fichier et exécuter l'analyse. Ajoutez progressivement la complexité que vous devenez à l'aise avec l'API.
- Utiliser des noms de variables significatifs:[ Dans les scripts d'ingénierie, la clarté est cruciale. Des variables de noms comme , ou .
- Incorporer Logging:[ Ecrire des messages de progression dans un fichier journal ou une fenêtre immédiate () pour surveiller l'exécution, en particulier pour les opérations par lots.
- Toujours Tester sur les sauvegardes:[ N'exécutez jamais de scripts non testés sur les modèles de production. Utilisez des copies de vos fichiers .std.
- Différences de version de poignée:[ L'API STAAD Pro change entre les versions. Utilisez compilation conditionnelle ou liaison tardive si vous supportez plusieurs versions.
- Documenter votre code: Ajoutez des commentaires expliquant le but de chaque bloc. Ceci est essentiel pour le transfert de connaissances et les modifications futures.
- Combinez avec les fonctions Excel:[ Après avoir extrait les résultats, utilisez les fonctions Excel (p. ex., VLOOKUP, tables pivotantes) pour une analyse plus poussée au lieu d'écrire des boucles VBA complexes.
- Utiliser la manipulation des erreurs Partout:[ Des situations inattendues se produiront: des fichiers verrouillés, des analyses échouent, des problèmes de réseau.
- Keep STAAD Pro Visible pendant le développement: Set ] tout en débogant pour voir ce que le script fait. Set to for production.
Conclusion
L'automatisation des tâches d'analyse structurelle dans STAAD Pro avec les scripts VBA est un puissant moyen d'accroître la productivité, d'assurer la cohérence et de débloquer de nouvelles possibilités dans la conception paramétrique et la gestion des données. Bien que la courbe d'apprentissage initiale implique de saisir l'interface d'automatisation COM et la syntaxe VBA, le paiement est immense : des heures de travail manuel réduites en minutes, moins d'erreurs et la capacité d'explorer d'autres alternatives de conception.
Ressources supplémentaires
- STAAD Pro Connect Edition Help - API Référence
- Microsoft Office VBA référence de la langue
- Forums sur les conseils des ingénieurs - Discussions sur l'automatisation des systèmes d'ingénierie structurelle
- CodeProjet: Introduction à l'automatisation COM
Note: Vérifiez toujours que votre utilisation de l'automatisation est conforme aux termes de licence de votre organisation et aux politiques informatiques. Bentley ne supporte pas officiellement les scripts VBA tiers, donc procéder avec prudence et de tests approfondis.