17 giugno 2018

Come proteggere un file DWG

Più volte mi è capitato di leggere sui forum richieste riguardo la possibilità di ‘proteggere’ il disegno. Per protezione si intendeva la capacità di rendere non editabili e non riutilizzabili parti del disegno...

[ultimo aggiornamento 28-02-2024: link al programma NOEDIT]

Questo strano desiderio di ‘sabotaggio’ dei propri disegni sorge quando ci si trova costretti a cedere malvolentieri i propri DWG. Cederli, per esempio, a clienti che non hanno ancora pagato o quando, la cessione dei file DWG sorgenti non era nei patti e... non è possibile dire di no.

Scopriamo quello che si può fare, con alcuni programmi freeware, per salvaguardare in qualche maniera il frutto delle proprie ore di lavoro e rendere difficile il riutilizzo e l’editazione dei disegni.  sebbene le funzioni di esportazione e importazione di PDF (sempre più prestanti nelle ultime versioni dei CAD), invalidino parzialmente alcune delle tecniche descritte di seguito.

Trasformare le entità

Il programma XLOCK.LSP è stato scritto da KozMos Inc. e quello che fa è, a mio avviso, geniale.
Il programma si occupa di trasformare le linee presenti nel disegno in testi. Alcuni di voi penseranno di aver letto male… si, proprio TESTI. Ma come lo fa?

Occorre un piccolo ripasso riguardo i metodi di giustificazione dei testi. Oltre che ai classici allineamento a sinistra, a destra, centrato esiste anche l’ADATTA (Fit).
Con la giustificazione ADATTA il testo viene ‘spalmato’ fra 2 punti.
a sinistra un testo allineato a sinistra, al centro un testo allineato al centro ed a destra il testo adattato tra 2 punti. Notare come il sottolineato (tra T e .) si estenda come una liinea
Immaginate di ‘spalmare’ un testo ‘lineare’ fra i 2 punti . Un testo che assomigli ad un segmento lineare può essere un “-“ma ancora meglio se si utilizza il sottolineato su uno spazio vuoto (codice %%u ”_”).

Usando uno stile di testo con il font txt.shx il risultato che si ottiene è un testo perfettamente sotteso tra i 2 punti dati.

Il programma sostituisce tutte le linee con testi adattati che partono dal punto iniziale delle linea sino al punto finale. Le polilinee presenti sono esplose e le linee risultanti anch'esse trasformate.
In questa maniera il disegno non è editabile con i classici comandi in quanto, dove ci si aspetta di trovare un oggetto linea c’è un testo.  Provate a dare una occhiata al classico disegno di AutoCAD DB_SAMP.DWG che ho trasformato.

Il programma è stato originariamente pubblicato nel 1993. In rete ne esiste una versione aggiornata che trasforma anche le linee contenute nei blocchi e esplode i TESTIM,  MLINE, QUOTE. In questa revisione però ho riscontrato qualche bug in fase di reinserimento dei blocchi.

Vedere cosa ha modificato

Il programma fornisce 2 comandi supplementari, XL0 e XL1, che commutano i testi creati aggiungendo o rimuovendo la sottolineatura. In questa maniera è possibile percepire immediatamente quali oggetti sono stati trasformati.

I limiti del programma

I cerchi, archi e le ellissi restano immutate. Le linee tratteggiate non sono gestite, nel senso che la loro informazione di Tipolinea si perde.

Trasformare i blocchi dinamici

Per i blocchi dinamici, frutto del proprio ingegno e fantasia, una piccola protezione può essere fatta tramite il programma DB2SB.VLX, creato da XANADU.
Con DB2SB (cioè Dynamic Block to Single Block) si possono trasformare i blocchi dinamici inseriti nel disegno in blocchi statici (non più con le proprietà dinamiche).
Una volta caricato il programma DB2SB, occorre selezionare ogni singolo blocco dinamico presente.

Attenzione però:  in memoria la definizione del blocco dinamico è sempre disponibile. Pertanto, con un nuovo inserimento del blocco, saranno disponibili tutte le sue proprietà dinamiche originarie.

Blocchi non editabili e non esplodibili

Per definizione tutti i blocchi anonimi non sono editabili con l’editore di blocchi (comando MODIFBLOC).
Un programma per trasformare i blocchi o anche altri oggetti in un blocco anonimo è DETER.VLX.
Il programma aggiunge agli oggetti selezionati una complicazione in più: rende il blocco che li include non esplodibile con il comando Esplodi.

Il programma è realizzato da  Dotsoft (http://www.dotsoft.com).

Attenzione però: in caso di selezione di un blocco normale esso sarà trasformato in blocco anonimo ma la definizione del blocco originale resterà comunque presente nel disegno... e sarà quindi re-inseribile!


Questa funzionalità è presente anche in GStarCAD. Nel menù degli Express Tools del programma si trova il comando ‘Blocca disegno’.
il comando Blocca Disegno negli Express tools di GStarCAD

Esplodere blocchi con attributi

Se invece si vogliono esplodere dei blocchi, per completare l'azione di sabotaggio, nel caso in cui questi abbiano degli attributi, l'informazione inserita nell'attributo andrebbe persa.

Come si sa, quando si esplode un blocco con attributi, gli attributi tornano oggetti di 'definizione attributo' e mostrano il nome dell'etichetta.

Utilizzando il comando BURST, presente negli Express Tools di AutoCAD e altri CAD, si ha la possibilità di limitare questa azione distruttiva. Burst esplode il blocco ma trasforma gli attributi in semplici testi contenenti i valori degli attributi.
l'icona del comando BURST negli Express Tools

Il sistema di ZWcad

Il sistema adottato da ZWcad è leggermente più raffinato. Con il suo comando BLOCCA (LOCKUP) crea sempre un blocco anonimo ma richiede anche una password. La password serve per ‘sbloccare’ gli oggetti con l’apposito comando di sblocco SBLOCCA (UNLOCK).
i comandi Blocca e sblocca disegno negli Express Tools di ZWcad
Naturalmente questo meccanismo funziona solo se i disegni si aprono con ZWcad. Se il disegno è aperto con un qualsiasi altro CAD ci si trova di fronte ad un semplice blocco anonimo così come creato da DETER.VLX descritto in precedenza.

Il mio "NOEDIT"

Recentemente ho sviluppato un programma che elabora il disegno con varie 'azioni di disturbo'  rendendo davvero difficile l'editing del disegno.


Le varie azioni possono poi essere inglobate in un blocco anonimo davvero dificile da esplodere  (provare per credere). Non mi dilungo... per altri dettagli visita la pagina  di NOEDIT.


Qualche considerazione

Se si pensa a quanto accade con alcuni formati di Microsoft Office (.xls, .doc) dove è possibile impostare il contenuto di un file per la sola lettura senza la possibilità di apportare modifiche ci si chiede:
Ma perché AutoDESK - creatrice del formato DWG - non ha mai implementato internamente un meccanismo di protezione con la modalità ‘a sola lettura’ relativa agli oggetti disegnati ?

Eppure il meccanismo non sarebbe difficile da implementare. C’è già. È quanto avviene con i PROXY Object creati da applicazioni di terze parti. I proxy object sono utilizzabili e editabili solo quando è caricata l’applicazione che li ha creati.

Immaginate dunque un comando apposito di AutoCAD che faccia selezionare gli oggetti, richieda una password e poi trasformi la selezione in un unico nuovo oggetto per il quale critta i dati geometrici (tipo quello che avviene per i SOLIDS) ed inibisce l’interazione con tutti i comandi.
Perché no?
Se qualcuno sa rispondere a questa domanda non esiti a lasciarmi un commento in calce a questo articolo.

Download

I 3 programmi descritti sono scaricabili anche dal mio sito, oltre che reperibili in rete, li ho raccolti per comodità nel file Protezione_dwg.zip.
Ogni programma va caricato con il comando APPLOAD. I comandi da digitare hanno lo stesso nome del file.

Conclusione

Si sa che per ogni ‘ostacolo’ digitale  posto sul cammino dell'utente esiste sempre un escamotage che, comunque, va almeno cercato.
L’applicazione contemporanea dei 3 strumenti descritti (Xlock, Db2sb e Deter) può almeno far perdere tempo a chi riceve (immeritatamente) i file DWG… meglio che niente.

5 commenti:

  1. ciao scusami ma io non sono riuscita a trasformare niente in testo. come mai?

    RispondiElimina
    Risposte
    1. non so... ci sono layer bloccati ? inviami il file o una sua porzione

      Elimina
  2. Buongiorno,
    bricscad mi da questo errore : : XLOCK

    ; ----- LISP : Call Stack -----
    ; [0]...C:XLOCK <<--
    ;
    ; ----- Error around expression -----
    ; (INITCOMMANDVERSION 2)
    ; in file :
    ; C:\Users\Tecnico\Desktop\xlock.lsp
    ;
    ; error : no function definition ; expected FUNCTION at [eval]

    è risolvibile?
    Grazie

    RispondiElimina
    Risposte
    1. BricsCAD non suppoerta quella funzione che invece in AutoCAD è presente. Grazie per la segnalazione.
      Ho modificato il file.... scarica nuovamente lo zip "protezione_dwg".

      Elimina
    2. l'ho commentata e sembra che funzioni tutto

      Elimina