TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoLISP
 problema con estrazione dati da quote
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

Marsetti Alex
Utente


Regione: Veneto
Prov.: Vicenza
Città: Malo


17 Messaggi

Inserito il - 19 marzo 2014 : 18:19:08  Mostra Profilo Invia a Marsetti Alex un Messaggio Privato  Rispondi Quotando
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  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando
"....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)


Torna all'inizio della Pagina

Marsetti Alex
Utente


Regione: Veneto
Prov.: Vicenza
Città: Malo


17 Messaggi

Inserito il - 20 marzo 2014 : 17:18:03  Mostra Profilo Invia a Marsetti Alex un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 21 marzo 2014 : 07:56:34  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 21 marzo 2014 : 10:04:38  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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...



Torna all'inizio della Pagina

Marsetti Alex
Utente


Regione: Veneto
Prov.: Vicenza
Città: Malo


17 Messaggi

Inserito il - 30 marzo 2014 : 21:45:47  Mostra Profilo Invia a Marsetti Alex un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 01 aprile 2014 : 18:01:29  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2705 Messaggi

Inserito il - 01 aprile 2014 : 18:42:46  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
L'avevo vista anche io... mistero
Torna all'inizio della Pagina

GP
Utente Master


Regione: Piemonte
Prov.: Vercelli


2776 Messaggi

Inserito il - 01 aprile 2014 : 20:05:08  Mostra Profilo Invia a GP un Messaggio Privato  Rispondi Quotando

(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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 04 aprile 2014 : 07:31:03  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 08 aprile 2014 : 08:41:30  Mostra Profilo  Rispondi Quotando
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"
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2705 Messaggi

Inserito il - 08 aprile 2014 : 09:18:59  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 08 aprile 2014 : 11:20:56  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 08 aprile 2014 : 12:25:59  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
... e nel frattempo 8 giorni dall'ultima risposta, GP gli ha scritto il 1° di aprile. Categoria: SPARITI
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 08 aprile 2014 : 13:15:08  Mostra Profilo  Rispondi Quotando
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"
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,35 secondi.