Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

16
voti

Un regalo di Natale per gli amanti di FidoCadJ

I collaboratori del sistema Theremino sono felici di regalare agli electroyouisti un piccolo convertitore da immagini a FidoCad: la applicazione "Theremino ImgToVectors".

Buon Natale a tutti da Ennio, Roberto, Livio, Alessio, Leonardo, Lodovico, Marco, Massimo, Paolo e dai Makers del sistema Theremino.


Indice

Prima versione del convertitore

La conversione automatica da immagini a FidoCad non può produrre disegni belli e concisi come quelli di un vero artista, ma potrebbe essere utile per corredare gli schemi con piccole immagini, ad esempio un logo o un simbolo.

La base del convertitore attuale sono cinque algoritmi che si trovano nel modulo RasterToVectors della applicazione ImgToVectors . Sono algoritmi che avevamo già pronti e che utilizzavamo per semplificare e ripulire le immagini da tradurre in WMF (Windows Meta File) per poi usarle in macchine a controllo numerico. Non abbiamo utilizzato librerie ma li abbiamo scritti in VbNet puro, così da poter essere utilizzati a scopo didattico o tradotti in altri linguaggi e importati in altre applicazioni (ad esempio DarwinNE potrebbe in futuro introdurli in FidoCadJ).

Chi volesse dargli una occhiata può leggere questa copia del file Module_RasterToVectors. Ma chi pensa di intraprendere una conversione in un differente linguaggio farebbe meglio a scaricare VbNet 2008 e aprire il progetto completo in modo da avere una visione di insieme di tutta la nostra applicazione, come consigliato qui.

I primi quattro algoritmi trasformano i tratti del disegno in curve di Bézier equivalenti. Il quinto tenta di approssimare ogni sequenza di curve con la curva più lunga possibile, in modo da abbreviare il file di uscita, ma senza superare la tolleranza specificata dall'utente. Si tratta di algoritmi abbastanza complessi e scritti con attenzione, ma fanno quello che possono e questa è una conversione davvero difficile. Quindi le immagini devono essere adatte ed eventualmente pre-trattate con un programma grafico per ridurne la complessità. Non si possono convertire paesaggi ma solo disegni semplici.

Dopo la conversione si possono effettuare ritocchi con l'editor di FidoCad. Ad esempio è possibile minimizzare la lunghezza del file FCD conservando solo le curve che interessano ed eliminando tutto il resto.

Attualmente il convertitore tratta solo linee sottili, quindi niente aree riempite di colore. Se nelle immagini ci sono linee spesse queste vengono tradotte con linee doppie che racchiudono uno spazio vuoto. Per cui abbiamo dovuto fare dei compromessi. Abbiamo impostato lo spessore di due pixel per le linee ed è questo che le rende un po' "grassette". Inoltre non si possono poi "colorare" manualmente le immagini coma fa Zeno nei suoi esempi artistici.

Un certo miglioramento delle capacità di conversione potrebbe essere possibile nelle prossime versioni.

Sviluppi futuri

Oltre alle linee singole stiamo cercando di ottenere anche aree riempite di colore, in modo da permettere di colorare le immagini con lo stile che si vede in questo articolo.

Abbiamo fatto alcune prove usando la primitiva "CP" che non implementa vere curve di Bezier ma solo Spline multipunto senza parametri di regolazione. Le prove procedono con difficoltà a causa delle limitazioni imposte da FidoCad (mancanza delle regioni e limitazione del numero di punti per le spline) ma speriamo di trovare un modo per aggirarle nei prossimi giorni.

Quindi, se tutto va bene, ci sarà un secondo articolo con il regalo di capodanno.

Immagini di test

Le immagini seguenti sono un test delle capacità attuali del convertitore. Sono immagini abbastanza complesse per cui i codici FidoCad sono lunghi e rappresentano anche un test per le capacità di FidocadJ e del sito ElectroYOU.

Il sito ElectroYOU considera questa pagina piuttosto lunga ma la mostra senza problemi e la fa scorrere velocemente su tutti i browser che abbiamo provato. In effetti questi file FidoCad sono molto lunghi rispetto a quelli normali, ma la loro lunghezza non è poi così esagerata, vanno dagli 80 kbyte (il babbo natale) a 180 kbyte (il Peanuts3). Sono kilo-byte non mega, lunghezze irrisorie per i computer di questi anni.

Un consiglio: chi scrive articoli e fa fatica a scorrere il testo a causa delle molte righe FidoCad può spezzare l'articolo in paragrafi con titoli preceduti e seguiti da due o tre segni "=". In questo modo si possono editare indipendentemente e velocemente le parti dell'articolo che contengono solo testo, anche in presenza di codici FidoCad molto lunghi.

Lo hanno già scritto ripetutamente in questo sito ma è bene ricordarlo: Quando si vuole aggiungere un disegno FidoCad agli articoli si deve prima copiare e incollare il testo e poi premere il pulsante "Inserisci un circuito in FidoCadJ". Se si procede nell'ordine inverso il disegno non appare e si deve ricominciare da capo.

Nell'ultima parte di questa pagina sono disponibili le immagini originali in formato JPG per chi volesse fare dei confronti o usarle nelle prove di conversione.

Esempio dalla immagine Peanuts3.jpg


Esempio dalla immagine Peanuts2.jpg


Esempio dalla immagine Peanuts1.jpg




Immagini originali in formato JPG

Per chi volesse fare un confronto ecco qui le immagini originali:

SantaClaus.jpg

SantaClaus.jpg

Peanuts3.jpg

Peanuts3.jpg

Peanuts2.jpg

Peanuts2.jpg

Peanuts1.jpg

Peanuts1.jpg

22

Commenti e note

Inserisci un commento

di ,

:-) Pensate al sottoscritto che ha fatto il reverse engineering del formato originale di FidoCAD per Windows senza far girare il programma (non uso Windows). Il più complicato è stato gestire il testo, ruotato e specchiato!

Rispondi

di ,

...ma mancavano le librerie Eagle compatibili... Uno dei problemi sono proprio le librerie o meglio i componenti che hanno nome diverso da un software all'altro e sono anche diversi come dimensioni, ma abbiamo trovato una soluzione elegante e espandibile, un file di corrispondenze in formato testo che poi chiunque potrà espandere con nuovi componenti. I problema più terribile che ci rimane da risolvere sono le rotazioni e le riflessioni dei componenti che sono un vero casino, Fidocad ruota in senso orario e LTspice in senso antiorario ma c'è di peggio, quando si specchiano i componenti in FidoCad poi ruotano anche loro in senso antiorario, mentre in LTSpice ruotano sempre nello stesso senso, e infine ogni componente ha una origine diversa su un software rispetto all'altro e così quando li si ruotano e specchiano se ne vanno da tutte le parti. In confronto trasformare le immagini era uno scherzo. Speriamo di riuscirci per la befana, al massimo pubblicheremo una prima versione, che comunque sta già funzionando meglio di quel che si poteva sperare all'inizio.

Rispondi

di ,

Dimenticavo, nei commenti non è possibile inserire tags, purtroppo.

Rispondi

di ,

Complimenti Theremino!
Avevo fatto un convertitore da bmp a FidoCadJ tempo fa, però avevo utilizzato una libreria di best fitting che uso per lavoro, per adattare la palette dei colori ai 16 possibili su FidoCadJ, quindi non ho potuto rendere il codice pubblico. Si trattava però di immagini raster a puntini e non vettoriali. Good Job!

Rispondi

di ,

Che bello! Se può essere utile come informazione, avevamo provato tanti anni fa a fare un convertitore da FidoCadJ a Eagle, ma mancavano le librerie Eagle compatibili (o meglio, ce n'è stata una, ma incompleta). Vedi per esempio questa discussione

Rispondi

di ,

C'è una novità grandiosa, devo proprio scriverla. Non so dove scriverla per cui la scrivo qui. Oltre al convertitore da immagini a FidoCad con riempimenti, previsto per capodanno, ci sarà anche il regalo della Befana, un convertitore da LTSpice a FidoCad!!! Sembrava una conversione impossibile data la differenza di comportamento e librerie, e anche per la totale mancanza in FidoCad del concetto di "net" (reti di connessione). Per cui ci abbiamo provato così, tanto per provare, ma incredibilmente ci stiamo riuscendo. Non tutti gli schemi potranno venire perfetti, ma il convertitore può sicuramente fare la gran parte del lavoro.

Rispondi

di ,

La soluzione "giusta" sarebbe aggiungere le "region" come si fa nei file wmf e emf (Windows meta file e Enhanced meta file). Questo richiederebbe due nuovi tag di inizio e fine regione e in mezzo si potrebbero mettere sia spline che bezier, tutte belle ordinate una per riga. Noi generiamo già gli emf e la conversione viene perfetta, praticamente identica alla immagine originale. Ma penso che aggiungere due nuovi tag e pure le region sia chiedere troppo. In fondo per quello che serve questa conversione, piccoli disegni, si può usarla benissimo anche con il limite a 250 punti. Quindi rimandiamo tutto, tra qualche giorno pubblichiamo la nuova versione e poi si vedrà...

Rispondi

di ,

Le spline racchiudono un'area riempita. Dapprima abbiamo provato a spezzarle quando si approssimano a 250 punti ma vengono linee diagonali bruttissime. Quindi Abbiamo provato a spezzarle in punti strategici ma individuare questi punti in tutte le immagini più strane è difficile. Abbiamo provato vari metodi ma si vedono sempre delle brutte diagonali. Quindi l'unica possibilità rimanente è diradare i punti, ma i bordi si imbruttiscono molto. Tutto questo nasce dal fatto che un artista fa aree piccole, convenienti e sensate ma una immagine jpg ha invece spesso dei contorni interminabili, che fanno giri assurdi prima di chiudersi. In questi casi l'unica soluzione valida è ritoccare la jpg prima di convertirla, ma è scomodo e molti non saprebbero come fare.

Rispondi

di ,

Sì, dev'essere aggiornato anche sul sito, quello dipende da quando Admin ha tempo. Ma non è forse meglio spezzare le spline troppo lunghe?

Rispondi

di ,

Grazie della veloce risposta. Ma spiegami una cosa, una volta che avrete pubblicato bisognerà anche sostituirlo qui nel sito no? Nella attesa lasceremo il tappo a 250, in fondo si può usarlo anche come è adesso. Spiegheremo nelle note come fare a limitare la complessità dei disegni.

Rispondi

di ,

Dimenticavo. La prossima versione di FidoCadJ uscirà (se riesco) ad aprile 2017, quindi le eventuali modifiche non saranno disponibili per gli utenti prima di quella data a meno di ricompilarsi i sorgenti da GitHub.

Rispondi

di ,

Ok, cambierò il numero, non ci sono problemi. Però perché non me ne dimentichi, mi potete aprire una Issue in inglese su GitHub, per favore? https://github.com/DarwinNE/FidoCadJ/issues

Rispondi

di ,

Tutte le linee con Fidocad minuscolo sono corrette in FidoCad con la "C" maiuscola. Ma non sempre con la "J" finale, perché in parte si riferiscono a un formato FidoCad generico. Grazie di averci fatto notare la grafia corretta. Dare una mano lo stiamo già facendo. Abbiamo già lavorato una settimana e la seconda versione del convertitore ci darà da fare ancora per molti giorni. Poi però dovremo tornare a occuparci dei bachi nostri. Pensa che abbiamo oltre cinquanta applicazioni da coccolare e alcune di esse sono molto grandi. Ad esempio Theremino CNC (che sta diventando il successore di Mach3) e Theremino MCA (un analizzatore multicanale che in breve tempo è diventato la applicazione non commerciale più utilizzata al mondo per la spettrometria gamma). Inoltre c'è un problemino non da poco, nessuno di noi conosce Java e non siamo interessati a imparare a usarlo perché su Windows ha troppi piccoli difettucci: Dialogs non standard, per cui non si può utilizzare il tasto destro per cancellare o spostare i file, tanto per dirne uno; Applicazioni che non si riaprono nella stessa posizione di dove le chiudi; Un tempo esagerato per aprire le cartelle, etc... Per cui se non vai tu a cambiare quel 256 in un numero più grande (e non sembra un gran lavoro per chi ha scritto FidoCadJ) allora troveremo un modo per aggirare il problema. In realtà questo modo lo abbiamo già scritto e provato, tronchiamo le linee troppo lunghe a 250 punti e così perlomeno sparisce solo un pezzo di linea e non tutto il disegno. Facci sapere qualcosa entro qualche giorno, così se è il caso toglieremo il blocco a 250 punti prima di pubblicare la prossima versione. Scrivilo qui per piacere, non abbiamo il tempo di addentrarci anche in GitHub, grazie. Ti giro i complimenti anche degli altri nostri collaboratori per il FidoCadJ che è proprio leggero, semplice e comodo. Abbiamo pensato di usarlo anche noi nel blog del sistema Theremino, ma c'è anche un'altra idea che credo adotteremo. Ne parleremo presto con Zeno e se lui è d'accordo apriremo qui una sezione del forum sul sistema Theremino e dirotteremo qui tutte le nostre discussioni. Perché? Perché così FidoCadJ è già pronto ma anche, e soprattutto, perché questo sito per quel che riguarda la parte "social" è molto migliore del nostro (complimenti a Webmaster e Zeno).

Rispondi

di ,

Beh, si può fare tutto... il problema è che io ho poco tempo da dedicare a FidoCadJ (a proposito, questa è la grafia corretta). Vi interesserebbe dare una mano (non per forza per quello)? Ci sentiamo su GitHub?

Rispondi

di ,

Grazie, detto da te è un onore. Siamo a buon punto anche con la versione che permetterà di riempire e colorare le aree. Si potrebbe aumentare il limite di punti per le spline "CP", che ora è circa 255, e portarlo magari a 1023? O meglio ancora eliminarlo proprio?

Rispondi

di ,

Capperi che bello!

Rispondi

di ,

A quanto pare non si possono inserire codici Fidocad nei commenti.

Rispondi

di ,

QUESTO MESSAGGIO È UN TEST PER VERIFICARE L'INSERIMENTO DEI CODICI FIDOCAD NEI MESSAGGI ---------------------------------------------- [fcd] [FIDOCAD] FJC L 0 -16777216 1.0 FJC L 1 -16777216 0.3 CP 1 229 179 223 181 215 186 209 193 210 194 216 189 228 188 236 185 235 181 0 CP 1 230 194 222 195 214 199 206 204 200 213 199 219 203 214 213 206 228 204 239 203 241 200 238 196 0 CP 1 231 212 217 215 202 225 190 238 186 244 195 237 212 228 230 226 242 225 244 221 241 215 0 [/fcd]

Rispondi

di ,

Siamo a buon punto anche con le aree riempibili di colore e stiamo provando varie soluzioni. In tutti i casi i colori dovranno proprio aggiungerli manualmente i tuoi nipoti perchè sceglierli automaticamente dal disegno originale non sembra realizzabile. Abbiamo provato, ma l'interfaccia utente diventa troppo difficile da utilizzare e i colori "automatici" sono deludenti. Sembra quindi che la soluzione migliore sia predisporre sedici livelli di grigio trasparenti in modo da poter vedere, e quindi poter selezionare e colorare, le aree di tutti gli strati sovrapposti.

Rispondi

di ,

E per il riempimento a colori?
A parte gli scherzi, sai quanti disegni potrò far colorare ai miei nipoti
Davvero ottimo, grazie.

Rispondi

di ,

Ma che bravi!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.