Newsgroup: it.comp.software.cad
Titolo: Acad14: data sulla stampa (LISP)

E' possibile inserire un lisp in modo che mi aggiorni la data
automaticamente sulle stampe? Grazie a chi mi risponderà. Giuseppe.

 c'è il comando time però non riesco a farlo memorizzare in una variabile;
Time e' comando cad e non lisp. Per tua fortuna la data e l'orario corrente
sono salvati in una variabile d'ambiente che risponde al  nome di: "cdate".
Parto dal presupposto che tu conosca un po' il lisp e ti fornisco solo il
pezzo di procedura che ti serve, se vuoi un "programmino" completo,
dovrai in tal caso meglio specificare a cosa ti serve, ma non e' detto
che abbia il tempo per svilupparti la cosa su due piedi.
----
la variabile "cdate" e' un mumero reale siffatto: aaaammgg.oommss;
- la data in forma "aaaammgg" (prima della virgola)
- l'ora in forma "oommss": (dopo la virgola)
(setq data  (rtos (getvar "cdate") 2 0))
(setq ora    (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0))
----
con la funzione (substr stringaditesto inizio lunghezza)
puoi avere anno, mese, giorno, ore, minuti, secondi.
(setq Da  (substr  (rtos (getvar "cdate") 2 0)  1 4))
(setq Dm (substr  (rtos (getvar "cdate") 2 0)  5 2))
(setq Dg  (substr  (rtos (getvar "cdate") 2 0)  7 2))
(setq To  (substr  (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0) 1 2))
(setq Tm (substr  (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0) 3 2))
(setq Ts (substr  (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0) 5 2))
--------------------------------------------------------------------
Ti puoi comporre cosi' il dato che ti serve ed usarlo come testo da
passare ad una procedura che si occupi di fare il resto che ancora
non e' chiaro.
Scusa vado un po' di fretta, sai com'e' non avendo risposte ai miei di
dubbi...
...pur restando in fiduciosa attesa, ho un pochetto da penare.
--
Ciao Giovanni



Grazie per le risposte.
Purtroppo mi sono espresso forse male per via della mia poca dimestichezza
(o nulla) a
riguardo la programmazione LISP. Una mia semplice richesta con i termini a
me poco
consoni, ha scatenato una protesta degli esperti del settore. Chiedo venia.
Ho un problema riguardo la stampa di disegni eseguiti con acad14.
Tutte le volte che mando in stampa un lavoro, devo prima cambiare data, in
modo che
il lavoro ultimo non venga confuso con i precedenti. Fin qui tutto normale.
Però, a volte,
devo stampare delle bozze. Per cui non faccio caso nè alla data, nè
all'esponente di modifica.
Brutta cosa, visto che a volte le bozze per qualcuno sono intese per disegni
definitivi.
Allora, devo pur dimostrare che, pur essendo delle bozze, sono comunque
disegni superati
da lavori più recenti. Posso farlo, quindi, solo con l'inserimento della
data in un punto qualsiasi,
o in una posizione che posso stabilire precedentemente, ma senza che questo,
lo debba fare
ogni volta che devo stampare una cosa qualsiasi.
Ecco la mia richiesta a coloro che sono esperti nel risolvere queste
problematiche.
In una delle risposte, ho intravisto una possibile soluzione che potrebbe
fare al caso mio, ma che
non saprei da dove cominciare, ovvero il comando CDATE.
Spero di aver chiarito il mio dilemma. A voi.
Giuseppe.

 Giuseppe.
Giuseppe ti aiuterei volentieri ma ho molto da fare in questo periodo, se
non riesci a farmi capire che ti serve non so cosa far fare al mio
programmuccio per te.
Tra l'altro forse il consiglio di Gigi potrebbe pure essere il piu' adatto
al tuo caso.
...
...
Comunque.
Nel programmino che ti si potrebbe fare, una volta recuperata la situazione
corrente rilevata nel PC:
 (setq  DATA      (rtos (getvar "cdate") 2 0))
 (setq  ORARIO (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0))
e scissala nei suoi elementi base:
 (setq ANNO   (substr  DATA  1 4))
 (setq MESE   (substr  DATA  5 2))
 (setq GIO      (substr  DATA  7 2))
 (setq ORE     (substr  ORARIO   1 2))
 (setq MIN      (substr  ORARIO   3 2))
 (setq SEC     (substr  ORARIO   5 2))
E fino a qua gia' ti avevo detto.
Si puo' poi far scrivere cio' che si vuole in un testo, anche incrementando
o decrementando qualcosa.
che so vuoi far apparire che la data e' quella della settimana scorsa?
controlli che il giorno sia maggire di 7 se lo e' lo decrementi di 7 se no
decrementi il mese di uno e a seconda che sia di 28/29/30/31 lo decrementi
della differenza tra 7 e il numero del giorno (spero si capisca).
Tutte queste condizioni da porre pero' richiedono un minimo di tempo e mi
metterei a farle solo avendo capito cosa effettivamente ti serve.
quindi facciamo finta che ti serva una cosa tipo:
Testo scritto = "Data: 20-09-2000 Orario: 23.30"
(setq TESTO
 (strcat "Data: " GIO "-" MESE  "-"  ANNO " Orario: " ORE  "."  MIN))
infine passi tutto ad autocad semplicemente cosi':
(command "_text" (getpoint) "" "" TESTO "")
metti tutto assieme ed ecco il programmuccio:
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---
(defun c:td ()
  (setq  DATA      (rtos (getvar "cdate") 2 0))
  (setq  ORARIO (rtos (* (rem (getvar "cdate") 1) 1000000) 2 0))
  (setq ANNO    (substr  DATA  1 4))
  (setq MESE    (substr  DATA  5 2))
  (setq GIO       (substr  DATA  7 2))
  (setq ORE      (substr  ORARIO   1 2))
  (setq MIN       (substr  ORARIO   3 2))
  (setq SEC      (substr  ORARIO   5 2))
(setq TESTO
 (strcat "Data: " GIO "-" MESE  "-"  ANNO " Orario: " ORE  "."  MIN))
(command "_text" (getpoint) "" "" TESTO "")
---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---cut---
Spero di averti aiutato e se ti serve qualcosa di simile ma poco poco
diverso
chiariscimi meglio e te lo modifico; se ti serve tuttaltro, mi spiace ma io
questo ho capito quindi me lo dovresti spiegare nuovamente con parole
diverse affinche io capisca.
--
Ciao Giovanni