Il Bar dell'Ingegneria

SpeedPrint

« Older   Newer »
 
  Share  
.
  1.     +3   +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Mi capita spesso nel lavoro di avere file in Autocad con tante singole "pagine". Vari formati A4 (o A3) che compongono un progetto, un insieme di particolari, dettagli, ecc. che vanno poi tutti stampati e quindi rilegati a fascicoletto.
    Oggi poi la presentazione delle varie pratiche in formato digitale incoraggia la realizzazione di file .pdf "multipagina" poichè migliora la visualizzazione a video di piccoli formati, per chi dovrebbe esaminarli, che non la stampa su formati grandi e dispersivi.

    Ma il punto è che mi capita anche di dover stampare (fisicamente o virtualmente) anche file Autocad dove sono presenti 30-40-50 formati A4.
    E' abbastanza alienante in questi casi dover ripetutamente selezionare il comando stampa, stampa precedente, la finestra di stampa, ecc.

    Lo so, mi direte che con i layout si risolve tutto. Ma fino ad un certo punto, perchè è vero che il comando "Pubblica" sembrerebbe un vero toccasana, ma questo va ben gestito fin dall'inizio, i vari layout ben configurati, ecc. Il semplice click sul pulsante "Pubblica" nasconde comunque una discreta mole di lavoro da fare a monte.

    Circa 5 anni fa ho sono riuscito ad accoppiare un mio programma ad Autocad tramite il "povero" comando "script" facendogli disegnare quello che voglio (o manipolare un disegno già esistente).
    Ne avevo parlato "in diretta", intanto che provavo se la cosa funzionasse, qui:

    Riga di comando Autocad

    In estrema sintesi il concetto è questo:

    1) lancio uno script che altro non fa che eseguire un comando "esterno" di Autocad;
    2) Questo comando non fa altro che lanciare un qualsiasi programma presente nel PC (Potrebbe essere Excel, un database, un programma customizzato - al momento io ne ho 6-7 fatti in questi anni);
    3) All'uscita il programma "esterno" genera a sua volta un file di script;
    4) Il file di script di cui al punto 1) ha come istruzione successiva all'invocazione del comando "esterno", proprio il lancio del file di script generato dal programma customizzato di cui al punto 3).

    Ed il gioco è fatto.

    Nel file di script generato dal programma esterno può esserci di tutto. Il disegno di una sezione rettangolare con tanto di pallini di armatura, quote, retini, blocchi, o tanto di distinta armature di una trave, insomma tutto quello che il programma esterno può consentirvi di inputare.
    La bellezza del file script è che al suo interno vi sono esattamente i comandi che scrivereste nella riga di comando di Autocad, nè più nè meno. Ed inoltre il disegno che viene fuori è esattamente quello che potreste disegnare voi personalmente in Autocad, senza i problemi che potrebbero sorgere per i retini di un file dxf, se una sequenza di linee deve essere una polilinea, ebbene, lo sarà, ecc.

    Trattandosi poi di file script, utilizzati da Autocad dalla notte dei tempi, non ho il minimo problema di compatibilità. L'ultimo "modello" di Autocad non potrà mai inficiare il funzionamento di una procedura impostata in questo modo.
    Anche in AutocadLT il programma funzionerà. O per lo meno un LT a cui Autodesk non abbia "tarpato" le ali anche sul "lancio" di programmi esterni (Mi risulta che LT2012 non può lanciare comandi esterni, ma LT2008 si).

    Ma torniamo al problema di partenza.
    Ho quindi creato, con il meccanismo di cui sopra, un programma che permette di stampare in un colpo solo tutti i formati presenti in un file Autocad.

    png

    Nei prossimi post vi spiego cosa bisogna fare per poterlo utilizzare.
    Nell'ultimo post metterò un link per poter scaricare il file .exe e tutti i file che servono a far funzionare tutto il meccanismo.
     
    Top
    .
  2.     +1   +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    ho messo +1 sulla fiducia, sperando che il programmino possa essere di aiuto anche per il mio modo di lavorare.

    io disegno tutto, più o meno, alla rinfusa nello spazio modello e poi creo decine di layout, in genere tutti A3. nei layout metto come sfondo il disegno che mi serve e aggiungo gli "abbellimenti", tra cui le scritte, tutte della stessa altezza anche se utilizzo lo stesso disegno diversamente scalato in più layout.

    in effetti, è faticoso stampare uno alla volta ogni singolo layout (anche se per ognuno è possibile salvare le impostazioni, così che alla stampa successiva si fa meno fatica).

    quando ho letto del comando "pubblica" sono saltato dalla sedia, poi ho fatto una ricerca ed ho scoperto che è stato introdotto a partire da autocad 2019. purtroppo ho autocad 2010 e ho evitato di approfondire.
     
    Top
    .
  3.     +1   +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Come va impostato il disegno per utilizzare SpeedPrint
    Ok, diciamo quindi di avere una situazione come questa qui sotto:

    png

    Dico subito che il programmino è assai grezzo. Infatti pretende che tutto quanto debba stampare abbia un unico formato, un unico orientamento, una unica scala di stampa (peraltro "adatta").

    Ma Autocad deve fornire al programma le informazioni circa le singole stampe da eseguire. Come facciamo?
    E' molto semplice, si utilizzano dei blocchi con attributi.
    In pratica nel nostro disegno, per ogni singolo formato che si vuol stampare, bisogna "apporre" un piccolo blocco con attributi in basso a sinistra ed in alto a destra (questo definisce una "finestra di stampa" di Autocad).
    A questo punto:

    1) Si estraggono gli attributi in un file di testo;
    2) Si fa leggere questo file al programmino;
    3) Quando il programma "termina" genera un file di script in cui semplicemente reitera i comandi di stampa per ogni singola stampa;
    4) Si manda in esecuzione questo ultimo script.

    Ed il gioco è fatto.

    Il blocco con attributi io l'ho disegnato così:

    png

    Con punto di inserimento proprio lo "spigolo" della stampa da eseguire. L'ho chiamato Simb_page. Si può modificare come si vuole, per forma, linee, layer. L'importante è non cambiargli nome, non spostare il punto di inserimento e non cancellare l'attributo SIGLA.

    Ogni singola area di stampa, è una scocciatura lo so, deve avere una coppia di blocchi (posti in basso a sinistra, in alto a destra) con lo stesso valore dell'attributo SIGLA.
    Pertanto ogni volta che si crea un nuovo formato da stampare, magari copiando quella che è la solita "cornice" che adoperate, magari con già negli spigoli i suddetti blocchi, dovrete premurarvi di modificarne l'attributo (potete utilizzare numeri, lettere, un mix, ecc.) in modo che non vi siano coppie "doppione".
    Se vi fossero più di 2 blocchi con lo stesso valore dell'attributo SIGLA, semplicemente il programma salta la stampa. Cosa che accade anche se vi fosse un singolo blocco.
    Ovviamente i blocchi dovranno essere posti in 'defpoints', o in un layer non stampabile, in modo che non "sporchino" la vostra stampa.

    @reversi: io al momento lavoro con AutoCad2013 ed il comando "pubblica" c'è. E penso che sia stato introdotto anche prima.
     
    Top
    .
  4.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (zax2013 @ 8/11/2020, 10:12) 
    @reversi: io al momento lavoro con AutoCad2013 ed il comando "pubblica" c'è. E penso che sia stato introdotto anche prima.

    se non me lo dicevi, non avrei mai provato, in effetti c'è (non so perché nella guida online parla di autocad 2019).

    a questo punto mi tocca esplorarne le capacità...
     
    Top
    .
  5.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Far diventare SpeedPrint comando esterno di Autocad

    Per creare dei comandi "esterni" che Autocad potrà mandare in esecuzione è necessario manipolare il file con estensione .pgp (acad.pgp, oppure aclt.pgp) che generalmente si trova in una directory seguendo questo percorso:

    C:\Users\'NomeUtente'\AppData\Roaming\Autodesk\AutoCAD 20xx - Italiano\Rxx.0\ita\Support

    La directory AppData di default è nascosta, quindi in base alle vostre impostazioni di visualizzazione dell'Explorer di Windows potreste non vederla. Quindi dovrete spuntare sull'opzione "Visualizza file, cartelle ed unità nascoste" per poter arrivare al suddetto file.

    Una volta trovato basta farvi doppio cllick sopra perchè esso venga aperto da Notepad.exe (perchè è un semplice file di testo).

    Ed ecco la sua parte iniziale:

    png

    Ottimamente commentato, direi. In pratica vi è tutto quello che ci serve.

    A questo punto se sotto la TYPE, TYPE;. ecc. (possono starci anche righe vuote senza alcun problema), aggiungiamo la riga:

    SPEEDPRINT,C:\SpeedPrint\SpeedPrint.exe,0,,

    e salviamo il file chiudendolo, di fatto abbiamo creato un nuovo comando di Autocad che si chiama SPEEDPRINT (maiuscole o minuscole non hanno importanza), che, invocato dalla riga di comando di Autocad, non fa altro che aprire il programma SpeedPrint che si trova nella directory C:\SpeedPrint. Poichè abbiamo messo il parametro 0 al terzo posto della riga, siamo sicuri che Autocad di fermerà e non farà altro, aspettando, fino a che il programma invocato non venga terminato.

    La variazione fatta al file acad.pgp diventa attiva al successivo avvio di Autocad (se avete Autocad aperto intanto che manipolate il file .pgp gli effetti non ci saranno se non al successivo riavvio, poichè a quanto pare il file .pgp viene letto da Autocad al suo avvio).

    Se tutto filasse liscio e nella directory indicata vi è l'eseguibile indicato, ecco che a video, digitando 'SPEDDPRINT' nella riga di comando si avrebbe la seguente situazione:

    png

    Ovvero una finestra nera "Shell Autocad attiva", e la schermata con la quale vi faccio vedere in anteprima l'interfaccia del programma con le varie opzioni di cui parleremo nel prossimo post.
    La finestra nera, così come automaticamente si è aperta, automaticamente si chiuderà quando saremo usciti dal programma esterno.
     
    Top
    .
  6.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    105
    Reputation
    +19

    Status
    Offline
    Evidentemente mi sfugge qualcosa. Ma con il comando Pubblica si stampano i layout in un sol colpo scegliendo se generara un file pdf multipagina o a fogli singoli. Non capisco quale sia il lavoro "preparatorio" di cui necessiterebbe il pubblica. Ma conoscendo Zax ripeto che deve sfiggirmi qualcosa altrimenti nn capisco l'utilità di non utilizzare il pubblica.
     
    Top
    .
  7.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (IL Pogba @ 9/11/2020, 04:30) 
    Evidentemente mi sfugge qualcosa. Ma con il comando Pubblica si stampano i layout in un sol colpo scegliendo se generara un file pdf multipagina o a fogli singoli. Non capisco quale sia il lavoro "preparatorio" di cui necessiterebbe il pubblica. Ma conoscendo Zax ripeto che deve sfiggirmi qualcosa altrimenti nn capisco l'utilità di non utilizzare il pubblica.

    il secondo post di zax, terzo nel thread, è molto chiaro: serve a stampare dallo spazio modello.
     
    Top
    .
  8.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Bisogna dire che io sono un utente che ha imparato ad utilizzare Autocad nel 1989.
    Pertanto in epoca in cui lo "spazio carta" non era ancora nato. E' per questo che fin da subito mi son dovuto "attrezzare" per gestire in unico "modello" (che non esistendo lo spazio carta non esisteva nemmeno lui) disegni in cui varie scale di rappresentazione convivevano (e convivono tutt'oggi). So perfettamente quali grandezze devo "manipolare" per non avere testi illeggibili perchè troppo piccoli o inverecondi perchè troppo grandi, e come assegnare ad ogni scala il giusto stile di quote, di retini, ecc. con le grandezze ben definite.
    Questo per dirvi che quando Autocad ha introdotto lo "spazio carta" (mi pare che all'inizio ne fosse possibile uno soltanto per singolo file) e successivamente i vari layout, io me ne sono bellamente disinteressato.
    Ovviamente ogni tanto mi arrivano file organizzati con i layout, e riesco a manipolarli, più o meno, qualche volta ne ho fatti anche di miei. Ma in realtà i layout non mi hanno mai affascinato. Proprio perchè risolvono problemi che io non ho mai avuto (scusate se la frase sembra presuntuosa).

    So della presenza della funzione "Pubblica" perchè la avevo "guardata" qualche volta. Ma ripeto, non disegnando su layout, se non pochissime volte, alla fine l'ho messa tra le cose che Autocad fa ma che a me interessano poco.
    L'ho citata semplicemente perchè, e mi ha sorpreso che così non fosse, mi aspettavo che proprio reversi mi dicesse: "guarda che quel che hai fatto tu lo fa da parecchio la funzione pubblica".
     
    Top
    .
  9.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Interfaccia ed input di SpeedPrint

    png

    I dati da inserire sono assai banali. Inoltre essi vengono sempre memorizzati in un file di configurazione, pertanto ogni volta che si aprirà il programma vi ritroverete con l'input che avevate fatto la volta precedente.

    Il primo rigone non è altro che la directory in cui Autocad memorizza il file con estensione .ctb dove esso preleva le informazioni circa spessori penne, ecc.

    Se la directory è quella corretta la casella a discesa sottostante "Selezione stile di stampa da utilizzare (file .ctb)" si popola dei file .ctb contenuti nella directory selezionata. Casella che ovviamente vi consentirà di selezionare lo stile desiderato.

    Successivo input (saltando al momento e volutamente la scala di stampa che è sempre, come già detto, "adatta"), è l'orientamento del formato di stampa.

    Quindi la selezione della stampante tra quelle presenti nel vostro sistema (riempire questa casella a discesa con le stampanti effettivamente presenti mi è costato qualche ora di navigazione all'interno dell'help in linea del mio compilatore. Fino a trovare l'esempio giusto e le 2 righe che in un colpo solo fanno questo lavoro.)

    Infine il formato pagina. A scelta da A0 ad A6
    (Qui la ricerca all'interno dell'help in linea del compilatore non ha dato i frutti sperati. Infatti non sono riuscito a "popolare" la casella con tutti i formati della specifica stampante selezionata. Informazioni presenti nei driver della stampante. Ho trovato esempi per il compilatore .NET di Microsoft che fanno questa cosa ma niente relativamente al mio framework (VCL), almeno finora. Pertanto ho optato per i formati che almeno tutte le stampanti sembrano avere (pare che se immetto A0 in una stampante che al massimo stampi in A3, la stampa viene eseguita nel formato di default che per la mia stampante è A4).

    Il pulsante "Imposta stampante..." consentirebbe di settare opzioni specifiche della stampante selezionata (che so, stampa b/n o colore, risoluzione di stampa, fronte/retro, ecc.)

    Infine i 2 pulsanti: il primo che fa fare al programma quello per cui è nato "Chiudi e Stampa", il secondo che invece abbandona il programma senza far nulla.

    Se si opta per il primo, comparirà a video la schermata:

    png

    Che consente di selezionare/deselezionare alcune delle stampe individuate da SpeedPrint.

    Al primo avvio del programma SpeedPrint vi informerà che per sapere quale stile di stampa utilizzare bisogna per forza individuare la directory dove Autocad memorizza i file .ctb. Solamente così la casella a discesa sottostante avrà i file .ctb che di solito siete abituati a vedere in Autocad.

    Sono consapevole che fin qui la cosa vi parrà abbastanza articolata e complicata. Può darsi. In realtà si tratta di una serie di operazioni (configurazione di Autocad, configurazione di SpeedPrint) da fare solamente una volta. Una volta fatte, il meccanismo rimane memorizzato e non si deve fare più nulla, se non premere una icona in Autocad, "impostare" un paio di opzioni, e lanciare la stampa. Pochi secondi.

    Coraggio. Penso di aver finito. Nel prossimo post i file o il link di SpeedPrint.
     
    Top
    .
  10.     +1   +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    105
    Reputation
    +19

    Status
    Offline
    Ora capisco Zax il tuo sforzo encomiabile se rapportato al fatto che tu lo abbia compiuto prima della nascita dei layout. Io circa 3 anni fa mi sono dovuto interfacciare con una multinazionale che lavorava con i layout e da li mi si è aperto un mondo. La grandezza dei testi, lo stile e la scala delle quote che si aggiornano automaticamente ora sono per me divenuti essenziali. Mi capita spesso di impostare una planimetria ad una determinata scala e poi doverla cambiare in corso d'opera ed il tutto in automatico. Basta visionare qualche video su YouTube e in un giorno ti metti in carreggiata. Non voglio sminuire il tuo lavoro che per me sarebbe stato prezioso fino a poco tempo fa e sono certo che sarà comunque un valido ausilio per numerosissimi utenti.
     
    Top
    .
  11.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Finalmente metto qui come allegato tutto quello che serve per far girare bene il programma SpeedPrint.

    Ho inserito un file readme.txt che in sintesi ha al suo interno quanto ho qui descritto in maniera maggiormente dettagliata.

    Ricordatevi che potreste aprire SpeedPrint.exe anche al di fuori di Autocad, ottenendo un messaggio di avvertimento alla sua uscita.
    Il suo utilizzo è però da fare all'interno di Autocad. E precisamente esso non va invocato direttamente, ma va richiamato tramite lo script SpeedPrint.scr che avrete scompattato nella directory C:\SpeedPrint.

    Con un collega che lo usa da parecchio ho avuto anche il piacere di veder funzionare la procedura SpeedPrint anche con GStarCAD, clone di Autocad. Immagino che la stessa cosa sia possibile con gli altri cloni di Autocad. Basta che questi consentano l'utilizzo di comandi esterni.

    Infine ho avuto un piccolo ripensamento ed aggiunto un ulteriore input. Mi spiego.

    Per evitare che selezionando una coordinata ben precisa dell'area di stampa Autocad possa catturare, con gli snap, oggetti nelle vicinanze, il file di script per prima cosa disabilita tutti gli "snap ad oggetto" del vostro ambiente di lavoro. E' cosa assai semplice, perchè basta settare a 0 la variabile di sistema OSMODE.
    Alla fine della procedura SpeedPrint la ripristina. La variabile OSMODE è un campo di bit, ad alcuni valori numerici corrisponde l'insieme degli snap ad oggetto che normalmente utilizzate per disegnare. Ad esempio nel mio caso la variabile in questione vale 103 (significa che ho sempre attivi gli snap: fine, medio, centro, inserimento).
    Ma nel vostro caso potrebbe essere diverso. E so quanto sia scocciante dover ripristinare una configurazione a noi "cara", specie se questo debba essere fatto ogni volta che si utilizza SpeedPrint. Ecco quindi che ho aggiunto l'input: "Valore di ripristino variabile OSMODE".
    Digitate OSMODE dalla riga di comando del vostro Autocad e leggete il valore assunto dalla variabile. Quindi lo inserirete nella casella di input (il valore viene inserito nel file di configurazione) in modo che ogni volta SpeedPrint possa rimettere le cose a posto come le ha trovate.

    Inifne, se qualcosa dovesse andare storto: rimettere la variabile d'ambiente FILEDIA al valore 1 (è la variabile che fa comparire la finestra di dialogo di Windows per la selezione dei file, altrimenti per aprire e salvare file dovreste digitare percorso e nome file sulla riga di comando).
    File Allegato
    SpeedPrint.zip
    (Number of downloads: 32)

     
    Top
    .
  12.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Guardate che aspetto i vostri feedback.
     
    Top
    .
  13.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    3,345
    Reputation
    +213

    Status
    Offline
    CITAZIONE (zax2013 @ 8/11/2020, 10:12) 
    @reversi: io al momento lavoro con AutoCad2013 ed il comando "pubblica" c'è. E penso che sia stato introdotto anche prima.

    poco fa ho usato per la prima volta il comando "pubblica" per stampare in un colpo solo 17 layout. magico.

    ho messo un altro punto a zax.

    p.s. funziona perfettamente anche con autocad 2010.
     
    Top
    .
  14.     +1   -1
     
    .
    Avatar

    Advanced Member

    Group
    Member
    Posts
    2,939
    Reputation
    +187

    Status
    Offline
    Più che a me devi mettere un punto ad Autodesk.
     
    Top
    .
  15.     +1   -1
     
    .
    Avatar

    Member

    Group
    Member
    Posts
    588
    Reputation
    +12

    Status
    Offline
    OT aggiungo se qualcuno come me non lo sapeva che pubblica funziona anche su file non aperti ..
     
    Top
    .
14 replies since 7/11/2020, 16:56   1247 views
  Share  
.