Autore |
Discussione |
|
Marsetti Alex
Utente
Regione: Veneto
Prov.: Vicenza
Città: Malo
17 Messaggi |
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.
|
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2776 Messaggi |
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)
|
|
|
Marsetti Alex
Utente
Regione: Veneto
Prov.: Vicenza
Città: Malo
17 Messaggi |
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 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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...
|
|
|
Marsetti Alex
Utente
Regione: Veneto
Prov.: Vicenza
Città: Malo
17 Messaggi |
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
Utente Master
Regione: Lombardia
14951 Messaggi |
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
|
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2705 Messaggi |
Inserito il - 01 aprile 2014 : 18:42:46
|
L'avevo vista anche io... mistero |
|
|
GP
Utente Master
Regione: Piemonte
Prov.: Vercelli
2776 Messaggi |
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"
_$
|
Modificato da - GP in data 02 aprile 2014 09:59:45 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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
|
Modificato da - arri in data 04 aprile 2014 07:50:55 |
|
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
Inserito il - 08 aprile 2014 : 08:41:30
|
Ciao,
Terminator non mi sembra il tipo che si offende!!!!
Ciao |
Andrea Forza
CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22" |
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2705 Messaggi |
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. |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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 |
Modificato da - arri in data 08 aprile 2014 11:32:40 |
|
|
Terminator
Utente Master
725 Messaggi |
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 |
|
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
Inserito il - 08 aprile 2014 : 13:15:08
|
Ciao,
capisco!!!! chiamiamo quelli di Mistero.....
Ciao |
Andrea Forza
CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22" |
|
|
|
Discussione |
|