Aggiornare espressione diesel nei campi dati

x11start

Utente Standard
In azienda utilizziamo un nome per i file dei vari clienti, impostati in questo modo:

Mario Rossi 24-900.dwg

In cui
- Nome del cliente: può avere lunghezza variabile,
- Anno
- N. progressivo della commessa

Per i vari disegni riferiti a quel cliente, ho inserito dei campi dati con un espressione diesel che mi estrapola in automatico l'anno ed il N. di commessa:

[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),9),6)

sostanzialmente, mi prende il nome del file, ne estrae 6 caratteri a partire dalla posizione 9 dal fondo.

il problema è che ora ci stiamo avvicinando alla commessa 1000 ... che mi sballa il risultato: verrebbe "4-1000" anzichè "24-1000".

Ho risolto includendo un IF nell'espressione diesel che diventa:

[imath](if,[/imath](substr,[imath](getvar,dwgname),[/imath](-,[imath](strlen,[/imath](getvar,dwgname)),7),1)"1",[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,[imath](getvar,dwgname)),10),7),[/imath](substr,[imath](getvar,dwgname),[/imath](-,[imath](strlen,[/imath](getvar,dwgname)),9),6))

Cioè :

$(if, -> SE ...

[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),7),1)"1", -> Il 7 crt (per 1 solo crt) dalla fine del nome file è = "1" ..

[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),10),7), -> Prendi dal 10° crt per 7 crt (commesse > a 1000)

[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),9),6) -> Altrimenti prendi dal 9° crt per 6 crt (commesse < a 1000)

) -> Chiude l'IF


.... il mio problema è che dovrei SOSTITUIRE tutti questi campi dati in TUTTI i disegni ....

Secondo voi è possibile creare un lisp o uno script in grado di "trovare" e "sostituire" un'espressione in un campo dati?
 

Allegati

Sono partito dal programma pubblicato nel forum "Elimina hatch da blocchi", modificato per eliminare il testo con HasExtensionDictionary=-1, cercato esempio per come aggiungere un campo con espressione diesel al dwg, fuso il tutto, creato il file. A te modificarlo per adattarlo al tuo bisogno.
 

Allegati

Ho risolto con un unico comando che, cliccando sul campo testo (o anche su un testo normale), mi inserisce la stringa diesel voluta.
Praticamente ho fatto un piccolo lisp con solo un unica (e lunghissima!) riga:

(vlax-put(vlax-ename->vla-object (car (entsel)))'TextString"%<\\AcDiesel [imath](if,[/imath](substr,[imath](getvar,dwgname),[/imath](-,[imath](strlen,[/imath](getvar,dwgname)),7),1)\"1\",[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),10),7),
[imath](substr,[/imath](getvar,dwgname),[imath](-,[/imath](strlen,$(getvar,dwgname)),9),
6))>%")

Ps. se il testo da variare è interno ad un blocco, non devo far altro che entrare nell'editor blocchi e lanciare il lisp da lì, per selezionare il campo testo da cambiare.

Grazie per l'aiuto.
 

Statistiche forum

Discussioni
59,431
Messaggi
507,519
Utenti registrati
112,017
Ultimo utente registrato
bedstecasinoer4872

Staff online

Utenti online

Indietro
Top