28 febbraio 2019

Importazione PDF : 4 CAD a confronto

Quale è il migliore CAD per importare i PDF ? Un paio di test e qualche considerazione per capire cosa offrono i CAD per quella che, fino a pochi anni fa, era una operazione eseguibile solo con tools esterni.

Il test

Ho eseguito 3 tipi di test. Il primo, potremmo chiamarlo un self reverse engineering…, ho creato un PDF dall’interno di ogni CAD e poi l’ho reimportato.

Per il secondo test ho usato lo stesso disegno di riferimento ma ho stampato usando un driver non ottimizzato per il Cad: doPdf versiene 8.

Il terzo test è invece l’importazione di un disegno abbastanza complesso stampato su formato A4 e creato da un driver di stampa di Adobe InDesign.

Per il test ho predisposto un disegno (disegno_test.dwg) nel quale ho inserito vari oggetti geometrici al fine di verificare il diverso comportamento dei comandi di importazione. Gli oggetti sono:



  • cerchio
  • ellisse
  • spline
  • arco
  • polilinee aperte e chiuse
  • tratteggi con linee, pieno e sfumato
  • polilinee con spessore
  • testi con font di tipo SHX
  • testi con con TrueType e varie formattazioni
  • tipi di linea tratteggiati
  • linee con proprietà spessore (lineweight)
  • entità coprente (wipeout)
  • quota
I test sono stati eseguiti con i CAD AutoCAD, BricsCAD, ZWcad e progeCAD utilizzando i rispettivi comandi di importazione.

L’obiettivo è verificare la bontà degli algoritmi di riconoscimento e interpretazione dei dati vettoriali del PDF.
Il risultato ideale sarebbe quello di ottenere, al termine dell’importazione, gli stessi tipi di oggetti presenti nel disegno di origine.

I PDF

A proposito dei PDF è bene chiarire alcuni concetti:

La risoluzione
è espressa in DPI (punti per pollice) ed è una variabile importante per ottenere una importazione accettabile. Tanto più è alta tanto più la conversione del PDF è precisa.

I layer
In funzione del driver di stampa in PDF è possibile impostare una opzione per cui nel PDF di output, per ogni oggetto, venga aggiunta l’informazione del Layer di appartenenza (caratteristica introdotta con Adobe 6,0 nella versione di PDF 1.5) .
Solo 3 CAD oggetto di analisi dispongono di driver di stampa con questa opzione, in ZWcad non è presente.

I testi
I testi con font TrueType del CAD sono memorizzati come testi anche all’interno del PDF e questo garantisce una importazione sempre fedele con quanto era presente nel file DWG originario.

I testi disegnati usando font SHX (standard, simplex, txt ecc) non riescono ad essere codificati come testi all’interno del PDF e sono codificati come vettori.

Nei driver di stampa è possibile disabilitare l’esportazione di testi come font TrueType.

I risultati

Una prima conclusione importante a cui sono giunto è che il risultato dell’importazione dipende anche dal driver che ha codificato il PDF in fase di stampa.

Si ottengono infatti risultati diversi se il file PDF da importare e stato creato utilizzando driver sw forniti dal CAD tipo: “DWG to PDF.pc3” o “AutoCAD PDF (High Quality Print).pc3”, rispetto all'utilizzo di driver Adobe o di un freeware come doPDF.

In fase di importazione ho impostato le opzioni disponibili nel comando (o tramite variabili) per ottenere il migliore risultato.

Per quanto riguarda l'importazione degli oggetti su layer con i nomi originari è possibile farlo con progeCAD,  mentre AutoCAD e BricsCAD  antepongono il prefisso "PDF_" a quei nomi.
ZWcad offre solo l'opzione di disporre gli oggetti  su layer  dai nomi predefiniti in base alla tipologia (PDF_Geomertry, PDF_Images, PDF_Text e PDF_Solid Fills)

Per ogni CAD elenco i risultati dell’importazione evidenziando con sfondo rosso le trasformazioni fallite o imperfette e, con sfondo viola, quelle più o meno accettabili considerando quello che si può realisticamente ottenere dalle informazioni contenute nel PDF.

Nella 2a colonna sono descritti i risultati dell'importazione del file PDF creato dallo stesso CAD utilizzando un driver di stampa ottimizzato mentre nella 3a i risultati dell'importazione del PDF creato con il driver freeware doPdf che non è ottimizzato per le applicazioni CAD.

AutoCAD 2019

Il PDF importato è stato creato con il driver “AutoCAD PDF (High Quality Print).pc3”.
OGGETTO
TEST 1 driver di stampa proprio
importato come:
TEST 2 driver di stampa doPdf
importato come:
cerchio
cerchio
cerchio
arco
arco
arco
ellisse
ellisse
ellisse
spline
approssimata con polilinea
approssimata con polilinea
tratteggio
linee esplose
linee esplose
tratteggio pieno
tratteggio
tratteggio
tratteggio sfumato
immagine raster
numerose immagini raster
polilinea con archi e linee
polilinea con archi
polilinea con archi
polilinea con linee
polilinea con linee
polilinea con linee
cerchio tratteggiato
lineette disgiunte
lineette disgiunte
polilinea tratteggiata
lineette disgiunte tranne che per i tratti lineari
lineette disgiunte tranne che per i tratti lineari
linea tratteggiata
linea tratteggiata con tipolinea
linea tratteggiata con tipolinea
testo con font shx
polilinee disgiunte
polilinee disgiunte
testo multi linea con formattazioni
testi riga singola. la formattazione grassetto non  è stata riconosciuta
testi riga singola. la formattazione grassetto non  è stata riconosciuta
polilinee a spessore
solidi 2d
solidi 2d
proprietà spessore linee (lineweigth)
corrette
corrette
entcopr (wipeout)
tratteggio pieno
Immagine raster
quota
oggetti esplosi
oggetti esplosi

C’è da sottolineare che la mancata trasformazione dei testi con font SHX può essere risolta in AutoCAD tramite il comando TESTOSHXPDF (PDFSHXTXT) che ricostruisce l’oggetto testo.

Questo è il link per consultare il file .DWG relativo al TEST 1 di AutoCAD

BricsCAD 2019

OGGETTO
TEST 1 driver di stampa proprio
importato come:
TEST 2 driver di stampa doPdf
importato come:
cerchio
spline
polilinea
arco
spline
polilinea
ellisse
spline
polilinea
spline
approssimata con più spline
polilinea
tratteggio
linee esplose
linee esplose
tratteggio pieno
tratteggio
tratteggio
tratteggio sfumato
immagine raster
immagine raster
polilinea con archi e linee
polilinea con archi
Polilinee disgiunte
polilinea con linee
polilinea
polilinea
cerchio tratteggiato
lineette disgiunte
lineette disgiunte
polilinea tratteggiata
lineette disgiunte
lineette disgiunte
linea tratteggiata
lineette disgiunte
lineette disgiunte
testo con font shx
polilinee disgiunte
polilinee disgiunte
testo multi linea con formattazioni
testi riga singola. la formattazione sottolineato e barrato è fatta con linea
testi riga singola. la formattazione sottolineato e barrato è fatta con linea
polilinee a spessore
solidi 2d con aggiunta linea verticale nei vertici
Tratteggi disgiunti di forma rettangolare
proprietà spessore linee (lineweigth)
Non corrette
corrette
entcopr (wipeout)
tratteggio pieno
Numerose Immagini raster
quota
oggetti esplosi
oggetti esplosi

Riguardo a BricsCAD non si può non ricordare la presenza di un comando come BLOCKIFY che ha la capacità di individuare pattern geometrici identici tra gli oggetti selezionati e trasformarli in singoli blocchi.
In certe condizioni potrebbe funzionare bene con PDF importati al fine di ottimizzare il disegno e renderlo più leggero e gestibile.

Questo è il link per consultare il file .DWG relativo al TEST 1 di BricsCAD


progeCAD 2019

il driver di stampa della versione 19 di progeCAD ha una risoluzione massima di 1200dpi per i vettori, pertanto  per l’importazione ho utilizzato il pdf creato per AutoCAD che è a 2400dpi. 

OGGETTO
TEST 1 driver di stampa proprio
importato come:
TEST 2 driver di stampa doPdf
importato come:
cerchio
approssimata con spline
approssimata con polilinea
arco
approssimata con spline
approssimata con polilinea
ellisse
approssimata con polilinea
approssimata con polilinea
spline
approssimata con polilinea
approssimata con polilinea
tratteggio
linee esplose
linee esplose
tratteggio pieno
Tratteggio ma con spline triangolari per contorni
Tratteggi disgiunti di forma triangolare
tratteggio sfumato
Immagine raster
Immagini raster disgiunte solo parziali della figura originaria
polilinea con archi e linee
Polilinea con archi e linee ma disgiunti
Polilinea con solo tratti lineari per approssimare archi
polilinea con linee
polilinea con linee
polilinea con linee
cerchio tratteggiato
lineette disgiunte
lineette disgiunte
polilinea tratteggiata
lineette disgiunte
lineette disgiunte
linea tratteggiata
lineette disgiunte
lineette disgiunte
testo con font shx
polilinee disgiunte
polilinee disgiunte
testo multi linea con formattazioni
testi riga singola. la formattazione sottolineato e barrato è fatta con linea
testi riga singola. la formattazione sottolineato e barrato è fatta con linea
polilinee a spessore
tratteggi con aggiunta di spline triangolari per contorni
tratteggi disgiunti di forma triangolare
proprietà spessore linee (lineweigth)
Quasi corrette
corrette
entcopr (wipeout)
tratteggio pieno con aggiunta di spline triangolari per contorni
Numerose immagini raster
quota
oggetti esplosi
oggetti esplosi

Questo è il link per consultare il file .DWG relativo al TEST 1 di progeCAD


 ZWcad 2019 SP2

OGGETTO
TEST 1 driver di stampa proprio
importato come:
TEST 2 driver di stampa doPdf
importato come:
cerchio
approssimata con polilinea
approssimata con polilinea
arco
approssimata con polilinea
approssimata con polilinea
ellisse
approssimata con polilinea
approssimata con polilinea
spline
approssimata con polilinea
approssimata con polilinea
tratteggio
linee esplose
linee esplose
tratteggio pieno
Tratteggio ma con forma errata
Tratteggi disgiunti di forma triangolare
tratteggio sfumato
assente
Numerose immagini raster 
polilinea con archi e linee
Polilinea con solo tratti lineari anche per approssimare cerchi
Polilineea con solo tratti lineari anche per approssimare cerchi
polilinea con linee
polilinea con linee
polilinea con linee
cerchio tratteggiato
lineette disgiunte
lineette disgiunte
polilinea tratteggiata
lineette disgiunte tranne che per i tratti lineari
lineette disgiunte

linea tratteggiata
lineette disgiunte
linea tratteggiata con tipolinea ma con una lineetta sovrapposta
testo con font shx
polilinee disgiunte
polilinee disgiunte
testo multi linea con formattazioni
testi riga singola. la formattazione sottolineato e barrato è fatta con linea
Testi composti da un singolo carattere . la formattazione sottolineato e barrato è fatta con linea
polilinee a spessore
tratteggi
Tratteggi disgiunti di forma triangolare
proprietà spessore linee (lineweigth)
corrette
corrette
entcopr (wipeout)
tratteggio pieno
Molte Immagini raster
quota
oggetti esplosi
oggetti esplosi

Questo è il link per consultare il file .DWG relativo al TEST 1 di  ZWcad


L'altro test

Un bel file PDF creato con un software non CAD  ricco di oggetti rappresenta un ottimo test di importazione.
il PDF oggetto di importazione
Nei 4 file DWG che ho ottenuto risaltano subito all'occhio due risultati:

Il primo è una serie di 'refusi' ottenuti dall'importazione in ZWcad, nell'immagine seguente (a destra) si nota come ci sia una presenza di linee random all'interno e all'esterno della muratura sezionata.
a destra il disegno ricostruito da ZWcad che però presenta delle imperfezioni a cavallo del muro con l'isolante sezionato

Il secondo è la capacità del comando di importazione di AutoCAD di trattare le linee tratteggiate.
Molte linee tratteggiate sono state ricostruite perfettamente a differenza di quanto fatto dagli altri CAD.
in AutoCAD: la linea selezionata è una linea con tipolinea tratteggiato 


negli altri CAD le tante piccole linee per simulare la linea tratteggiata originaria

Un altro strano risultato è la presenza di linee inclinate sulla campitura sotto il pavimento: sono presenti in AutoCAD e ZWcad mentre, correttamente, non sono presenti in BricsCAD e progeCAD.

Oggetti che in origine erano archi non sono stati riconosciuti nemmeno da AutoCAD.

Un dato che mostra come ogni software dà la propria... 'interpretazione', è il numero degli oggetti generati:
  • ZWcad 20326
  • AutoCAD 37151
  • BricsCAD 40265
  • progeCAD 40485
Non è questo comunque un criterio per valutare l'efficacia di una trasformazione.
Un numero basso di oggetti può significare che alcuni oggetti non sono stati importati, oppure che alcuni oggetti sono stati ottimizzati come, per esempio, dei segmenti lineari contigui raccolti in una unica polilinea.

Questi sono i link ai disegni risultanti del Test3:
risultato_test3_autocad.dwg  risultato_test3_bricscad.dwg
risultato_test3_progecad.dwg  risultato_test3_zwcad.dwg


Riassumendo

Stilare una classifica è sempre difficile. Credo che ci possano essere altri parametri ed altre condizioni con le quali si sarebbe potuto continuare a testare e valutare le differenze tra i softwares.

La capacità di AutoCAD - quando possibile - di riconoscere gli oggetti originari come archi, cerchi ed ellissi è notevole. Resta curiuoso che il software dell'Autodesk non riconosca un testo in grassetto... cosa che fanno tutti gli altri.
Bisogna comunque segnalare la presenza di un comando come TESTOSHXPDF che converte i vettori dei testi con font SHX in oggetti testo.

Su un gradino intermedio ci sono BricsCAD e poi progeCAD.
In coda ZWcad visti alcuni errori e l'incapacità, a volte, di ripristinare i testi correttamente.
Bisogna comunque considerare che il comando è stato introdotto da pochissimo (ZWcad 2019 SP2  -gennaio 2019) ed ha ancora bisogno di test e miglioramenti.

I comandi di importazione

Di seguito una breve descrizione dei comand di importazione dei vari softwares.

Segnalo che i comandi di AutoCAD e Zwcad hanno anche la versione 'da linea di comando' senza finestra di dialogo, come BricsCAD.

La disponibilità di un comando senza finestre di dialogo ha il vantaggio che questo si possa utilizzare in procedure batch (uno script o un programma LISP), quindi  - in questo caso - per convertire un gran numero di PDF automaticamente.

AutoCAD: comando Importapdf

Il comando di importazione si basa sui criteri che sono descritti nel documento “Informazioni sull’importazione di file PDF

Una volta avviato il comando richiede se trasformare un eventuale PDF già inserito nel disegno o se selezionare un file presente su disco.

Dopo aver selezionato il file il comando mostra questa finestra di dialogo



dove nella parte sinistra ci sono degli elementi informativi riguardo al PDF:
  • il numero di pagine di cui è composto il PDF
  • l’anteprima, che supporta la visualizzazione delle miniature o della pagina intera. Questo è anche un ottimo strumento per sfogliare un PDF multi pagina. Si può commutare la vista delle anteprime da pagina singola a piccole immagini in maniera da avere un riscontro immediato sulla sua composizione;
  • le dimensioni della pagina che, in base al valore della variabile  MEASUREMENT,  può essere visualizzata in pollici o centimetri.

Nella parte a destra sono  raccolti i parametri per le modalità di inserimento e riconoscimento.
Il comando offre la possibilità di selezionare i tipi di oggetti da importare che sono distinti in 3 famiglie:
  • oggetti vettoriali (aree piene, segmenti lineari e curve)
  • testi con font TrueType
  • immagini raster (saranno salvate nella cartella specificata dalla variabile PDFIMPORTIMAGEPATH o selezionata tramite il pulsante Opzioni).
Prima dell’importazione si può ‘filtrare’ quali tipi di oggetti importare. Se servisse solo la geometria, ad esempio, si potrebbe togliere il segno di spunta da testi e immagini raster... è una maniera per ripulire il disegno già in fase di importazione.

Altre opzioni fornite dal comando sono:
  • la possibilità di inserire gli oggetti del PDF raggruppati in un unico blocco
  • unire archi e linee contigui in una polilinea;
  • convertire solidi 2D in tratteggi
  • mantenere o ignorare la proprietà Spessore linea (lineweight) degli oggetti
  • trasformare piccoli tratti lineari e collineari in polilinee aventi un tipolinea tratteggiato, in questo caso sarà creato un apposito tipolinea chiamato  “PDF_Import”,
Infine, la sezione dei layer: gli oggetti possono essere disposti :
  • sul layer corrente
  • su layer appositi in base al tipo di geometria ( PDF_Geometry, PDF_Solid Fills, PDF_Images, e PDF_Text.)
  • sui layer definiti nel DWG (e quindi nel PDF in fase di esportazione). A questi layer sarà anteposto il prefisso “PDF_”.

BricsCAD: comando Importapdf

Il comando di importazione di BricsCAD non ha una finestra di dialogo nella quale consultare lo stato delle impostazioni ed avere una anteprima del file PDF selezionato.

Si può comunque accedere ai parametri di importazione subito dopo aver selezionato il file da importare digitando “I” alla richiesta:
“Specificare il numero di pagina da importare o lista pagine [?/Impostazioni] <1>:”
oppure attraverso l’apposito comando  PDFOPTIONS.

Le variabili ricalcano le opzioni descritte in precedenza con il comando di AutoCAD,

Le successive 3 richieste:
“Specificare punto di inserimento<0, 0>: 
“Specifica scala<1.>:”
“Specifica rotazione<0.>:”
consentono di concludere l'operazione di importazione.

progeCAD: comando Pdf2cad

Il comando di importazione di progeCAD, a differenza dei precedenti, crea gli oggetti  importati in un altro file e non nel disegno corrente.
Si spiega così la presenza della casella ‘Destinazione’ nella quale si specifica il nome del file DWG di output.

Per i PDF multi pagina il comando crea un file DWG per ogni pagina aggiungendo il numero di pagine in coda al nome del file.

5 sono le opzioni regolabili per l’importazione:

- Riempimenti bianchi: oggetti pieni di colore bianco (ad esempio una Entcopr / Wipeout o tratteggi solidi) possono essere esclusi dall’importazione. In alternativa, oltre che importarli, si può scegliere se far generare solo i loro contorni definiti attraverso spline triangolari.

- Importa layer: 4 sono le possibili scelte: layer corrente, layer definiti nel PDF, raggruppamento oggetti in base al colore o raggruppamento oggetti in base a spessore linea.
t
- Spessore linea minimo (mm): rappresenta lo spessore (lineweigh) che sarà assegnato a tutti gli oggetti importati presenti nel PDF ed aventi uno spessore inferiore a quello minimo.

Quindi, ad esempio, impostando 0.5 le linee che hanno nel PDF spessore inferiore a 0.5 saranno convertite a quello spessore, le linee che hanno valori maggiore di 0.5 manterranno i loro spessori.

- Linee tratteggiate come segmenti: attivando questa casella il programma cerca di raggruppare i segmenti collineari di una linea tratteggiata in una unica linea avente tipo linea tratteggiato.

- Importa gli oggetti immagine: si può decidere se importare o meno le immagini raster inserite nel PDF.

Le immagini raster create sono salvate nella stessa cartella del disegno.

ZWcad: comando  Importapdf

Il comando di importazione di Zwcad mostra una finestra di dialogo del tutto simile a quella descritta per AutoCAD in precedenza.

Una differenza c’è nei layer di importazione che qui possono essere o il layer corrente o dei layer dal nome predefinito per ospitare la geometria in base al tipo.

Un aspetto negativo è che l’anteprima del PDF, anche se di una sola pagina, è mostrata molto in piccolo. Per il resto le opzioni di importazione sono tutte a vista e immediatamente percepibili. 

Nell’importazione di ZWcad le immagini raster vengono generate sotto forma di PNG nella cartella specificata dalla variabile  PDFIMPORTIMAGEPATH (accessibile anche tramite il pulsante Opzioni posto in alto).



Nessun commento:

Posta un commento