Il Bar dell'Ingegneria

Verifiche sezioni complesse in c.a. agli SLE ed SLU

« Older   Newer »
 
  Share  
.
  1. afazio
        +1   +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Partiamo

    La prima operazione da fare è quella di aprire un nuovo foglio di excel, e dopo aver attivato la possibilità di esecuzione delle macro, salvarlo con nome ed accedere all'ambiente di programmazione con ALT+F11.
    Creare un nuovo modulo che chiamiamo con "ModuloPrincipale" ed iniziare ad inserire il codice.

    Stabiliamo che vogliamo essere costretti dal VBA a dichiarare le variabili, in questo modo avremo meno soroprese dovute ad errori di digitazione con creazioni di variabili (non dichiarate) che noi pensiamo essere quelle che vogliamo ma che in effetti non sono quelle.

    Option Explicit fa al nostro caso.

    Quindi definiamo le costanti utilizzate nel corso del programma e quindi la prima struttura dei dati


    CODICE
    Option Explicit
    Public Const NMAXPOLI As Integer = 6   ' Numero massimo di poligoni che possono comporre la sezione */
    Public Const NMAXVRT As Integer = 100  ' Numero massimo di vertici che possono comporre il singolo poligono della sezione */
    Public Const NMAXARM As Integer = 200  ' Numero massimo di armature che possono essere inserite nella sezione */
    Public Const NMAXCOMB As Integer = 50  ' Numero massimo di combinazioni di carico cui assoggettare la sezione */
    Public Const ULT    As Integer = 0
    Public Const SNERV  As Integer = 1
    Public Const CURV   As Integer = 2

    ' definizione dei tipi (strutture delle variabili)
    ' -------------------------------------------------------------------------- */
    ' Struttura dati in cui sono definiti i dati dei singoli poligoni che com-   */
    ' pongono la sezione                                                         */
    ' -------------------------------------------------------------------------- */
    Public Type poligono_sezione
       x(0 To NMAXVRT - 1) As Double  ' coordinata x del vertice */
       y(0 To NMAXVRT - 1) As Double    ' coordinata y del vertice */
       numv As Integer            ' numero di vertici del poligono */
       omog As Double  ' coefficiente di omogeneizzazione (per verifiche SLE) */
       traz As Integer            ' 0=non reagente a trazione; 1=reagente a trazione */
       classe As String       ' Classe di resistenza del cls */
       fd As Double            ' Resistenza massima di calcolo (per verifiche SLU) */
       automfd As Integer         ' Rende automatico il calcolo di fd in funzione della classe del cls */
       dominio As Integer          ' 0=parabola-rettangolo (cls) 1=bilatera (acciaio) */
       fase As Integer            ' A futura memoria per gestire fasi di realizzazione */
       epsc0 As Double         ' Deformazione in corrispondenza della fine della parte parabola/lineare del dominio */
       epscu As Double         ' Deformazione ultima del dominio */
       automeps As Integer        ' Rende automatico il calcolo di epsc0 e epscu in funzione della classe del cls */
       selez(0 To NMAXVRT - 1) As Integer  ' 1=vertice selezionato 0=vertice non selezionato */
       bloc(0 To NMAXVRT - 1) As Integer   ' Link rigido con altro vertice. Nessun link=-1 */
    End Type


    Il tipo poligono_sezione altro non è che un tipo di variabile alla stessa stregua dell Integer o del double o del boolean, solo che stavolta siamo noi a definirne la struttura.
    Con quelle istruzioni abbiamo stabilito che ogni volta che definiamo una variabile per esempio xyz e ad essa attribuiamo il tipo poligono_sezione con l'istruzione

    dim xyz as poligono_sezione

    non abbiamo fatto altro che preparare uno spazio di memoria atto a contenere:
    100 coordinate x
    100 coordinate y
    un numero intero che mi rappresenterà il numero dei vertici presenti
    un numero in doppia precisione che sarà il coefficiente di omogeneizzazione
    un numero intero che mi idnicherà se la sezione è reagente o meno a trazione
    una stringa che mi indicherà la classe del cls
    ....
    e cosi via secondo la definizione del tipo

    Definita la variabile xyz, potremo accedere a qualsiasi dei valori che essa contiene attraverso l'istruzione

    abc= xyz.x(52) ' accediamo all'ascissa del cinquantatreesimo vertice
    def= xyz.omog ' leggiamo il suo coefficiente di omogeneizzazione
    .....

    stessa cosa in scrittura. Se vogliamo attribuire alla sezione xyz la classe "terzaB" basta dare l'istruzione

    xyz.classe="terzaB"
    mentre se vogliomo che sia attribuita una resistenza di calcolo pari ad 14.71 basta dare l'isrtruzione

    xyz.fd=14.71
     
    Top
    .
390 replies since 26/9/2012, 10:47   29394 views
  Share  
.