V I S U A L I Z Z A D I S C U S S I O N E |
Marsetti Alex |
Inserito il - 19 marzo 2014 : 18:19:08 Buonasera, scrivevo sul forum per chiedere aiuto circa un problema con un file Lisp di mia creazione. Sono abbastanza capace di programmare in Lisp, ma ogni tanto trovo delle difficoltà.
Essenzialmente, io vorrei estrapolare il valore di una quota e inserirlo in una variabile, da poter poi utilizzare nel programma.
Non trovo difficoltà quando estrapolo il valore contenuto in un oggetto testo, che converto poi in numero reale.
Quando tuttavia estrapolo il valore di una quota qualsiasi, sia con il codice gruppo 1 che con il codice gruppo 42, ottengo esclusivamente la parte intera del valore. Necessito invece del numero reale.
Riporto nel messaggio la parte problematica del programma.
(setq altezza (cdr (assoc 42 ID_altezza))))
la variabile "ID_altezza" contiene già l'identificativo dell'oggetto selezionato dall'utente. La nuova variabile altezza contiene invece solo la parte intera del valore della quota.
Sperando in un aiuto, cordiali saluti. |
14 U L T I M E R I S P O S T E (in alto le più recenti) |
aforza |
Inserito il - 08 aprile 2014 : 13:15:08 Ciao,
capisco!!!! chiamiamo quelli di Mistero.....
Ciao |
Terminator |
Inserito il - 08 aprile 2014 : 12:25:59 ... e nel frattempo 8 giorni dall'ultima risposta, GP gli ha scritto il 1° di aprile. Categoria: SPARITI |
arri |
Inserito il - 08 aprile 2014 : 11:20:56 Messaggio inserito da Giuseppe Mauro
Il bello è che Alex dopo aver fatto la domanda e (quindi) messo in moto le menti di chi si è voluto impegnare, è sparito, senza un cenno e senza un ringraziamento. E sono passati 20gg dalla domanda.
non è sparito e ha ringraziato GP il giorno dopo,
e una seconda volta il 30 marzo.
Sono ben altri i casi di sparizione
Messaggio inserito da Marsetti Alex
Buonasera, scrivevo perchè mi sono accorto di aver mal formulato la domanda. Le vostre risposte sono innanzitutto corrette e vi ringrazio.
Utilizzando la funzione "nentsel" per selezionare un'entità che possa essere racchiusa in un blocco, anche nella selezione di una quota vengono considerate le singole entità che la compongono, ossia linee e testo.
In questo modo, se si seleziona il testo della quota con la misura, si ricava un elemento MTEXT, e se la quota ha separatore decimale virgola, effettuando la conversione della stringa di testo con la funzione "atof", si ricava solo la parte intera, perchè la funzione si interrompe quanto trova un carattere diverso dal punto.
Sono curioso di sapere se qualcuno conosce un modo per superare il problema. Scusandomi e ringraziandovi ancora, cordiali saluti.
Marsetti Alex |
Giuseppe Mauro |
Inserito il - 08 aprile 2014 : 09:18:59 Il bello è che Alex dopo aver fatto la domanda e (quindi) messo in moto le menti di chi si è voluto impegnare, è sparito, senza un cenno e senza un ringraziamento. E sono passati 20gg dalla domanda. |
aforza |
Inserito il - 08 aprile 2014 : 08:41:30 Ciao,
Terminator non mi sembra il tipo che si offende!!!!
Ciao |
arri |
Inserito il - 04 aprile 2014 : 07:31:03 grazie GP,
ma rimane sempre il mistero delle due risposte di Terminator cancellate
Speriamo non si sia offeso per qualche sgarbo
|
GP |
Inserito il - 01 aprile 2014 : 20:05:08
(setq a "37,99")
"37,99"
_$
(if (member 44 (setq b (vl-string->list a)))
(setq a (vl-list->string (subst 46 44 b)))
a
)
"37.99"
_$
(if (vl-string-search "," a)
(setq a (vl-string-subst "." "," a))
a
)
"37.99"
_$
|
Giuseppe Mauro |
Inserito il - 01 aprile 2014 : 18:42:46 L'avevo vista anche io... mistero |
arri |
Inserito il - 01 aprile 2014 : 18:01:29 | Messaggio inserito da Marsetti Alex
Buonasera, scrivevo perchè mi sono accorto di aver mal formulato la domanda. Le vostre risposte sono innanzitutto corrette e vi ringrazio.
Utilizzando la funzione "nentsel" per selezionare un'entità che possa essere racchiusa in un blocco, anche nella selezione di una quota vengono considerate le singole entità che la compongono, ossia linee e testo.
In questo modo, se si seleziona il testo della quota con la misura, si ricava un elemento MTEXT, e se la quota ha separatore decimale virgola, effettuando la conversione della stringa di testo con la funzione "atof", si ricava solo la parte intera, perchè la funzione si interrompe quanto trova un carattere diverso dal punto.
Sono curioso di sapere se qualcuno conosce un modo per superare il problema. Scusandomi e ringraziandovi ancora, cordiali saluti.
Marsetti Alex
|
ti aveva postato la soluzione Terminator, ma è sparita
|
Marsetti Alex |
Inserito il - 30 marzo 2014 : 21:45:47 Buonasera, scrivevo perchè mi sono accorto di aver mal formulato la domanda. Le vostre risposte sono innanzitutto corrette e vi ringrazio.
Utilizzando la funzione "nentsel" per selezionare un'entità che possa essere racchiusa in un blocco, anche nella selezione di una quota vengono considerate le singole entità che la compongono, ossia linee e testo.
In questo modo, se si seleziona il testo della quota con la misura, si ricava un elemento MTEXT, e se la quota ha separatore decimale virgola, effettuando la conversione della stringa di testo con la funzione "atof", si ricava solo la parte intera, perchè la funzione si interrompe quanto trova un carattere diverso dal punto.
Sono curioso di sapere se qualcuno conosce un modo per superare il problema. Scusandomi e ringraziandovi ancora, cordiali saluti.
Marsetti Alex |
arri |
Inserito il - 21 marzo 2014 : 10:04:38 Messaggio inserito da Terminator
Idem con patate anche per le istruzioni in VLisp:
(setq altezza(vla-get-Measurement (vlax-ename->vla-object (car(entsel))))) Selezionare oggetto: 110.379
La quota in questione aveva pure il testo con la virgola...
|
arri |
Inserito il - 21 marzo 2014 : 07:56:34 Messaggio inserito da Marsetti Alex
Buonasera, ho risolto il problema in quanto in fase di lettura, l'unico separatore decimale accettato da Lisp è il punto ".". Nelle quote invece è presente il separatore virgola ",", che interrompe la lettura dei decimali da parte della funzione. Grazie per la risposta, cordiali saluti
non mi pare proprio, c'è il punto anche nelle quote, come puoi vedere dall'esempio
Comando: (SETQ altezza(cdr(assoc 42 (cdr(entget(car(ENTSEL)))))))
Selezionare oggetto: 10375.7 |
Marsetti Alex |
Inserito il - 20 marzo 2014 : 17:18:03 Buonasera, ho risolto il problema in quanto in fase di lettura, l'unico separatore decimale accettato da Lisp è il punto ".". Nelle quote invece è presente il separatore virgola ",", che interrompe la lettura dei decimali da parte della funzione. Grazie per la risposta, cordiali saluti |
GP |
Inserito il - 20 marzo 2014 : 14:53:34 "....i numeri reali sono memorizzati in formato a virgola mobile a doppia precisione, fornendo almeno 14 cifre significative di precisione, nonostante ne compaiano solo 6 nell'area della linea di comando di Autocad."
Se vuoi la prova del 9 (rtos altezza 2 14)
|
|
|