• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

プリントスタイルを数百レイアウトに編集するためのマクロ

  • Thread starter Thread starter brizzo1982
  • Start date Start date

brizzo1982

Guest
buongiorno a tutti.
devo (ahimè) modificare ad alcuni file (utilizzati come modelli) lo stile di stampa preimpostato.
questi files, necessari per la realizzazione di schemi elettrici, hanno all''interno centinaia di layout.
ogni layout ha impostato di default i parametri di stampa, quindi come stampante "laser b/n.pc3", come dimensioni del foglio "a4", scala "adatta dimensione", e stile di stampa "schemi.ctb", ecc..

c'è una modalità per creare una macro (un campo a me sconosciuto) o qualcosa di simile, per poter modificare automaticamente in tutti i layout di default, ad esempio, la stampante in "colori.pc3" e lo stile di stampa in "schemi_colori.ctb"??

grazie infinite.. :finger:
 
buongiorno a tutti.

nessuna idea al riguardo? :confused:

..il problema è che non ho sufficienti conoscenze di autolisp e praticamente nulla di vba..quindi non saprei nemmeno con quale strumento creare questo automatismo.
grazie comunque per l'attenzione. :smile:
 
se cerchi sul forum c'è una discussione (o più) che parla di un file excel per creare degli script, ed è utilizzabile per stampa,conversione etc. prova a vedere come risolvi

il file si chiama creafilescript creato da rrpor66
 
@shape
grazie per l'interessamento..il creascript avevo in passato già provato ad utilizzarlo senza grossi risultati.
il problema è che non so quali comandi inserire per modificare le impostazioni di stampa richieste, e soprattutto come slittare al layout successivo!!

@tir
grazie per l'interessamento. purtroppo questo lisp modifica tutte le impostazioni di tutti i layout con le impostazioni del layout selezionato. così facendo perdo anche le selezioni di stampa "finestra", diverse in tutti i layout.
a me serve solo modificare la stampante.pc3 e il .ctb, mantenendo inalterate tutte le altre opzioni.
 
salva questo codice con nome cambia_stampante_layout.lsp in una cartella letta dal percorso di autocad:

Code:
(defun c:csl ()         
    (foreach l (layoutlist )
        (command "._layout" "_set" l)
        (command "_-plot"
                 "_y"
                 l
                 "nome_stampante"
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "nome.ctb" 
                 "" 
                 ""
                 ""
                 ""
                 "" 
                 "_y"
                 "_n"
         )
     )
)


con creafilescript seleziona i file che ti interessano, verranno inseriti nella colonna a.

nella colonna c inserisci queste istruzioni, una per riga:
_open
file
(load "cambia_stampante_layout")
csl
_qsave
_close


pulsante crea file script

in autocad, in un nuovo disegno, comando script e seleziona quello che hai creato.


note:
- fai prima dei test con pochi dwg di prova
- sostituire le stringhe nome_stampante e nome_ctb con quelle che devi usare
- il codice replica le risposte a tutti i messaggi di richiesta del comando _-plot, ogni "" (doppie virgolette) corrisponde ad un invio, cioè conferma i dati proposti, se ti interessa cambiare altri settaggi prova il comando in autocad e vedi la sequenza delle richieste.
 
grazie infinite gp. per il lavoro che hai fatto!
purtroppo ho qualche problema nel far funzionare il lisp.
la parte di creascript l'ho capita, anche se per dovere di cronaca ti correggo sul fatto che i comandi devono essere scritti nella colonna d (e non c).
il lisp caricato tramite script o manualmente, mi risponde:

""
HTML:
comando:
comando:  cambia_stampante_layout.lsp caricato.


comando:
comando:
comando: specificare angolo opposto:
comando: csl
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "y". premere f1 per la guida.
comando sconosciuto "n". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida.
; errore: funzione annullata

comando: *annullato*

comando: *annullato*

comando:  <passaggio a: 1_14>
rigenerazione layout in corso.
rigenerazione modello in corso.

comando: _.pagesetup
""


al che se lo lasciassi farebbe il giro di tutti i layout contenuti nel file, senza però modificare nulla.
sono sicuro d'aver inserito nei campi nome_stampante e nome.ctb il nome della mia nuova stampante.pc3 e il nome del ctb corretto....ma non funziona.

il guaio è, che avviato dal modello di nuovo file vergine, i due layout creati di default da autocad li modifica correttamente!!!

dove potrebbe essere l'inghippo con miei files??
 
...i comandi devono essere scritti nella colonna d (e non c).

e' vero... :tongue:


vista questa sequenza:

comando:
comando:
comando: specificare angolo opposto:
comando: csl
comando sconosciuto "csl". premere f1 per la guida.
comando sconosciuto "csl". premere f1 per la guida
.....................
.....................
.....................


c'è da chiedersi da dove arrivi quella richiesta.
visto che il lisp funziona se lanciato dal singolo dwg evidentemente il problema è nello script, sei sicuro di non avere spazi prima o dopo ogni singolo comando nella riga?

prova a creare lo script con l'xls allegato.
 

Attachments

non so se il problema può essere quello ma gli script non sono coordinati con il vba se apri molti disegni può essere che l'apertura del file avvenga prima che il lisp abbia finito di lavorare il che causa casino... già testato su altre macro !!!
 
sto scappando, non ce la faccio a provare lo script.
tieni conto che l'errore me lo dava anche solo avviando il lisp nel disegno..per cui non credo che sia un problema di script ma di lisp.

l'angolo opposto forse può essere una selezione di stampa da finestra??

per farvi capire la mia situazione allego uno dei file (così ne ho decine da modificare).
provare a lanciare il lisp e vedrete (legge di murphy a parte :biggrin:), l'errore che da.

grazie, ci risentiamo lunedì!! :finger:

buon lavoro e w-e
 

Attachments

ho notato che mi hanno risposto sul sito americano dell'autodesk.
ora non sono al lavoro, proverò lunedì.
curiosa e quanto mai pratica questa modalità di modifica tramite editor di testo..mi si apre un mondo!!
grazie e buona giornata!
 
confermo quanto riportato da tir.
salvando in dxf, rinominando in txt, si possono in un colpo solo modificare le impostazioni richieste.

grazie a tutti!
 
salva questo codice con nome cambia_stampante_layout.lsp in una cartella letta dal percorso di autocad:

Code:
(defun c:csl ()         
    (foreach l (layoutlist )
        (command "._layout" "_set" l)
        (command "_-plot"
                 "_y"
                 l
                 "nome_stampante"
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "" 
                 "nome.ctb" 
                 "" 
                 ""
                 ""
                 ""
                 "" 
                 "_y"
                 "_n"
         )
     )
)


con creafilescript seleziona i file che ti interessano, verranno inseriti nella colonna a.

nella colonna c inserisci queste istruzioni, una per riga:
_open
file
(load "cambia_stampante_layout")
csl
_qsave
_close


pulsante crea file script

in autocad, in un nuovo disegno, comando script e seleziona quello che hai creato.


note:
- fai prima dei test con pochi dwg di prova
- sostituire le stringhe nome_stampante e nome_ctb con quelle che devi usare
- il codice replica le risposte a tutti i messaggi di richiesta del comando _-plot, ogni "" (doppie virgolette) corrisponde ad un invio, cioè conferma i dati proposti, se ti interessa cambiare altri settaggi prova il comando in autocad e vedi la sequenza delle richieste.


ciao
il lisp che hai creato mi funziona in parte o meglio... funziona solo sul primo layout del file, perche non li fa tutti? il comando set l a cosa corrisponde?
io ho l'autocad in italiano e magari non tutti i layout iniziano per l ma sono numerati.
grazie
 

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top