Nome Entità

Angelo2449

Utente Junior
Professione: Pensionato
Software: Autocad
Regione: Lombardia
Salve a tutti,
con questo codice :
Codice:
 (while (or (= PalazzinaX nil) (= PalazzinaX ""))
            (setq TitoloX (strcat "Seleziona il Nome della Palazzina > "))
            (princ "\n")
            (setq PalazzinaX (entsel TitoloX))
            (princ "\n")
     );;while

estraggo la stringa > PalazzinaX < che potrebbe essere, per esempio :
> Edificio A <
oppure
> (<Nome entità: 22c6fd9d240> (124.923 199.459 0.0)) <,

come posso distinguere le due condizioni in modo da poter estrarre la stringa selezionata con :

Codice:
 (setq PalazzinaX (entget (car PalazzinaX)))
 (setq PalazzinaX (cdr (assoc 1 PalazzinaX)))

senza provocare errore.
Grazie.
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
SE SEI SICURO DI TRATTARE UN TESTO (*)

Disponendo di una stringa: "Edificio A"
se controlli il tipo di elemento (type PalazzinaX) restituisce: STR

Con entsel ottieni una lista: (<Nome entità: 20cb3e12520> (3.40929 5.52409 0.0))
se controlli il tipo di elemento (type PalazzinaX) restituisce: LIST

Quindi devi conoscere il tipo di elemento che stai trattando:
Codice:
(cond
    ( (= (type PalazzinaX) 'STR) (fai questo) )
    ( (= (type PalazzinaX) 'LIST) (fai quello) )
)


(*) anche selezionando una linea viene restituita una lista

p.s. perchè non scrivi esattamente cosa restituisce il programma?
Quei simboli > e < creano solo confusione, una stringa è "Edificio A" non > Edificio A <
 

Staff online

Statistiche forum

Discussioni
54,598
Messaggi
465,057
Utenti registrati
93,389
Ultimo utente registrato
SimoneSpadafora28

Top