Il Bar dell'Ingegneria

sagomario e DXF

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

    User deleted


    Ho notato che il progetto sagomario che ci sta in questa sezione e' ormai abbandonato a se stesso.
    Io vorrei apportare il mio contributo tentando la graficizzazione.

    Pongo pertanto il seguente quesito: quale e' la "forma" minimale d'un file DXF contenente i dati per il disegno d'una polilinea conoscendo le coordinate dei vertici?

    Io ho provato a tracciare una polilinea in autocad e poi esportare il tutto in dxf. Mi esce un file che non finisce mai. Forse perchè porta in se le varie impostazioni dell'ambiente autocad?
    E' possibile avere il format d'un file dxf per il disegno di una polilinea?

    P.S.: (17.02.2016) Il sagomario continua nella discussione...

    https://bar-ingegneria.forumfree.it/?t=66414904

    Edited by afazio - 17/2/2016, 13:05
     
    Top
    .
  2. ninja turtle
        +1   -1
     
    .

    User deleted


    purtroppo il dxf ha una specifica assolutamente devastante (nel senso che come ti sei reso conto produce un file lunghissimo).
    in buona sostanza è diviso in sezioni (se lo osservi noti che ci sono gruppi che iniziano con SECTION e finiscono con ENDSEC) e funziona secondo la regola che la riga dispari è il descrittore (un codice interno ad autocad) e la riga pari è il valore.
    le sezioni principali sono header (dove ci stanno tutte le variabili), tables (in cui sono tutti i gruppi di oggetti, come i livelli, le viste con nome, i tipi di linea), blocks (di significato ovvio) e entities (che sarebbe quello che ti interessa).
    il file deve poi finire obbligatoriamente con
    0
    EOF
    dove eof sta per end of file.

    quindi il frame minimo dovrebbe essere tipo:
    0
    SECTION
    2
    ENTITIES
    0
    LWPOLYLINE
    ... (definizione della polilinea)
    0
    ENDSEC
    0
    EOF


    dovrei avere un reference salvato da qualche parte.

    forse più che un export in dxf, sarebbe più sensato un vba che disegni il profilo direttamente in autocad (anche se questo ovviamente imporrebbe che per usarlo si dovrebbe possedere autocad full).

    altrimenti, l'altra maniera è generare, invece dell'orrido dxf, un file .scr (ovvero uno script, contenente la sequenza di comandi autocad necessari alla creazione del disegno).
    tale file può essere gestito anche da autocad lt e dai concorrenti autocad compatibili.

    Edited by ninja turtle - 25/1/2007, 19:25
     
    Top
    .
  3. TRATTORISTA
        +1   -1
     
    .

    User deleted


    scusate il piccolo off-topic: per ninja, se non ricordo male hai avuto qualche esperienza con intellicad per uso professionale. Come ti sei trovato? Io sto valutando l'acquisto per i disegni di carpenterie in cls, per editare i disegni delle armature, o, più in generale per tutti i disegni di strutture ed impianti (onestamente non mi occorre il 3D che non ho neanche interesse ad imparare, perchè per gli architettonici preferisco archicad e per il disegno meccanico, anche se non ne faccio più da un pezzo, ho sempre utilizzato SW parametrici 3D).
     
    Top
    .
  4. ninja turtle
        +1   -1
     
    .

    User deleted


    intellicad è un ottimo software, soprattutto se ci si limita a tavole non troppo complesse.
    ha due fondamentali problemi:
    -le prestazioni del motore quando si utilizza uno spazio carta con molte viewport (e io lo faccio sempre), che rende lo zoom con rotella (al quale sono assuefatto) piuttosto penoso
    -l'organizzazione dei driver di stampa che purtroppo è diversa dai .pc3 di autocad (e io ho un sistema automatico al quale non posso proprio rinunciare)

    Combinando, ho fatto la scelta di "fissarmi" su autocad 2002 e rinunciare all'aggiornamento annuale con cui autodesk taglieggia i suoi utenti (anche perchè dal 2006 il sistema di personalizzazione è cambiato totalmente, e non è capace di importare le vecchie, non le mie almeno, checchè ne spergiuri l'autodesk; poichè mi sono scritto nel tempo oltre 500 voci di menù, dovrei convertirmele una per una...).
     
    Top
    .
  5. ninja turtle
        +1   -1
     
    .

    User deleted


    vediamo di mettere un po' di carne al fuoco.
    qui si può scaricare il reference del formato dxf:
    http://www.autodesk.com/dxf

    ce n'è uno per ogni versione, ma la base è uguale. io consiglio il 2002 (è il più vecchio disponibile in pdf).

    qui invece c'è un rapido elenco dei codici di gruppo (di cui abbiam già parlato) e del loro significato:
    http://www.codec.at/x/unit_one/recherche/d...rder_dxf_01.htm

    come abbiamo detto il formato è organizzato in coppie di righe
    descrittore
    valore
    (descrittore è un codice dell'elenco precedentemente linkato, valore è il valore).
    Ci sono 4 macrosezioni principali (header, tables, blocks e entities), più altre accessorie (classes, objects, etc).

    a noi però interessa solo la sezione entities, quindi il file minimo sarà questo:
    CODICE
    0
    SECTION
     2
    ENTITIES
     0
    LINE
     5
    85
    100
    AcDbEntity
     8
    0
    100
    AcDbLine
    10
    137.0
    20
    138.0
    30
    0.0
    11
    139.0
    21
    140.0
    31
    0.0
     0
    ENDSEC
     0
    EOF


    dove ho utilizzato la definizione di linea, che è più semplice; il numero dopo 5 (d'ora in poi lo chiamerò codice 5) è l'handle (numero esadecimale univoco, diverso per ogni oggetto.
    il codice 8 è il layer (che per noi sarà sempre 0, altrimenti dovremmo aggiungere la sezione tables in cui dichiariamo i layer...); 10-20-30 e 11-21-31 sono le coordinate dei punti di inizio e fine della linea (che nel mio esempio va da 137,138 a 139,140).

    a questo punto, vediamo la definizione di un arco di cerchio:

    CODICE
    0
    ARC
     5
    28
    100
    AcDbEntity
     8
    0
    100
    AcDbCircle
    10
    137.0
    20
    138.0
    30
    0.0
    40
    10.0
    100
    AcDbArc
    50
    1.495916664837917
    51
    209.1998843249112


    questa volta 10-20-30 è il centro, 40 è il raggio
    50 e 51 sono gli angoli di inizio e fine (espressi in radianti); l'arco dell'esempio ha un angolo che va da circa -151° a +1° (supponendo che lo zero sia orizzontale verso est).

    La polilinea (lwpoliline) è un pochino più complessa:
    CODICE
    LWPOLYLINE
     5
    5A
    100
    AcDbEntity
     8
    0
    100
    AcDbPolyline
    90
           3
    70
        0
    43
    0.0
    10
    131.0
    20
    132.0
    10
    133.0
    20
    134.0
    10
    135.0
    20
    136.0
     0


    il codice 43 posto a zero indica che la polilinea non ha spessore.
    come si vede, si susseguono gruppi 10-20, 10-20, ciascuno dei quali rappresenta un vertice; la curvatura dell'arco deve essere fornita con il parametro cosiddetto bulge (codice 42).
    Dalla definizione della guida in linea:
    The bulge is the tangent of one fourth the included angle for an arc segment, made negative if the arc goes clockwise from the start point to the endpoint. A bulge of 0 indicates a straight segment, and a bulge of 1 is a semicircle.

    Dovrebbe esserci tutto.

    Edited by ninja turtle - 29/1/2007, 19:05
     
    Top
    .
  6. afazio
        +1   -1
     
    .

    User deleted


    CITAZIONE (ninja turtle @ 29/1/2007, 14:45)
    ....
    a noi però interessa solo la sezione entities, quindi il file minimo sarà questo:
    CODICE
    0
    SECTION
     2
    ENTITIES
     0
    LINE
     5
    85
    100
    AcDbEntity
     8
    0
    100
    AcDbLine
    10
    137.0
    20
    138.0
    30
    0.0
    11
    139.0
    21
    140.0
    31
    0.0
     0
    ENDSEC
     0
    EOF


    dove ho utilizzato la definizione di linea, che è più semplice; il numero dopo 5 (d'ora in poi lo chiamerò codice 5) è l'handle (numero esadecimale univoco, diverso per ogni oggetto.
    il codice 8 è il layer (che per noi sarà sempre 0, altrimenti dovremmo aggiungere la sezione tables in cui dichiariamo i layer...); 10-20-30 e 11-21-31 sono le coordinate dei punti di inizio e fine della linea (che nel mio esempio va da 137,138 a 139,140).

    Ho provato a copincollare il codice su notepad, registrare in dxf e richiamare da autocad. Funziona.
    Pero' poi mi sono chiesto: e se volessi disegnare un triangolo formato da tre linee?
    Per esempio il triangolo formato dai segmenti che congiungono i punti:
    [ 137.0 ; 138.0 ] - [ 139.0 ; 140.0 ] - [ 135.0 ; 139.0 ]

    Ho scritto pertanto il seguente:
    CODICE
    0
    SECTION
     2
    ENTITIES
     0
    LINE
     5
    85
    100
    AcDbEntity
     8
    0
    100
    AcDbLine
    10
    137.0
    20
    138.0
    30
    0.0
    11
    139.0
    21
    140.0
    31
    0.0
     0
    LINE
     5
    85
    100
    AcDbEntity
     8
    0
    100
    AcDbLine
    10
    139.0
    20
    140.0
    30
    0.0
    11
    135.0
    21
    139.0
    31
    0.0
     0
    LINE
     5
    85
    100
    AcDbEntity
     8
    0
    100
    AcDbLine
    10
    135.0
    20
    139.0
    30
    0.0
    11
    137.0
    21
    138.0
    31
    0.0
     0
    ENDSEC
     0
    EOF


    e .. non funziona.
    DOve sbaglio?
     
    Top
    .
  7. ninja turtle
        +1   -1
     
    .

    User deleted


    il codice 5 (handle): deve essere diverso per ogni oggetto.
    nel tuo caso è 85 per tutte e tre le linee, e questo manda autocad in tilt.
     
    Top
    .
  8. afazio
        +1   -1
     
    .

    User deleted


    CITAZIONE (ninja turtle @ 30/1/2007, 12:56)
    il codice 5 (handle): deve essere diverso per ogni oggetto.
    nel tuo caso è 85 per tutte e tre le linee, e questo manda autocad in tilt.

    eheheh... immaaginavo potesse essere l'identificativo dell'oggetto, ma in quel marasma di codici non sapevo proprio quale fosse. Infatti m'ero pure messo a cambiare a casaccio i codici che precedevano le parole chiavi line o AcDbEntity e anche AcDbLine, ma il risultato era sempre lo stesso.
    Piu' tradi provero' a disegnare quel rettangolo.

    Gia che ci sono: quale sarebbe invece il file minimo per una polilinea formata da soli segmenti di retta?

    bye
     
    Top
    .
  9. ninja turtle
        +1   -1
     
    .

    User deleted


    è quello che ho riportato come esempio di polilinea (il "bulge" lì non ce l'ho messo), aggiungendoci apertura e chiusura di sezione, e fine del file (EOF).
     
    Top
    .
  10. afazio
        +1   -1
     
    .

    User deleted


    CITAZIONE (ninja turtle @ 30/1/2007, 13:59)
    è quello che ho riportato come esempio di polilinea (il "bulge" lì non ce l'ho messo), aggiungendoci apertura e chiusura di sezione, e fine del file (EOF).

    Con le linee ci siamo. Non nriesco proprio a far leggere una polilinea.

    Queste sono le coordinate dei punti d'un profilo a doppio T molto schematico. Come faccio a scrivere le righe DXF?

    CODICE
    10
    180.0
    20
    380.0
    10
    280.0
    20
    380.0
    10
    280.0
    20
    370.0
    10
    250.0
    20
    370.0
    10
    240.0
    20
    360.0
    10
    240.0
    20
    200.0
    10
    250.0
    20
    190.0
    10
    280.0
    20
    190.0
    10
    280.0
    20
    180.0
    10
    180.0
    20
    180.0
    10
    180.0
    20
    190.0
    10
    210.0
    20
    190.0
    10
    220.0
    20
    200.0
    10
    220.0
    20
    360.0
    10
    210.0
    20
    370.0
    10
    180.0
    20
    370.0
     
    Top
    .
  11. gio..
        +1   -1
     
    .

    User deleted


    Ecco finalmente la versione del sagomario con la possibilita di poter creare il file formato dxf del profilo scelto.
    Per adesso e' possibile creare il dxf dei seguenti profili:
    - tutti i profili a doppio T con ali a facce parallele
    - gli angolari a lati uguali o disuguali
    - i profili UPN o qualsiasi a C con ali a facce non parallele
    - i profili a doppio T tipo IPN o similari stranieri.


    http://www.box.net/public/9e2uionpfx

    Procedimento:
    1- dal foglio selezione, scegliere il tipo di profilo e poi il profilo
    2- premere su Crea DXF, selezionare la cartella in cui si intende registrare
    3- variare se necessario il nome del file.
    Notare che qualsiasi estensione venga scelta per il nome del file, il programma la imposta sempre in *.dxf

    bye.
     
    Top
    .
  12. ninja turtle
        +1   -1
     
    .

    User deleted


    22 bytes, probabilmente c'è qualche problema nel file.
     
    Top
    .
  13. afazio
        +1   -1
     
    .

    User deleted


    CITAZIONE (ninja turtle @ 29/1/2007, 14:45)
    ....
    The bulge is the tangent of one fourth the included angle for an arc segment, made negative if the arc goes clockwise from the start point to the endpoint. A bulge of 0 indicates a straight segment, and a bulge of 1 is a semicircle.

    Il parametro bulge rappresenta la quarta coordinata del punto P del poligono ed e' dato dalla tangente del quarto dell'angolo sotteso dall'arco.
    Col parametro bulge in pratica si unisce il punto P al punto successivo della polilinea con un arco anzichè che con un segmento.
    Il parametro bulge e' negativo quando l'arco e' orario.

    image

    in questo esempio, le coordinate del punto P da inserire nel file DXF sono:

    CODICE
    10
    x
    20
    y
    30
    z
    42
    -tan(alfa/4)



     
    Top
    .
  14. gio..
        +1   -1
     
    .

    User deleted


    vediamo se si riesce a scaricare questo:

    http://www.box.net/public/ch49jstc7f
     
    Top
    .
  15. gio..
        +1   -1
     
    .

    User deleted


    Ecco la versione che consente di creare il dxf anche dei profili ad omega

    http://www.box.net/public/rhzdirxf9p
     
    Top
    .
44 replies since 25/1/2007, 18:52   13398 views
  Share  
.