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.