Prima pubblicazione : Giovedì, Luglio 7, 2016

Salva articolo come PDF Il Mio lisp, Blocchi e Attributi

Quella che presento oggi è la bozza di un nuovo capitolo del libro, libero e gratuito, Il Mio Lisp, per la prossima edizione 2016.

Il Mio Lisp è un testo che parla di programmi come AutoCAD, progeCAD e compatibili, un libro che spiega come sviluppare applicazioni software utilizzando il linguaggio di programmazione Lisp.

Questo nuovo capitolo descrive i blocchi e le funzioni che li riguardano. I blocchi sono una parte fondamentale ed estremamente utile dei disegni CAD, semplici, potenti, funzionali ed estremamente efficienti, sono un potente strumento nelle mani di chi disegna.

In questo capitolo vedremo come sono fatti i blocchi, cosa sono e come sono fatti gli attributi, vedremo come modificarli e come interagire con essi guardando il tutto con l’occhio del programmatore.

Buona lettura…
[Continua a leggere…]

Prima pubblicazione : Martedì, Marzo 1, 2016

Salva articolo come PDF CAD, Visual Lisp e le sue funzioni

Quella che presento oggi è la bozza di un nuovo capitolo del libro, libero e gratuito, Il Mio Lisp, per la prossima edizione 2016.

Il Mio Lisp è un testo che parla di programmi come AutoCAD, progeCAD e compatibili, un libro che spiega come sviluppare applicazioni software utilizzando il linguaggio di programmazione Lisp.

Questo nuovo capitolo descrive Visual Lisp e le sue funzioni. Nato come estensione del classico Lisp implementato da AutoCAD, Visual Lisp è ormai presente in tutti i maggiori CAD.

Ciò che verrà spiegato permetterà di compiere operazioni, spesso molto utili, ma precluse al normale Lisp di base implementato nei CAD.

Buona lettura…
[Continua a leggere…]

Prima pubblicazione : Lunedì, Gennaio 4, 2016

Salva articolo come PDF LibreOffice e progeCAD… la creazione dei DWG

Dopo aver scritto un primo articolo per mostrare come leggere un file dwg utilizzando LibreOffice e progeCAD, oggi andrò un po oltre.

In questo articolo, sempre utilizzando esclusivamente LibreOffice e progeCAD, proveremo a creare un nuovo file dwg, inserendovi poi alcune entità grafiche.

In particolare, mostrerò come creare un nuovo disegno aggiungendo poi alcuni oggetti grafici. Però, per non rendere le cose troppo banali, creerò delle entità definite in un foglio di LibreOffice Calc.

La possibilità di leggere, modificare e creare file dwg apre nuove porte all’utilizzo di LibreOffice che può, in questo modo, andare oltre la sua normale funzione di suite per ufficio.

E quindi? Buona lettura con LibreOffice e progeCAD
 
[Continua a leggere…]

Prima pubblicazione : Martedì, Dicembre 22, 2015

Salva articolo come PDF LibreOffice e progeCAD si incontrano… ed è subito DWG

Dopo averlo scritto ho pensato “Che titolo del ca…volo!”. Si, per un articolo che parla di programmazione è un titolo inappropriato. Però… mi piace!

Ma veniamo a noi. Oggi parliamo della miglior suite di office automation in circolazione, LibreOffice. E parliamo del CAD che utilizzo, progeCAD. In realtà molti dei concetto espressi sono validi per molti altri CAD, come AutoCAD, BricsCAD, IntelliCAD e simili.

Ciò che voglio provare a fare oggi è semplice. Utilizzando il linguaggio Basic presente in LibreOffice, ed in particolare quello del modulo Calc, voglio ottenere una piccola tabella contenente l’elenco di tutte le entità inserite in un semplicissimo disegno salvato in formato DWG.

Non sono state poche le volte che mi sono sentito chiedere come interfacciare LibreOffice con un CAD per la manipolazione dei file DWG. Bene, credo sia arrivato il momento di fare una piccola introduzione all’argomento.

Nulla di particolarmente complesso, un po di concetti di base, qualche linea di codice Basic, alcune indicazioni aggiuntive, e il gioco è fatto.

E quindi? Buona lettura con LibreOffice e progeCAD

[Continua a leggere…]

Prima pubblicazione : Domenica, Novembre 22, 2015

Salva articolo come PDF L’insostenibile leggerezza della password di VBA

L’ambiente di sviluppo VBA è diffuso in moltissimi software. Lo troviamo in Microsoft Office, lo troviamo in AutoCAD, lo troviamo in molti altri software, e soprattutto in molti altri CAD.

Con VBA è possibile realizzare applicazioni per estendere e potenziare software più complessi.

Spesso, quando si creano applicazioni VBA, si ha la necessità di rendere inaccessibile il proprio codice sorgente, operazione che può essere fatta dotando i propri progetti di una password. L’ambiente VBA permette infatti di impostare una parola chiave di accesso ai sorgenti.

Questa password è sia un problema che un vantaggio. Un problema perchè è come se non ci fosse, un vantaggio perchè se la dimentichi… non ci sono problemi.

In questo articolo vedremo come recuperare la password dei nostri moduli VBA, nel caso in cui ce la fossimo dimenticata.

Buona lettura.
[Continua a leggere…]

Prima pubblicazione : Martedì, Novembre 17, 2015

Salva articolo come PDF CAD, Lisp e i testi multilinea

AutoCAD, progeCAD e tutti i vari cloni possiedono un tipo di oggetto molto potente, i testi multilinea.

I testi multilinea vengono utilizzati quando è necessario inserire, nei propri disegni, note ed etichette con una formattazione complessa o particolarmente lunghe.

Una delle caratteristiche particolari dei testi multilinea è la loro capacità di avere uno sfondo colorato. In questo articolo vedremo proprio come manipolare questo importante elemento accessorio.

Il linguaggio di programmazione che utilizzeremo è, ovviamente, il semplice Lisp. Naturalmente, i concetti esposto sono riutilizzabili anche in altre circostanze e con altri linguaggi.

Buona lettura.
[Continua a leggere…]

Prima pubblicazione : Lunedì, Ottobre 12, 2015

Salva articolo come PDF Prime Sketcher e i numeri primi

Tutto parte per gioco, dai numeri primi.

Questo progetto potrebbe essere inutile, oppure potrebbe essere un sistema per esplorare un aspetto affascinante del mondo dei numeri. Ma potrebbe anche essere solamente un sistema per creare immagini simpatiche. Per me è un progetto curioso e rilassante.

Tutto nasce dopo la lettura di un articolo che spiega un semplice algoritmo di disegno basato sui numeri primi.

Da tale articolo è nato Prime Sketcher, un software che ha lo scopo di rappresentare graficamente, in varie forme, i numeri primi.

Con semplici numeri, utilizzando un comune software CAD unito a Prime Sketcher, sarà possibile disegnare simpatiche e curiose forme geometriche.
[Continua a leggere…]

Prima pubblicazione : Domenica, Settembre 20, 2015

Salva articolo come PDF CAD : Blocchi, definizione di attributi e conversione file PLT

Oggi parliamo di CAD. Parliamo di disegni, attributi, blocchi. E poi vedremo come utilizzare i file PLT prodotti dal processo di stampa.

I CAD ai quali si possono applicare queste informazioni oltre ad AutoCAD sono, progeCAD, ZwCAD, Bricscad e tutti i CAD compatibili con questi software.

Questo articolo vuole essere la risposta a due domande che mi sono state fatte poco tempo fa. Iniziamo subito. Prima di tutto vediamo le domande.

Le domande

E’ possibile ricavare i codici dxf di un’entità ATTDEF a partire dall’entità ATTRIB senza esplodere il blocco?

Mi spiego meglio. Io ho un blocco con attributi e applico la seguente sequenza

(setq ent (car (entsel)))…..e ottengo il nome dell’entità blocco

md-center-70

si vede chiaramente che è un blocco con attributi. Passo al primo attributo…

(setq ent (entnext ent))

md-center-70

Si vede l’appartenenza dell’attributo (entità 7ef03e90) al blocco (entità 7ef03e88).

A questo punto vorrei accedere ai dati dell’attributo che sono i seguenti

md-center-70

Ma questi dati li ho ottenuti dopo aver esploso il blocco.

E’ possibile accedere a questa entità a partire dai dati dell’attributo senza esplodere il blocco?

E ora veniamo al secondo quesito…

E’ possibile inviare un PLT ad una stampante in modo che il risultato sia un PDF?

Ho realizzato una routine che mi genera tutta una serie di plt a partire da un gruppo di disegni che ho precedentemente selezionato. In aggiunta ho implementato una parte di codice che lancia questi plt con ViewCompanion. Come risultato finale ottengo tutta una serie di pdf che è una bellezza.

Ma devo usare ViewCompanion!

Ora, io sapevo che un plt era possibile stamparlo direttamente su una stampante (plotter) semplicemente con un comando dos (non ho mai provato). Penso che il comando fosse print qualcosa o un copy…. non so.

La domanda è : se al posto della stampante fisica io dirotto con un comando il plt verso la stampante virtuale che genera PDF, ottengo lo stesso risultato?

Vediamo ora le risposte..
 

Blocchi e definizione attributi

I file DWG e DXF, al loro interno, sono divisi in varie sezioni.

Normalmente si opera sulla sezione chiamata “ENTITIES” che include tutto ciò che l’utente disegna.

In questa sezione sono incluse tutte le entità di tipo INSERT, che non sono altro che gli inserimenti dei blocchi all’interno del disegno vero e proprio. Allo stesso modo, anche le entità di tipo “ATTRIB” sono presenti nella medesima sezione.

Per quanto riguarda i blocchi, esiste una sezione dedicata alla loro definizione. Questa contiene il come è fatto un blocco subito dopo averlo creato, è la sua definizione originale. Questa nuova sezione si chiama “BLOCK”.

E’ proprio nella sezione “BLOCK” che io posso trovare la definizione originale degli attributi, cioè le entità di tipo “ATTDEF”.

Supponiamo di avere un blocco di nome “PARTE” con due attributo, “CODICE” e “DESCRIZIONE”. Una volta inserito nel disegno, usando la funzione entget, ottengo questi dati :

md-center-70

Quelli che vediamo sono i dati del blocchi inserito nel disegno e, in questo esempio, i due attributi hanno un valore diverso da quello che avevano all’atto della loro definizione. Ovviamente, il valore degli attributi è stato modificato dopo aver inserito il blocco.

Ora, se noi volessimo accedere alla definizione originale di tali attributi, dovremo accedere alla sezione “BLOCKS”. In questa sezione dovremo andare a cercare il nostro blocco, usando il suo nome, “PARTE”.

Per trovare la definizione del blocco basta una singola istruzione :

(tblsearch "BLOCK" "PARTE")

in questo modo otterremo l’inizio della definizione del blocco “PARTE”. Una volta ottenuta la sua definizione, potremo estrarre il nome di entità dall’elemento -2 e con questo potremo scorrere tutti gli elementi che compongono la definizione del blocco, usando semplicemente la funzione entnext, questo finchè non incontreremo un elemento nil che indica la fine del blocco stesso.

Per chiarire la teoria, ecco una funzione che, dato il nome di un blocco, stampa la sua definizione prendendola dalla sezione “BLOCK” :

(defun printBlockDef ( name / ent blk)
    (setq blk (tblsearch "BLOCK" name))
    (if blk
        (progn
            (print blk)
            (setq ent (cdr (assoc -2 blk)))
            (while ent
                (print "---")
                (print (entget ent))
                (setq ent (entnext ent))
            )
        )
    )
(prin1)
);Enddef

Ecco come usarla sul nostro blocco di esempio PARTE :

(printBlockDef "parte")

Ed ecco il risultato :

md-center-70

In questo modo abbiamo accesso completo a tutte le parti della definizione di un blocco, sia attributi, sia entità grafiche.
 

I file PLT e la loro conversione in PDF

I file con estensione PLT, prodotti mediante un processo di stampa su file, sono una delle cose più incerte che si possano avere.

Prima di tutto cerchiamo di comprendere cos’è un file PLT prodotto da un’operazione di stampa su file.

E’ possibile, in qualunque software, dire al sistema che invece di stampare su una stampante fisica, io voglio stampare su file. Questa operazioni, solitamente, produce un file .PLT. Il pratica il PLT non è altro che il contenitore dei dati che, invece di essere inviati alla stampante, sono stati dirottati e salvati in quel file.

Cosa significa questo?

Significa che il contenuto del file PLT è nel formato della stampante, oppure sarebbe meglio dire che usa il linguaggio della stampante.

Quindi, ad esempio, se la nostra stampante è una HP, il file PLT conterrà dei dati in formato HPGL o HPGL/2. Se la nostra stampante invece utilizzasse il linguaggio Postscript, allora il file PLT conterrebbe dati in quel formato.

Vediamo adesso come fa un programma Windows a stampare :

[Applicazione] -> [Windows] -> [Driver Stampante] -> [Stampante]

Quindi, un software qualsiasi (Applicazione) dice a Windows cosa vuole stampare, usando il metodo previsto dal sistema operativo, metodo che vale per tutti i programmi. Windows riceve i dati e li passa al Driver Stampante che li trasforma in un formato comprensibile dalla stampante e quindi li invia alla stampante stessa, oppure li salva su disco producendo un PLT.

Bene. Con tutte queste informazioni, rispondiamo ora alla domanda. E’ possibile inviare un PLT ad una stampante virtuale in modo che il risultato sia un PDF?

La risposta è No.

Un PLT può essere inviato solamente a qualcosa che è in grado di interpretare i dati al suo interno.

E’ vero che io posso inviare un PLT direttamente ad una stampante. Ma lo posso fare solo se il modello della stampante è coerente con il driver usato per produrre il PLT. Inoltre questo è un invio diretto. I dati vengono mandati senza elaborazioni alla stampante fisica.

Tutte le stampanti PDF non sono altro che Driver in grado di trasformare i dati ricevuti da Window in PDF.

Se io mandassi un PLT a un driver PDF, questo non saprebbe che farsene, perchè non sarebbe in grado di interpretarli.

Proprio per questo, per convertire PLT in PDF, è necessario un software intermedio (es.: ViewCompanion) in grado di interpretare i dati del PLT e quindi convertirli in istruzioni accettate da Windows. Una volta fatto questo, potremo stampare su un’altra stampante fisica e su una virtuale che produce PDF.

Credo di aver detto tutto.

Per qualsiasi chiarimento o approfondimento è possibile commentare questo articolo… oppure è possibile inviarmi messaggi in privato, con il link in fondo alla pagina.

Prima pubblicazione : Domenica, Settembre 6, 2015

Salva articolo come PDF La nuova pagina per ‘Il Mio Lisp’

Il Mio Lisp É arrivata la nuova pagina dedicata al progetto “Il Mio Lisp”, il libro libero e gratuito dedicato alla programmazione con il linguaggio Lisp nei software CAD.

http://www.redchar.net/ilmiolisp

A parer mio, ogni tanto un rinnovamento è utile, soprattutto quando si parla di pagine web.

Però, il rinnovamento non deve essere fatto tanto per farlo o tanto per fare una pagina più bella graficamente. Il rinnovamento deve essere mirato a rendere la pagina più chiara e più utile per il visitatore.

Buona visione.

Prima pubblicazione : Domenica, Aprile 5, 2015

Salva articolo come PDF Il Mio Lisp, edizione 2015

Il Mio Lisp Il Mio Lisp. Il libro Libero sul linguaggio LISP e i software CAD.

Da oggi è online la nuova edizione 2015!

Il LISP, nonostante sia un ottimo linguaggio di programmazione in ambiente CAD, è purtroppo poco conosciuto.

Leggi -Il Mio Lisp-

E’ possibile scaricare l’intera opera, comprensiva di esempi.

Per quanto riguarda le novità, Vediamole insieme :

  • Ampliamento sezione relativa alla funzione “command”.
  • Nuova sezione su DCL.
  • Nuova copertina.
  • Riformattazione testo e restyling grafico generale.
  • Nuovo formato carta A5 per la stampa.
  • Revisione e correzione generale del testo.

Un grande ringraziamento va a due persone che hanno contribuito in modo determinante a questa nuova edizione. Senza il loro lavoro, la qualità di questo testo non sarebbe stata la stessa :

  • Elena Lombardo. L’autrice della grafica di copertina, ha inoltre contribuito al restyling grafico dell’intero libro.
  • Roberto Corona. Ha effettuato la revisione completa del testo.

Detto questo, non mi rimane che salutarvi e augurarvi Buona Lettura.

Prima pubblicazione : Lunedì, Novembre 4, 2013

Salva articolo come PDF CAD, Lisp e gli appunti di Windows.

cat_cad.png Oggi parliamo di CAD e linguaggio Lisp. In particolare affronterò lo scambio di dati con gli appunti di Windows (clipboard).

L’esempio fornito con questo articolo spiega, spero in modo chiaro, come poter scambiare testi con la clipboard del sistema operativo. Il codice è testato su AutoCAD ed implementa 3 semplici funzioni :

  • setClipboardText. Scrive una stringa di testo negli appunti;
  • getClipboardText. Legge una stringa di testo dagli appunti;
  • cleanClipboardText. Cancella gli appunti.

Queste procedure, già pronte all’uso, basano il loro funzionamento su un oggetto specifico del sistema operativo Windows, non sono quindi utilizzabili in altri ambienti.

Non ci resta che dare un’occhiata al codice vero e proprio:
[Continua a leggere…]

Prima pubblicazione : Lunedì, Agosto 26, 2013

Salva articolo come PDF Cos’è il Software Libero? Perchè dovrei utilizzarlo nel mio lavoro?

cat_gnu.png Oggi vedremo i motivi per i quali, un’azienda o un professionista debba affidarsi al Software Libero. Ma prima di fare ciò, cercheremo di capire cosa sia realmente il Software Libero, cosa lo differenzi dai comuni software commerciali e per quale motivo, questi ultimi, debbano essere accantonati.

Questa volta non sarò io a fare tutto ciò, sarà invece un professionista, che utilizza il Software Libero per il suo lavoro.

Sto parlando dell’architetto Marco Ferrara, che nell’aprile del 2013 ha tenuto un bellissimo webinar sull’argomento. In questo intervento, organizzato dall’associazione Aghape, ha spiegato i problemi del software commerciale, ha chiarito cosa sia realmente il Software Llibero, e come questo possa essere utilizzato per la progettazione, con un occhio di riguardo all’ambito della grafica 3D e del CAD in genere.

Auguro a tutti una buona visione…
[Continua a leggere…]