Newsgroup: it.comp.software.cad
Titolo: testo --> punti

Salve a tutti,
ho a disposizione un piano quotato di una zona per la quale devo realizzare
alcuni profili longitudinali; il problema č questo: anzichč avere punti in
quota ho come oggetto il testo il cui valore č la quota stessa...mi
spiego...
- un punto a quota 123,5 m.s.m. non č rappresentato da un "oggetto punto" ma
da un "oggetto testo" con valore 123.5 e quota 123.5.
Ora se riuscissi a trovare un maniera di sostituire ogni singolo testo con
un punto posizionato a quota pari al valore del testo avrei risolto.
Le query map non sembrano aiutarmi, procedure lisp in rete le sto cercando
da stamane ed ancora non ho trovato niente di utile, magari qualcuno di voi
č in grado di darmi una dritta
Ciao e grazie
--

 --
Proprio recentemente è capitato lo stesso caso ad un mio cliente; per
questo ho inserito nel mio programma, tra le tante, anche la possibilità
di leggere un testo da un file DXF creando un punto con la quota 
indicata.
Alessandro.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 indicata.
si ma una soluzione piu' immediata senza ricorrere all'acquisto di un
software?
grazie comunque

 grazie comunque
Dovresti mandarmi il file (DWG o DXF) in modo che possa 
farti la trasformazione.



Se ho capito bene ed il punto di inserimento del testo è in 3D, posto 
proprio alla quota del valore del testo dovrebbe funzionare qualcosa del 
genere:
(defun disegna_punto (/ pto)
   (setq pto (cdr (assoc 10 (entget (car (entsel))))))
   (command "._point" pto)
)
Se invece il testo fosse posizionato a quota 0.00, il discorso è appena 
appena più articolato
(defun disegna_punto (/ pto db:punto)
   (setq db:punto (entget (car (entsel))))
   (setq pto (list (car (cdr (assoc 10 db:punto)))
                   (cadr (cdr (assoc 10 db:punto)))
                   (atof (cdr (assoc 1 db:punto)))
             )
   )
   (command "._point" pto)
)
Se tutte le quote appartengono ad un layer specifico (o hanno una 
specifica proprietà ben definita: stile, altezza, ecc.) si può pensare 
di far disegnare in automatico tutti i punti facendo prima una selezione 
con filtro, per esempio in base al layer di appartenenza
 (ssget "X" (cons 8 "nome_layer))
dopodiché passare, uno alla volta, tutti gli elementi della selezione 
alla funzione disegna_punto
Ciao
Maci

 Se ho capito bene ed il punto di inserimento del testo è in 3D, posto
............
grazie maci, la procedura che mi hai mandato non l'ho ancora provata
poichè ho risolto in quest'altra maniera:
(defun c:ptxt ()
    (setvar "cmdecho" 0)
        (if (setq nomefile(getfiled "Selezionare il nome File .txt" "" "txt"
1))(progn
        (setq nome-f(open nomefile "w"))
    (setq g1 (ssget "X" (list (cons 0 "text"))))
        (setq i 0)
 (repeat (sslength g1)
                (setq eee(entget (ssname g1 i)))
    (princ "\r Esportazione del punto ")(princ (1+ i))(princ " di ")(princ
(sslength g1))
  (write-line (strcat (rtos (cadr (assoc 10 eee)) 2 2)
        ";"
        (rtos (caddr (assoc 10 eee)) 2 2)
        ";"
        (rtos (cadddr (assoc 10 eee)) 2 2)) nome-f)
  (setq i(1+ i))
 )
 (close nome-f)
 ))
 (princ)
)
....che in pratica mi fornisce un file ascii con le coordinate x,y,z, del
punto di inserimento del testo (che appunto è in quota e georiferito).
dal file ascii ho creato uno scriptino che mi ridisegna i punti quotati e
georiferiti.
si è un po' complicata ma e' l'unica soluzione che mi è venuta in mente.
provero' comunque anche la tua.
ciao grazie