Il Bar dell'Ingegneria

Semplice telaio 3D in excel

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

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Parlando di rotazioni.

    Indicando con :



    il vettore che raccoglie le coordinate di N punti nello spazio,

    La rotazione di un angolo generico ϑ rispetto ad uno degli assi (x,y,z) si esprime tramite la relazione:



    in cui il versore i si riferisce ad una rotazione attorno all'asse x, mentre



    si riferisce ad una rotazione attorno all'asse y e infine:



    rappresenta una rotazione attorno a z.

    é possibile applicare due o anche tre rotazioni una di seguito all'altra, ma non tutte le sequenze di rotazione sono ammissibili.
    Praticamente non sono ammissibili tutte quellerotazioni in cui si eseguano due rotazioni contigue rispetto allo stesso asse.

    L'elenco delle rotazioni ammissibili è:
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    ... indicando con ϑx ϑy ϑz gli angoli di rotazione attorno agli assi, e con i j k i versori degli assi, si hanno le seguenti sei rotazioni ammissibili:













    Le rotazioni ZYX e XYZ vengono anche denominate RPY (Roll-Pitch-Yaw) e YPR (Yaw-Pitch-Roll) mentre tutte e sei rappresentano le rotazioni di Cardano.

    Oltre a queste rotazioni vi sono le 6 possibili rotazioni ottenibili dal prodotto di due rotazioni elementari, cioe rotazioni attorno a soli due assi.
    In questo caso gli angoli vengono indicati con α β ϒ chiamati anche angoli di Cardano.
    L'elenco delle rotazioni è:
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    ....













    Le due rotazioni ZXZ e ZYZ vengono dette rotazioni di Eulero e gli angoli sono denominati angoli di Eulero.

    Naturalmente vi sono anche le rotazioni attorno ad un solo asse.

    In una procedura automatizzata si può pensare di mettere in elenco le dodici+tre (quindici) rotazioni ammissibili e con scelta a tendina fare selezionare all'utente (dopo aver inserito i tre angoli) che tipo di rotazione far eseguire.

    Per mio sfizio ci sto studiando sopra.
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Prove di codice in progress.

    2hdoftY

    Bf3hEw6

    NEqREPC

     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Bene, penso di aver terminato la fase di disegno della struttura su grafico excel.
    Per questo ho fatto ricorso, come già detto, a qualche riga di codice con cui sono riuscito a calcolare le coordinate dei nodi sia in proiezione ortogonale e sia in proiezione prospettica per qualsiasi terna di angoli cui è ruotato il piano di proiezione. Il disegno della struttura serve solo a rendersi conto visivamente se l'input della geometria strutturale è corretto.
    Alla fine di questo preliminare studio, terminato l'input delle coordinate dei nodi e della tabella di connessione delle aste, avremo una situazione simile a quella illustrata:

    1kszauF


    gPnQdKR


    v2bmVgA


    1eu2HcC



    Il prossimo passo consiste nella costruzione delle matrici di rigidezza locali delle aste. La matrice di rigidezza locale di ogni asta ha dimensioni 12*12, pertanto se vogliamo operare con formule scritte direttamente sul foglio, rischiamo di perderci tra le righe e le colonne, mentre la cosa diventerebbe agevole se pensiamo di dedicare qualche rigo di codice col quale costruire le matrici di rigidezza.
    Considerando che questo topic vuole essere di tipo didattico e non professionale, nel seguito procederò in una prima fase mostrando come costruirle manualmente e successivamente sostituirò le tabelle facendole costruire direttamente da codice.
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Esaminando la matrice di rigidezza locale della generica asta (vedi matrice postata da Reversi o anche quella postata da me)

    v4zMFOv

    notiamo la presenza di dieci diversi termini:

    KOvuP7c

    E' conveniente creare altra linguetta nel file excel in cui riportiamo la tabella delle coordinate e ne estendiamo le colonne, aggiungendo quelle necessarie al calcolo dei termini sopra elencati.

    Inseriamo accanto alla tabella di input delle aste un pulsante dedicato a richiamare una sub che ci faciliti la copia della tabella in altro foglio. Ma volendo l'operazione si potrebbe fare anche manualmente. L'operazione "manuale" comporta il dover riesaminare latabella ad ogni variazione dei nodi o delle aste.

    gKA5xOm

    Al pulsante associamo il seguente codice:

    CODICE
    Sub Estendi()
       Range("Tab_Aste_E_C").ClearContents
       Range("Tab_Aste").Copy Destination:=Range("Tab_ASte_E")
    End Sub


    Questo codice non fa altro che pulire le colonne dove copieremo la tabella (al range da pulire ho dato il nome Tab_Aste_E_C") e quindi copiare il contenuto dell'intera tabella delle aste del foglio di input in altra tabelle posta nel foglio "AsteEstese"

    Nel foglio delle aste estese inseriremo le colonne dedicate a contenere i valori dei termini contenuti nella matrice di rigidezza delle aste.

    Edited by afazio - 8/10/2019, 12:33
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Nelle colonne aggiunte digitiamo le dieci formule relative alla determinazione dei dieci termini presenti nella matrice di rigidezza dell'asta (basta digitarle una sola volta relativamente al primo rigo e quindi trascinare le formule fino alla fine della tabella), ottenendo una cosa simile a quella che mostro:

    xH3m2rF

    Qui, dato che tabella è troppo grande, per visualizzare la parte di interesse, ho nascosto alcune colonne. Inoltre i numeri su sfondo arancio rappresentano gli indici relativi ai termini calcolati, utili per il successivo richiamo degli stessi nella corretta posizione all'interno della matrice.

    C'è da dire che questa parte sarebbe anche facilmente codificabile (cosa che farò a seguire) rendendo praticamente error-esente la fase di calcolo dei termini della matrice e sopratutto automatica e senza fatica.
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Aggiungo che nel frattempo ho migliorato la parte grafica e adesso la questione diventa più "bella".
    Guardate.

    Per la parte grafica è possibile graficizzare qualsiasi vista, assonometrica o prospettica, con qualsiasi terna di angoli di rotazione, qualsiasi tipo di rotazione ammissibile, (XXX XYZ ZXZ e cosi via), basta cambiare l'angolo e premere sul grafico, questo si aggiorna coi valori degli angoli inseriti.
    Oppure si possono scegliere le viste assonometriche (o prospettiche) relative alle iconette (che rappresentano dei pulsanti) con valori prefissati di angoli e infine si può anche decidere di visualizzare i prospetti o la pianta.
    Si possono visualizzare solo i nodi o solo le aste con presenza o meno della griglia o degli assi. Insomma una roba quasi professionale e tutto ricorrendo a, come lo ha battezzato zax, qualche barbatrucco e un pò di geometria proiettiva.

    Tutta questa parte di grafica potrebbe far parte del topic "Proiezioni in ripresa", oppure di un topic dedicato ai grafici a dispersione di punti in proiezione assonometrica o prospettica in Excel. In merito a questo fatto e relativamente ad Excel ho trovato poco e nulla in internet.

    Edited by afazio - 8/10/2019, 12:56
    Attached Image
    001-5-Grafica

     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Rendo disponibile la versione "in avanzamento" del file che sto componendo.

    Qui un'anteprima di quel che troverete:

    z1keDJc
    File Allegato
    Telaio3D___07_0.rar
    (Number of downloads: 70)

     
    Top
    .
  10.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    In agorà ho accennato al problema della completa definizione del sistema locale della singola asta.
    Il sistema locale ha come asse locale x' l'asse della trave, e come assi y' e z' i due assi principali d'inerzia della sezione scelti in modo tale da formare terna destrogira levogira con l'asse locale x'.
    L'asse locale x' è univocamente definito attraverso le coordinate dei suoi due estremi mediante i coseni direttori dei tre angoli formati dalla direzione i->j con gli assi globali X, Y e Z.
    Restano da definire i rimanenti due assi locali y' e z'. Questi giacciono sul piano perpendicolare a x' ma possono essere disposti (pur rimanendo tra loro ortogonali) in qualsiasi direzione del piano.

    La seguente immagine meglio chiarisce il concetto. Ho voluto evidenziare proprio il fatto che la sezione può essere comunque ruotata rimanendo sul piano ortogonale a x'.

    0EJ3qG6



    Alcuni programmi fanno ricorso ad un nodo ausiliario che viene chiamato nodo "k" posto sufficientemente distante dai rimanenti nodi della struttura tale da poter essere considerato all'infinito e poter quindi rappresentare una direzione.
    L'asse locale y' (o forse l'asse locale z') è posto secondo la direzione del nodo "k" e il rimanente asse resta univocamente determinato dal fatto che deve formare terna destralevogira con i rimanenti due.
    Altri programmi non fanno esplicito ricorso al nodo "k" e quindi devono aver fissato in qualche modo una direzione di default, e consentono in fase di creazione del modello di poter ruotare la sezione di qualsivoglia angolo.

    Ebbene sono fermo proprio a questo punto. devo decidere come procedere e quindi agire di conseguenza.
    Cosi di primo pensiero, mi viene complicato pensare al nodo "k", e quindi cerco una maniera per stabilire un "default".

    Edited by afazio - 23/11/2019, 13:31
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Da utente MasterSap posso dirti come opera tale programma.

    È previsto il nodo k. Poiché la numerazione dei nodi parte da 1, è possibile però definire per ogni asta come nodo k 'standard' il nodo 0.

    Ovvero, per pilastri o elementi sub verticali il nodo K standard che definisce l'asse y' è posto lungo l'asse X (globale) all'infinito. Per elementi orizzontali invece lungo l'asse Z (globale) all'infinito.
     
    Top
    .
  12. taipan95
        +1   -1
     
    .

    User deleted


    Non so se ho ben capito il problema, però mi veniva da pensare: non si può fissare un default e poi "immaginare" di ruotare la sezione agendo sui valori numerici delle inerzie? Per capirci: ho un profilato rettangolare, di default per esempio lo considero sempre con il lato più lungo in verticale (facendo riferimento all'immagine di sopra direi la soluzione di sinistra)... se nella realtà lo voglio mettere con il lato lungo coricato in orizzontale, con un comando idoneo inverto, in fase di calcolo, le due inerzie Jy e Jz
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    CITAZIONE (taipan95 @ 12/10/2019, 21:20) 
    Non so se ho ben capito il problema, però mi veniva da pensare: non si può fissare un default e poi "immaginare" di ruotare la sezione agendo sui valori numerici delle inerzie? Per capirci: ho un profilato rettangolare, di default per esempio lo considero sempre con il lato più lungo in verticale (facendo riferimento all'immagine di sopra direi la soluzione di sinistra)... se nella realtà lo voglio mettere con il lato lungo coricato in orizzontale, con un comando idoneo inverto, in fase di calcolo, le due inerzie Jy e Jz

    Penso che agire sulle inerzie per ruotare una sezione sia un pò più complicato, meglio fare sempre ricorso alle matrici di rotazione. E poi le rotazioni debbono essere generiche e non solo quelle che scambiano l'inerzia attorno a y' con quella attorno a z' e quindi rotazioni di 90°. Se voglio la sezione ruotata di 30° devo fare ricorso alla matrice di rotazione delle inerzie?

    Per quanto riguarda il default penso di adottare quello proposto da zax aggiungendo anche il fatto che quando la trave non è ne orizzontale e nemmeno verticale, l'asse locale y' (o l'asse locale z') si colloca sul piano che contiene l'asse x' e l'asse globale Z. In questo modo l'asse in questione risulta essere ruotato di beta rispetto a Z secondo lo schema che allego.
    Attached Image
    003-Assilocali01

     
    Top
    .
  14. taipan95
        +1   -1
     
    .

    User deleted


    Sì hai ragione, intendevo proprio cercare di ruotare anche le inerzie con un'apposita matrice... però effettivamente mi rendo conto che si appesantisce di molto la trattazione
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Ho trovato riscontro di quanto ho scritto precedentemente, in un paper americano reperito in rete.
    In questo paper è riportata la seguente assunzione in merito agli assi locali:

    7m7JExh



    La figura è accompagnata dal seguente testo descrittivo in cui viene anche data la matrice di trasformazione:

    JNeW7ju



    Sempre nel testo accompagnatorio è specificato che il sistema cosi scelto cade in errore quando la trave è verticale ed in questo caso si fa ricorso ad una scelta opportuna dell'angolo di roll.

    Vedrò di studiare meglio questo documento che mi pare risolva bene il mio empasse.
     
    Top
    .
396 replies since 26/9/2019, 22:11   16302 views
  Share  
.