Il Bar dell'Ingegneria

Excel --> DXF

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

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Inizio con illustrare come poter utilizzare la consolle in un vostro foglio.

    - Aprite il vostro foglio
    - Aprite il file excel Progettodxf043g.xlsm (per excel 2007) o Progettodxf043g.xls (per excel 2003) che avete scaricato
    - Entrate in ambiente programmazione VBA mediante pressione di ALT+F11 (o in alternativa dal menu apposito)

    A sinistra saranno elencati entrambi i pogetti VBA; quello relativo alla consolle e quello (probabilmente vuoto) relativo al vostro file. Copiate tutti i moduli col nome DXF_*** dal progetto della consolle al vostro file mediante semplice trascinamento

    kcKIdDc

    In questo modo adesso il vostro file excel avrà tutto il codice che ho scritto in questi giorni.
    Vi manca solo la tabella che riassume la struttura dei dati. Poca cosa; potrete stamparla per averlasempre sott'occhio oppure trasferire anche questa nel vostro file.

    Per adesso penso sia preferibile trasferirla dal file della consolle al vostro file.

    Per trasferire anche il foglio, chiudere l'ambiente VBA e tornare in excel, selezionare il foglio della consolle e quindi ubicarsi sulla linguetta del foglio1. Qui premere col destro del mouse e scegliere la voce "Sposta o copia".

    jt54BQy

    Dal dialogo che appare selezionate:
    - cartella di destinazione: il vostro file
    - posizione del foglio: prima di qualsiasi foglio presente nel vostro file o anche in coda
    - attivate il box relativo alla copia. Questo è importante; se non lo attivate vedrete sparire il foglio dal file di origine che non potrà più essere utilizzabile per futuri altri trasferimenti.

    1xvM5jz

    Chiudete il file della consolle Progettodxf043g.xlsm e vi ritroverete col vostro file arricchito sia del codice che della tabella "campione".
    Io ho fatto le operazioni descritte su un file vuoto e me lo sonoritrovato con due fogli 1 ma il primo duplicato Foglio 1 (2). E proprio in quest'ultimo foglio duplicato ritrovo la tabella. Cambio il nome di questo in "Consolle" e lo sposto alla fine.
    Quindi pulisco l'intera tabella "campione" (non la tabella con la struttura dei dati) selezionandola tutta e premendo "canc".
    Ho eliminato anche la tabellina di esempio dei dati del profilo ad U (non serve più ed avrei dovuto toglierla io prima di pubblicarla) e mi ritrovo quindi con quanto illustrato:

    Z6fdt7M

    Adesso si inizia col primo esempio.
     
    Top
    .
  2.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Come primo esempio inizio da un semplice trapezio (che andrò via via complicando).

    Ma prima di iniziare mi sembra doverosa una premessa.
    Excel non serve per produrre disegni, quindi se lo scopo principale è quello di disegnare un qualcosa, consiglio di aprire direttamente il cad che usate ed iniziate a disegnare quel che volete.
    Cosi se si vuole disegnare un trapezio è praticamente da imbecilli aprire excel, dare l'input richiesto per il disegno di un trapezio, avviare la macro e vedersi disegnato il trapezio.
    Lo scopo di questa utilità è invece diverso: di base c'è un foglio in cui noi elaboriamo dei dati numerici per scopi che sono diversi da quelli del disegno oppure operiamo una qualche selezione da database di elementi che tra e altre cose sono caratterizzati da una forma geometrica, come per esempio la verifica di resistenza di una sezione di forma poligonale, o la verifica di una piastra forata, o la selezione di un profilato o ancora il calcolo delle sollecitazioni in una travata, et cetera. In questi casi in cui naturalmente il cad non potrebbe procedere a far nulla ma excel è bravo a dar di numeri ecco tornare utile la libreria di funzione della consolle volendo visualizzare la forma geometrica di quel che stiamo cercando di calcolare.
    Gli esempi che propongo potrebbero oscurare questo aspetto fondamentale e quindi il ricorso alle funzioni per comporre il disegno potrebbe apparire cosa da imbecilli.

    Primo esempio

    Si vuole disegnare un trapezio rettangolo (per adesso senza raccordi o smussi) che rappresenterebbe la forma di una piastra in acciaio che stiamo verificando.

    mgjwfAp

    Cosa c'è di più facile che non aprire Autocad e con quattro click disegnare il trapezio dato?
     
    Top
    .
  3.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    JVmbr7Y

    Predisponiamo nel nostro foglio le celle per i dati di input del trapezio. Se invece il vostro foglio è già esistente ed è dedicato ad un qualche calcolo che coinvolge un trapezio, allora da qualche parte avrete le celle coi relativi dati. Il discorso quindi non cambia, dovete solo localizzare dove sono i vostri dati di interesse e riferivi a quelli.

    Intendiamo disegnare il trapezio ricorrendo ad una serie di segmenti. Per evitar trasferimenti da una foglio all'altro, mi ricopio, prendendolo dal foglio "consolle" il rigo con le specifiche relative al disegno di un segmento e già che ci sono trasferisco il pulsante "crea dxf" nello stesso foglio in cui sto lavorando.

    Ho predisposto un foglio come da immagine che segue:

    29PN6m5

    Come vedete mi sono riportato il rigo della tabella descrittiva del formato relativo alla linea ma solo per averla presente e non dover fare un andirivieni tra fogli e poi ho preparato la tabella con le sedici colonne. AVrei potuto tranquillamente usare quella già presente nel foglio "consolle" ma per questioni di cattura immagini finalizzate all'illustrazione degli esempi ho preferito avere tutto nella stesso foglio

    Inseriamo i dati numerici dell'esempio.
    Siamo pronti a riempire la tabella per la creazione del file dxf

    Il primo rigo della tabella è destinato al nome del file
    - prima colonna: nome che vogliamo attribuire al file
    - seconda colonna: flag che indica se vogliamo che si apra il cad alla fine della creazione del dxf ( se posto 1 viene aperto il cad, altrimenti no)

    JQn7oh1
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Riempiamo adesso la seconda riga della tabella e siccome intendiamo disegnare il trapezio attraverso 4 segmenti, scriviamo nella prima colonna la parola chiave "linea".
    A partire dalla terza colonna vanno inserite le coordinate x,y e z del punto iniziale e di quello finale.
    Fissiamo che il punto iniziale sia in corrispondenza dell'origine quindi inseriamo 0,0,0 per il punto iniziale del segmento.
    Il punto finale avrà come ascissa la misura del lato maggiore. Inseriamo quindi la formula che fa riferimento al relativo dato di input.

    hFqbM2T

    Ma volendo poter variare le coordinate iniziali conviene esprimere le formule dei vertici successivi facendo riferimento alle coordinate di inizio.

    jmzoAlf

    5sEmq3t

    Completiamo il rigo relativo al primo segmento inserendo 0 per la z
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Passiamo al secondo segmento, lato BC del trapezio scrivendone i dati nel terzo rigo della tabella.
    Nella prima colonna del terzo rigo va la parola "linea" mentre, al solito, le coordinate d'inizio e fine segmento vanno dalla terza all'ottava colonna.
    Le coordinate iniziali del segmento sono uguali alle finali del segmento precedente. Scriviamo la formula:

    vf6pKA6

    e trasciniamola nelle due adiacenti.

    kxR9PMu

    Inseriamo con lo stesso criterio del riferimento relativo anche le coordinate finali del secondo segmento:

    rB1hQhF

    CnRCVn6

    Completiamo la tabella inserendo sempre con lo stesso criterio il terzo ed il quarto lato del trapezio, ottenendo quanto segue:

    c0MGUrO

    Per come abbiamo costruito la tabella, ogni modifica ai dati di input si ripercuoterà sui dati contenuti in tabella. Inoltre abbiamo anche la possibilità di variare il "punto di attacco" del trapezio variando le coordinate del primo punto. Io sono solito colorare in verdino lo sfondo delle celle modificabili.
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Siamo quasi pronti a premere il tasto "crea dxf". Occorre solo aggiornare il nome del range della tabella dati.
    Attualmente le sub si riferiscono alla tabella dati contenuta nel foglio "consolle".
    Dal menu Formule scegliamo la voce "gestione nomi".


    ZlWIhEO

    Dal dialogo selezioniamo il nome "Tabella" e procediamo alla modifica del riferimento.

    6BCo4UX

    Fatto questo possiamo procedere premendo finalmente sul tasto "crea dxf".
    Se tutto è andato bene (da me è tutto ok) dovreste veder aprire il vostro cad con disegnato un miserabile trapezio.
    Non avendo specificato nulla in merito al layer dove disegnarlo e nemmeno al colore della linea, lo vedremo disegnato col colore nero (o bianco se lo sfondo del cad è nero) e nel layer "0" di default.

    wvIqavS

    Per adesso è tutto, ma il disegno lo si poteva comporre ricorrendo ad una polilinea chiusa.
    Coi prossimi post illustrerò brevemente i passi per riempire la tabella con una polilinea, ma solo dopo aver complicato l'esempio introducendo un raccordo di raggio r nel vertice in B.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Complichiamo l'esempio inserendo un raccordo di raggio r=100 in corrispondenza del vertice B

    NwgQN3d

    L'inserimento del raccordo fa si che l'originario vertice in B si scinda nei due punti 1 e 2 corrispondenti ai punti di tangenza del raccordo.

    Decidiamo quindi di voler disegnare 4 segmenti ed un arco di cerchio. Poi farò l'esempio di disegno ottenuto con unica polilinea

    Predisponiamo allora nel nostro foglio ulteriore cella di input destinata a raccogliere il raggio del raccordo e nel frattempo ricopiamoci anche la struttura del rigo relativo all'arco

    xv8DbZR

    Non ci resta che aggiustare i dati della tabella sapendo che poco importa l'ordine di scrittura delle entità. Quindi metterò i dati dell'arco del raccordo come sesto rigo.

    Edited by afazio - 3/9/2014, 15:17
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Per evitare formule lunghe nelle celle prevedo una cella ausiliaria in cui calcolo l'angolo sotteso dalll'arco. Basta il ricorso alla funzione Arcotangente di excel. Quest'angolo è rilevante ai fini del disegno della polilinea dato che serve proprio quest'angolo per la determinazione del bulge.

    8LQ375r

    Con questo posso ricalcolare le coordinate delle estremità dei lati del trapezio raccordato (coordinate già inserite nell'immagine precedente).

    resta da inserire l'arco. Per queso servono le coordinate del centro del raccordo (facilmente calcolabili) e gli angoli di inizio e fine arco.

    Il rigo relativo all'inserimento di un arco si compone delle seguenti parti:
    - prima colonna: parola chiave "arco"
    - seconda colonna: vuota
    - terza colonna: coordinata x del centro dell'arco
    - quarta colonna: coordinata y del centro arco
    - quinta colonna: coordinata z del centro arco
    - sesta colonna: raggio dell'arco
    - settima colonna: angolo in gradi d'inizio arco misurato secondo un sistema equiverso a quello generale ma posizionato nel centro dell'arco
    - ottava colonna: angolo in gradi di fine dell'arco misurato secondo un sistema equiverso a quello generale ma posizionato nel centro dell'arco

    Infine le colonne 15 e 16 sono dedicate a contenere il layer dove disegnare l'arco ed il colore dell'arco.

    Possiamo completare i dati relativi al rigo dell'arco. Qui segnalo il fatto che ho preferito inserire l'angolo iniziale dell'arco negativo (-90° anzichè +270°). In questo modo è stato sufficiente sommare a questo l'angolo di sviluppo dell'arco.

    LfFpWg5

    Aggiorniamo il nome del range della tabella dato che adesso c'è un rigo in più e quindi possiamo premere il bottone "crea dxf" ottenendo quello che ci eravamo proposti di fare.

    Qui vi faccio solo notare che per come abbiamo impostato le formule, tutto funziona fin quando il lato minore del trapezio resta effettivamente minore. Se proviamo ad invertire le dimensioni del trapezio otteniamo un fantastico trapezio bitorzoluto.

    RHee1V1

    Se vogliamo genericità nelle dimensioni di b e B allora dovremo mettere più attenzione nella determinazione degli angoli e delle coordinate (che si traduce in un maggior numero di celle con la condizione =se(....)

    Trovate il file con l'esempio al seguente link file di esempio

    Edited by afazio - 3/9/2014, 20:56
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Vediamo come disegnare la piastra trapezia smussata ricorrendo alla polilinea anzichè all'insieme di segmenti ed arco.

    Per prima cosa riporto dalla tabella dei formati le righe relative alla polilinea. (ne bastano solo 2)

    kGIas9N

    Nel frattempo ho scritto in maniera diversa la formula che calcola l'angolo sotteso dal raccordo.

    Le righe relative al disegno di una polilinea si compongono di una prima riga con riportate:
    - nella prima colonna: parola chiave "polilinea"
    - nella seconda colonna: il numero dei vertici presenti nella polilinea
    - nella terza colonna: Flag che indica se la polilinea è chiusa (se posto 1 è chiusa, altrimenti è aperta)
    - nella quarta colonna: Flag che indica se trattasi di polilinea 2D o 3D. (allo stato attuale non attivo)
    - nella quindicesima colonna: il nome del layer dove disegnare la polilinea (se lasciato in bianco si assume il layer di default "0")
    - nella sedicesima colonna: il colore con cui disegnare la polilinea (se lasciato in bianco si assume il colore "bylayer")

    seguono tante righe quanti sono i vertici della polilinea. Una riga per ogni vertice.
    i dati di queste righe sono:

    - prima e seconda colonna: si può scrivere qualsiasi cosa; non veine letto dal codice.
    - terza, quarta e quinta colonna: coordinate x,y,z del vertice
    - sesta colonna: bulge del vertice.

    Da notare che per le polilinee 2D il valore della coordinate z è irrilevante. Viene imposta sempre a 0 da autocad.
    Per il significato del bulge vedere l'apposito topic "il Dilemma del bulge"
     
    Top
    .
  10.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Iniziamo a riempire le cinque righe relative ai cinque vertici della polilinea. Non lasciatevi ingannare dal fatto che un trapezio ne ha solo quattro di vertici, poiché l'inserimento del raccordo comporta l'inserimento di ulteriore lato (che poi verrà bombato divenendo un arco di cerchio dal valore del bulge)

    iNTy5qx

    Vediamo che le coordinate dei vertici sono praticamente quelle che avevamo determinato nel caso di dxf composto da segmenti. Basta quindi un po di cautela nello spostamento delle celle ed il riempimento dovrebbe essere immediato. Se invece stiamo partendo da una situazione ex-novo dobbiamo munirci di pazienza ed inserire le giuste formule.

    Riempiamo quindi la tabella con le formule che determinano le coordinate dei vertici avendo cura di riferirle alle coordinate del vertice iniziale (che quindi sarà considerato come punto di inserimento della polilinea):

    vHCbMIS

    Alla fine ricordiamoci di aggiornare il riferimento al range della tabella dei dati (abbiamo aggiunto un rigo rispetto a prima) e possiamo vedere l'effetto che fa premendo sul tasto "crea dxf"

    Notate che ho dato nella colonna 15 un nome del layer e nella colonna 16 il colore. Dovremmo riscontrarli anche nel disegno autocad.

    Edited by afazio - 3/9/2014, 21:06
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    La successione degli esempi che propongo è finalizzata ad illustrare le funzionalità offerte dalla consolle. Facciamo quindi un altro passo avanti.
    Vogliamo inserire dei contrassegni in corrispondenza del centro dell'arco del raccordo e dei punti di attacco dello stesso e tracciare anche i raggi nelle due estremità dell'arco.

    ElZDlpA

    Partendo dai dati fin qui costruiti adesso dobbiamo aggiungere tre contrassegni e due segmenti.
    Il contrassegno può essere costruito mediante la parola chiave "assi"

    Per il contrassegno possiamo utilizzare la parola chiave "Assi"
    Riporto dal foglio "consolle" il rigo relativo al formato dati degli "assi"

    Il rigo relativo agli assi è composto da:
    - prima colonna: parola chiave "assi"
    - seconda colonna: vuota
    - terza, quarta e quinta colonna: coordinate del centro del contrassegno
    - sesta colonna: dimensione lungo x di meta del segmento orizzontale del contrassegno
    - settima colonna: dimensione lungo y di meta del segmento verticale del contrassegno
    - ottava colonna: rotazione del contrassegno rispetto all'asse x

    Per il riempimento delle righe relative ai tre contrassegni e ai due raggi abbiamo gia praticamente tutto nei dati sovrastanti. Basta un po di attenzione e con quattro formulette di uguaglianza ce ne usciamo.
    Ricordiamoci sempre di aggiornare il riferimento al range della tabella dati. Inoltre se tentate di dare lo stesso nome del file che autocad tiene aperto otterrete errore di violazione.
    Nella prossima pubblicazione avrete la versione che gestisce l'errore.

    OXlhhSa

    Complichiamo le cose.

    Vogliamo inserire una serie di n fori di diametro d distribuiti su una circonferenza avente il centro a metà altezza e a metà del lato minore e raggio R.
     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Vi faccio notare che la modifica della formula per il calcolo dell'angolo sotteso dal raccordo adesso consente di poter variare a piacimento b rispetto a B cioè possiamo anche considerare un trapezio in cui il lato maggiore è disposto superiormente.

    egONkNe
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Le coordinate del centro del cerchio dove distribuire gli n fori sono:

    xc=min(B, b) /2
    yc= H/2
    zc= 0

    Per il disegno dei fori possiamo far ricorso alla parola chiave "cerchio"

    Predisponiamo ulteriori celle per l'input dei dati della foratura e riportiamo nel nostro foglio di lavoro il rigo della descrizione dei dati relativi al cerchio.

    kI7tZ18

    Il rigo relativo al disegno dxf del cerchio si compone di:

    - colonna 1: parola chiave "cerchio"
    - colonna 2: vuota
    - colonne 3, 4 e 5 : coordinate del centro del cerchio
    - colonna 6: raggio del cerchio
    - colonna 11: AxFlag- flag che indica se disegnare una coppia di assi in corrispondenza del centro (se posto 1 viene disegnata altrimenti no)
    - colonna 12: Kax: fattore che moltiplica il raggio del cerchio per ottenere la lunghezza di meta dell'asse
    - colonna 13: AxCol: colore col quale disegnare la coppia di assi
    - colonna 14: AxLay: layer dove depositare la coppia di assi
    - colonna 15: Layer dove depositare il cerchio
    - colonna 16: colore del cerchio.

    Al solito, se vengono omessi i dati relativi ai colori ed al layer verranno assunti quelli di default.

    Per il disegno degli n fori possiamo pensare di calcolarci le coordinate del centro di ciascun foro e quindi ricorrere ad n righe con la parola chiave "cerchio".
    Ma se n è dato come parametro, quindi variabile, non sappiamo quante righe dedicare alla distribuzione dei fori.

    Ed allora ecco che torna utile il comando "SerieCircFill" che esegue una serie polare distribuendo gli n elementi da un angolo di inizio ad un angolo di fine. Ho praticamente replicato il comando "serie polare" presente in autocad.

    Edited by afazio - 3/9/2014, 15:26
     
    Top
    .
  14.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Inserisco i dati relativi ad un foro (fittizio) ubicato nell'origine del riferimento

    EZDqaWU
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Administrator
    Posts
    8,163
    Reputation
    +294

    Status
    Offline
    Nel rigo sottostante inserisco i dati per eseguire la serie circolare riempitiva:

    k4uIs4Z

    Qui annoto che nella seconda colonna deve essere riportato il numero della riga della tabella dove trovare i dati sui quali eseguire il comando "serie circolare fill".

    Inoltre per adesso il parametro "FlRotaz" non è attivato. Consisterebbe nella rotazione degli elementi della serie.

    premendo sul tasto "crea dxf" si apre autocad col disegno che ci aspettiamo. Ma.. ma è presente un foro nell'origine che non dovrebbe esserci

    0gDG44B

    Allora inseriamo prima del rigo 17, che fa disegnare il foro fittizio nell'origine, il comando GoTo indicando come riga in cui saltare la riga 18. Qui si troverà il comando che esegue la serie.
    Naturalmente a questo disegno possiamo pensare di aggiungere altri elementi grafici come per esempio:
    - i contrassegni dei centri di ciascun foro
    - il cerchio sul quale si distribuiscono i fori
    - il raggio del cerchio

    al link che segue scaricate l'ultima versioend el progetto DXF all'interno del file di esempio.

    Ho apportato una lieve correzione nella procedura della serie circolare e gestito l'errore di violazione file in uso.

    Progetto Consolle DXF con esempio del trapezio

    Edited by afazio - 3/9/2014, 21:09
     
    Top
    .
153 replies since 23/8/2014, 14:58   15954 views
  Share  
.