In questo post vedremo come caricare le API di NextFEM in ambienti CAD, come AutoCAD®, utilizzando l'interfaccia VBA integrata.
Sono sufficienti alcuni semplici passaggi, descritti di seguito, per caricare automaticamente le API di NextFEM all'interno del vostro ambiente CAD preferito, con poche righe di codice.
Vediamo come farlo in AutoCAD, qualunque sia la sua versione. Innanzitutto, se non è già presente, è necessario installare il VBA scaricando l'apposito modulo da qui. Dopo l'installazione, scaricate questo file e, dall'interno di AutoCAD, andate su Strumenti / Macro / Carica progetto, e selezionate il file Progetto.dvb che avete scaricato. Scrivete VBARUN nella finestra dei comandi e premete invio. Apparirà una nuova finestra denominata "Macro". Selezionare "Modulo1.Show_Userform" e premere Esegui. Verrà visualizzata la seguente finestra.
Questa è una dimostrazione di ciò che NextFEM API può fare nel vostro ambiente CAD. Premendo "Apri modello e disegna linee", lo script VBA chiederà di aprire un modello NextFEM. Scegliete un modello fatto di travi e osservatelo mentre viene disegnato sullo schermo! Usate il comando Orbita per ruotare il modello, lo vedrete come in Designer nella vista wireframe.
Come personalizzare lo script
Con la stessa tecnica di caricamento automatico utilizzata per Excel in questo articolo, esiste una funzione chiamata loadLib che trova e carica automaticamente le API di NextFEM. Vediamo la funzione chiamata per disegnare il modello wireframe. Nella funzione wireframeModel abbiamo utilizzato l'oggetto restituito da NF.getNodePosition per memorizzare l'oggetto vert3 contenente le coordinate nodali.
Sub wireframeModel()
' draw the loaded wireframe model
Call openFile
Dim eList() As String
eList = NF.elemsList()
For i = 0 To NF.elemsNumber - 1
Dim tp As String
tp = NF.getElementProperty(eList(i), "type")
' beam
If tp = 1 Then
Dim conn() As String
conn = NF.getElementConnectivity(eList(i))
' node 1
Dim n1 As Object
Set n1 = NF.getNodePosition(conn(0))
' node 2
Dim n2 As Object
Set n2 = NF.getNodePosition(conn(1))
' draw
Call drawLine(n1.X, n1.y, n1.z, n2.X, n2.y, n2.z)
End If
' TODO - other types
Next i
End Sub
Sub drawLine(x1 As Double, y1 As Double, z1 As Double, x2 As Double, y2 As Double, z2 As Double)
Dim pA(0 To 2) As Double
Dim pB(0 To 2) As Double
pA(0) = x1: pA(1) = y1: pA(2) = z1
pB(0) = x2: pB(1) = y2: pB(2) = z2
With ThisDrawing.ModelSpace
.AddLine pA, pB
.Item(.Count - 1).Update
End With
End Sub
Questo codice di esempio gestisce solo gli elementi di linea. La funzione drawLine disegna infine tutte le linee con i dati raccolti. Altri programmi possono richiedere passaggi aggiuntivi o modifiche al codice per utilizzare gli script VBA.
Ad esempio, in BricsCAD® l'utente deve installare il runtime installer VBA contenuto nella directory di installazione, sottocartella "VBA".
Supporto e condivisione nel forum degli sviluppatori di NextFEM
Per tutte le richieste di assistenza sulle API di NextFEM, il cui utilizzo è gratuito, si prega di utilizzare il forum degli sviluppatori.