In questo articolo viene mostrata l’integrazione delle API di NextFEM Designer in Excel, in particolare per il calcolo delle sezioni trasversali di travi e pilastri in c.a.
Excel® è il programma più usato dagli ingegneri. In particolare gli strutturisti svolgono molte verifiche in questo ambiente, riportando manualmente i dati dai loro programmi di calcolo.
NextFEM Designer offre la possibilità di caricare tutte le sue funzionalità in programmi di terze parti, come Excel, per la lettura dei risultati delle analisi. Vediamo come fare in pochi semplici passi.
Caricamento delle API NextFEM
Prima di iniziare dobbiamo modificare alcune opzioni sulla sicurezza delle macro di Excel: dal comando File / Opzioni / Centro protezione / Impostazioni macro attiviamo “Attiva tutte le macro” and “Considera attendibile l’accesso al modello a oggetti dei progetti VBA”.
Vogliamo quindi che Excel possa caricare le componenti .NET 4.0 di NextFEM API. Per far questo, creiamo un file di testo chiamato excel.exe.config con questo contenuto:
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration>
e lo copiamo nella cartella di excel.exe (tipicamente è C:\Program Files\Microsoft Office\Office15 o simili, a seconda della versione installata).
Ci siamo. Ora scarica questo file Excel, che contiene tutte le macro necessarie per la verifica di una sezione in c.a.. Se hai Excel a 32bit, potrebbe essere richiesto un passo ulteriore.
Se non ti interessa approfondire come caricare le API in modo automatico, puoi saltare il prossimo paragrafo.
Caricamento di NextFEM API
Apriamo il file e premiamo ALT+F11. Possiamo vedere come ci sia del codice in “Questa_cartella_di_lavoro”.
Private Sub Workbook_Open()
If NF Is Nothing Then
Call loadLib
End If
End Sub
LoadLib è una funzione che carica automaticamente le API di NextFEM. Può essere eseguita in ogni momento per caricare o ricaricare le librerie.
La cartella di installazione di NextFEM Designer viene trovata automaticamente – questo è importante perché rende lo script utilizzabile in tutti i PC in cui NextFEM Designer è installato, senza altre modifiche.
Tutti gli utenti possono caricare le API di NextFEM in Excel, poiché il loro utilizzo è libero, senza la necessità di codici di licenza.
Per Excel a 32bit
Per verificare quale versione di Excel hai, vai su File / Account e fai click sul pulsante Informazioni.
Se hai Excel a 32 bit, puoi registrare nel sistema le API di NextFEM in questo modo:
- Avvia un prompt dei comandi come Amministratore
- Posizionati nella cartella di installazione di NextFEM Designer
- Esegui il comando:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm NextFEMapi.dll /codebase
Uso delle API in Excel
Tutte le funzionalità delle API di NextFEM sono richiamabili da codice VBA, oppure anche dal foglio di calcolo se sono incapsulate in una funzione UDF, come la seguente:
Function NFgetBeamForce(num As Integer, loadcase As String, tp As Integer, station As Integer) As Double
' STATION: a beam has 5 stations (1, 2, 3, 4 or 5)
' TP: 1=N, 2=Vy, 3=Vz, 4=Mt, 5=My, 6=Mz
NFgetBeamForce = NF.getBeamForce(num, loadcase, "1", tp, station)
End Function
Questa funzione può quindi essere chiamata da qualsiasi cella, in qualsiasi foglio.
Calcolo resistente di sezioni
Le API che useremo sono pertinenti al programma NextFEM Section Analyzer, per l’analisi di sezioni in c.a. normale e precompresso, acciaio, alluminio, legno, sezioni composte, rinforzi in FRP. Acquistando il modulo Section Analyzer, potrai utilizzarlo anche in altri programmi (Excel, AutoCAD, ecc.).
In particolare vediamo nel seguito una semplice procedura che permette di creare e verificare una sezione in c.a., partendo da dati geometrici e sollecitazioni.
Prepariamo in un foglio Excel i dati di input (dimensioni, num. barre e diametro, copriferro, forze).
La funzione che richiamiamo per il calcolo della sezione allo SLU è la seguente:
Sub runSectionCalc()
Call NF.newmodel
NF.modelName = "RCcolumnSection"
Dim sID As Integer
sID = NF.addRectSection(CDbl(Range("B3")), CDbl(Range("B4")))
Dim mID As Integer
mID = NF.addMatFromLib("C25/30")
Dim mdID As Integer
mdID = NF.addDesignMatFromLib("B450C")
Call NF.setSectionMaterial(sID, mID)
' adding rebar
Dim rebArea As Double
rebArea = WorksheetFunction.Pi() * Range("B8") ^ 2 / 4
Call NF.addRebarPattern2(2, sID, CInt(Range("B6")), CDbl(Range("B7")), mdID, rebArea)
' calculate strength
Dim res() As String
res = NF.getSectionResMoments2(sID, 0, CDbl(Range("B10")), CDbl(Range("B12")), CDbl(Range("B11")), GetCurDir() & "\sect")
' save NXS file for Section Analyzer
NF.saveModel (GetCurDir & "\" & NF.modelName & ".nxs")
For i = 0 To leng(res) - 1
Dim st() As String: st = Split(res(i), "=")
Range("A" & 15 + i) = st(0)
Range("B" & 15 + i) = st(1)
Next i
End Sub
Nell’ordine:
- Creiamo una sezione rettangolare di dimensioni fissate con addRectSection;
- Aggiungiamo il materiale base (addMatFromLib) e quello delle barre (addDesignMatFromLib);
- Aggiungiamo le barre richieste con addRebarPattern2;
- Calcoliamo la sezione con getSectionResMoments2, richiedendo in ouput le immagini della sezione e del suo asse neutro, oltreché del dominio ottenuto;
- Copiamo i risultati letti dal vettore di stringhe res nelle celle specificate.
La potenza di questo approccio è facilmente immaginabile. Possiamo infatti:
- caricare risultati da modelli analizzati in NextFEM Designer o importati da altri solutori come SAP2000, Midas GEN e Civil, Sismicad, CMP, Nolian, ecc.
- integrare le verifiche più complesse (es. SLU e SLE per qualsiasi forma di sezione, rinforzata o no) nei nostri fogli Excel preferiti, senza dover modificare i calcoli già impostati
- semplificare i nostri calcoli, delegando alle API di NextFEM la gestione degli algoritmi più complessi.