Newsgroup: it.comp.software.cad
Titolo: Formato DXF

Salve a tutti. Ho iniziato da poco un lavoro per una ditta che produce
macchine che lavorano marmo. Devo sviluppare un'utility che converta il
formato DXF in un formato compatibile con il loro. Avrei bisogno di
qualche informazione:
Quante versioni di DXF esistono?
Qual'è la più diffusa (magari nell'ambiente della lavorazione del
marmo)?
Esiste un programma free che mi permetta di creare semplici esempi di
DXF?
Grazie in anticipo

 Grazie in anticipo
DXF (Drawing Interchange Format). I file DXF sono file di testo contenenti
informazioni sul disegno che possono essere lette da altri sistemi CAD. Se
si lavora con consulenti che utilizzano un programma CAD che accetta i
file DXF, è possibile condividere un disegno salvandolo in formato DXF. 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:1141927325.5...@i39g2000cwa.googlegroups.com...


 ha scritto in news:1141927325.545275.283010
@
i39g2000cwa.googlegroups.com
:

Per la documentazione ufficiale sulle varie versioni di DXF (dalla V. di 
AutoCAD 13), guarda in fondo alla pagina:
http://rsoftware.altervista.org/index.php?mod=none_cad&file=ilmiolisp
-- 
Ciao.
Roberto Rossi
Web   : 
http://rsoftware.altervista.org

DXF?
L'OpeDesign Consortium ha svilupapto un toolkit per l'implementazione
di funzioni di lettura e scrittura di file DWG/DXF.
il sito è 
www.opendwg.org
.
Per leggere, invece, le specifiche del formato DXF, vai su
http://usa.autodesk.com/adsk/servlet/ps/item?id=2882295&linkID=2475323&siteID=123112

Grazie proverò subito il programma che mi hai consigliato

 Grazie proverò subito il programma che mi hai consigliato
HAI scritto :
Devo sviluppare un'utility che converta il
formato DXF in un formato compatibile con il loro
ma IN QUALE FORMATO devi convertirli ?


 wrote in message
news:1141979794.3...@v46g2000cwv.googlegroups.com...
Grazie proverň subito il programma che mi hai consigliato

E' un formato utilizzato nelle loro applicazioni basato su xml.

 senso che tutte le applicazioni che leggono il DXF lo leggono bene.
esatto ...il 12, per il resto io continuo a sostenere che ormai il dxf non è
più uno standard, ma una specie di "dwg aperto" di autocad..... secondo me
non è neanche più giusto che lo chiamino dxf.
Non dovrebbe infatti, il dxf, essere uno "standard" che segue delle
specifiche dettate da un consorzio?
Da quando ci sono i solidi, addirittura parti del dxf sono criptate, altro
che standard!

 che standard!
Non sono criptate, sono scritte solo "in un certo modo".
-- 
----------------------------------------------------------
Marc'Antonio Alessi - 
http://xoomer.virgilio.it/alessi
Per AutoCAD:
- Travi 2D: disegno automatico travi e pilastri in C.A.,
  relativi ferri e staffe, report peso ferri e C.A.
  su Excel
- Calcolo automatico aree su planimetrie: report su Excel
  per locale altezza, piano con descrizioni locali e piani
- Elaborazione dati from/to Excel
- Librerie manufatti in assonometria
- Autolayers: gestione automatica dei layers
- Elaborazioni e stampe multiple e automatiche
- Parametrico 2D, Viterie 2D/3D, Esplosi 2D/3D
- AutoGroups: gestione automatica gruppi di layers
- SetUp del disegno con gestione automatica DimStyles
- Conversione automatica files Inventor a DWG e viceversa
  anche senza avere Inventor installato
- ...
----------------------------------------------------------

 ed č un formato proprietario.


 dei solidi criptati), per me quella parte è criptata.
Prova questa funzione, si ottiene un output simile a quello
generato con l'esportazione SAT (file Acis):
(defun C:ALE_AcisDecode ( / EntNam EntDat)
  (if (setq EntNam (entsel "Seleziona solido Acis:  "))
    (progn
      (terpri)
      (setq EntDat (entget (car EntNam)))
      (foreach ForElm (ALE_Massoc 1 EntDat)
        (princ (ALE_TraceAcis ForElm)) (terpri)
      )
    )
  )
  (princ)
)
(defun ALE_TraceAcis (In_Str / OutStr PfxStr)
  (setq OutStr "")
  (while (> (strlen In_Str) 0)
    (setq
      PfxStr (substr In_Str 1 1)
      In_Str (substr In_Str 2)
      OutStr (strcat
               OutStr
               (if (= " " PfxStr)
                 ""
                 (chr (- 79 (- (ascii PfxStr) 80)))
               )
             )
    )
  )
)
(defun ALE_MAssoc (DxfKey ImpLst / TmpLst OutLst)
  (while (setq TmpLst (assoc DxfKey ImpLst))
    (setq OutLst (cons (cdr TmpLst) OutLst)
          ImpLst (cdr (member TmpLst ImpLst))
    )
  )
  (reverse OutLst)
) 

così non è.
Il tuo ragionamento ha tutto un senso logico, ma si basa su un punto
fallace.
Il DXF non è uno standard, è semplicemente un formato aperto che
Autodesk ha creato per l'interscambio dei dati da e verso i suoi
programmi DWG-compatibili. Questo cosa vuol dire? Semplicemente che
Autodesk ne fa ciò che vuol, fermo restando che per buone parti del
file sono presenti le specifiche, per cui terze parti possono leggerlo
e scriverlo.
Questo si traduce nel fatto che il DXF non è uno standard, lo è
diventato di fatto per due ordini di motivi, il primo è che AutoCAD
rappresenta il cad più diffuso, ed il secondo è che NESSUNO si è mai
messo a scrivere, non solo un formato aperto di interscambio (uno
standrad) , ma neppure un formato aperto per poter importare esportare
i dati dalla sua applicazione.
In pratica, solo Autodesk si è sforzata a fare un formato che si
avvicinasse ad essere l'Esperanto del CAD, ma ne Nemetschk, ne
Bentley, ne nessun altro ha fatto un formato che permettesse di
interpretare i dati dei propri CAD generici.
Certo, ci sono standard per altri settori, come la meccanica, dove
l'IGES, lo STEP ed altri formati la fanno da padrona, oppure l'AEC
dove sta fortemente scalando il formato IFC, ma per i CAD generici, il
DXF rappresenta lo standard de facto, fermo restando che bisogna
ricordare che è di proprietà dell'autodesk che ne può fare,
giustamente, ciò che vuole.

Ho un dubbio sulle SPLINE. Da quel che ho capito sono una
generalizzazione delle curve di bezier, analizzando
esempi di dxf ho notato che le entità SPLINE. Esse hanno però più di
un punto di controllo. Come le interpreto dal
punto di vista di una curva di Bezier cubica o quadratica? Posso
prendere i punti di controllo a gruppi di tre-quattro punti
consecutivi?
Ci sono poi altri parametri che non rientrano nella definizione di
curva di Bezier: knots e fit points.
Chi può dirmi come li devo interpretare?

 ha scritto nel messaggio
news:1143053360.7...@v46g2000cwv.googlegroups.com...


Chi puň dirmi come li devo interpretare?
Allora, andiamo per gradi, una Spline č una curva di Bezier a tutti
gli effetti. Viene definita indicando i punti di controllo, e poi se č
quadratica o cubica, questo lo si fa, in AutoCAD, mediante una
variabile, che viene mantenuta nel file attraverso i codici di gruppo
seguenti:
100	Contrassegno di sottoclasse (AcDbSpline). 
210	Vettore normale (omesso se la spline non č planare). DXF:
valore X; APP: vettore 3D
220, 230	 DXF: valori Y e Z del vettore normale (opzionale)
70	 Flag di spline (codificato in bit):
		1 = spline chiusa
		2 = spline periodica
		4 = spline razionale
		8 = Piano
		16 = spline lineare (č impostato anche il bit di
spline planare) 
71	Grado della curva spline.
72	 Numero di nodi.
73	Numero di punti di controllo.
74	 Numero di punti di adattamento (se presenti).
42	Tolleranza nodo (default = 0,0000001).
43	Tolleranza punto di controllo (default = 0,0000001).
44	Tolleranza di adattamento (default = 0,0000000001).
12	Tangente iniziale; puň essere omessa (nel sistema WCS). DXF:
valore X; APP: punto 3D
22, 32	DXF: valori Y e Z della tangente iniziale, possono essere
omessi (nel sistema WCS)
13	Tangente finale; puň essere omessa (nel sistema WCS). DXF:
valore X; APP: punto 3D
23, 33	 DXF: valori Y e Z della tangente finale, possono essere
omessi (nel sistema WCS)
40	Valore del nodo (una voce per ogni nodo).
41	Spessore (se diverso da 1); con piů coppie di gruppi, presenti
se tutti i valori sono diversi da 1.
10	Punti di controllo (nel sistema WCS); una voce per ogni punto
di controllo. DXF: valore X; APP: punto 3D
20, 30	 DXF: valori Y e Z dei punti di controllo (nel sistema WCS);
una voce per ogni punto di controllo
11	Punti di adattamento (nel sistema WCS); una voce per ogni
punto di adattamento. DXF: valore X; APP: punto 3D
21, 31	 DXF: valori Y e Z dei punti di adattamento (nel sistema WCS);
una voce per ogni punto di adattamento.
Da quello che vedi, č il flag 71 a definire il grado della curva
spline (se quadratica = 2, se cubica = 3).

Ok, però il mio problema è associare la definizione di curva di
Bezier  cubica e i dati presenti nel DXF.
Ad esempio da wikipedia leggo che per definire una curva cubica sono
necessari 4 punti.
Ho sottomano un esempio con:
grado:3
N. punti di controllo:11
N. punti di adattamento:7
Come devo interpretare questi dati? Quali sono i 4 nodi della
definizione standard?
Visto che si tratta di curve tangenti a segmenti, devo prendere 4 nodi
consecutivi (segmenti s1,s2) e poi mi sposto di due punti (considero
s2,s3)?
o sto sbagliando tutto?

o sto sbagliando tutto?
Hai sbagliato tutto, o almeno cosě mi sembra di capire.
Fammi capire qual'č il tuo problema, cosě ci muoviamo capendo di cosa
trattiamo.

Ok. Cerco di spiegarmi meglio.
La definizione di curva di Bezier (cubica) richiede 4 punti:
p0,p1,p2,p3.
La curva risultante è tangente alla linea che passa per p0,p1 e
tangente alla linea che passa per p2 e p3.
In un file dxf posso trovare spline con molti più punti di controllo e
diversi punti di adattamento.
Quali sono i 4 punti fra questi?



Allora, il punto è che il DXF li gestisce in modo diverso.
Per fare lo stesso risultato, hai bisogno di 3 punti e
dell'informazioni su che tipo di curva devi fare.
Per esempio, pensiamo ad una parabola.
Io ho il punto A, il punto B, ed il punto C, che è la congiungente le
tangenti, si ottiene congiungendo A e B, individuando il punto mmdio
M, da questo abbassandosi del doppio della distanza del punto in cui
si vuole che passi la parabola, si ottiene il punto C.
Ebbene, per ottenerla in DXF, devi creare una spline con i 3 punti, e
con l'indicazione (mediante il flag 71) che la curva è quadratica.
Se hai una curva comunque complessa, aumenteranno i nodi di controllo,
la congiungente tra i nodi sarà la tangente alla spline.