Newsgroup: it.discussioni.geometri
Titolo: Progamma in lisp

Tempo fa un bravissimo programmatore in lisp di questo ng mi fece un 
programma per disegnare dei punti in cad estratti da un file .txt 
"Codice;X;Y" (coord. cartesiane) come te lo danno al catasto.
Si potrebbe ottenere lo stesso risultato con le coordinate polari tipo 
"Cod;angolo(cetesimale);distanza"?
 
-- 
Ciao 
 
 

Il grande fardello ha spiegato il 26/04/2013 :

solo se vengono tutte dalla stessa stazione
 
-- 
Cirano
 
 

 solo se vengono tutte dalla stessa stazione
Perch�? Io a suo tempo l'avevo fatto in MiniPascal, e imporavo tutto il
rilievo.
Comunque adesso come adesso passerei tutto in un foglio di calcolo e mi
calcolerei le coordinate cartesiane.
 
-- 
Per contattarmi, togliere -NOSPAM- dall'indirizzo.
To contact me, remove -NOSPAM- from address.


Io quando ho necessitï¿œ di qualche lisp, se non lo trovo giï¿œ pronto sul 
web, mi rivolgo a 
www.emicad.it
 
Prova richiedere a loro un preventivo...

 typed:

fa lo stesso: un cad per ogni stazione poi li unisci con il punto di 
stazione in comune.
 
-- 
Ciao 
 
 

 Prova richiedere a loro un preventivo...
 
anch'io attingo l�, ma quel lisp molto semplice lo fece ...a gratise!
 
-- 
Ciao 
 
 


ma poi li anche devi ruotare...
a meno che non lavori orientato, ma se lavori orientato hai giï¿œ le 
cartesiane... mah
 
io farei un foglio elettronico con uscita in cartesiane e poi userei il 
lisp che hai giï¿œ
 
 

Il grande fardello <nonte...@virgilio.it.invalid> ha scritto:

Un qualsiasi programma di topografia fa quanto vuoi tu, ma immagino tu 
non ce l'abbia, vista la domanda.
 
Potresti ritrascriverti il libretto in formato pregeo, elaborarlo (senza 
punti fiduciali) ed esportarlo in formato CAD con il programma gratuito 
Vigeo.
 
Ciao geoNick
 
 
 
PS: Se si tratta di un libretto te lo converto io in 30 secondi.
 
-- 
Per scrivermi in privato clicca qui:
http://www.mynewsgate.net/mp.php?u=4348
 
 

 PS: Se si tratta di un libretto te lo converto io in 30 secondi.
 
Allora spiegamoci meglio.
Per trasferire un libretto delle misure con coord. polari, prelevato dal 
catasto,ti devi leggere e trascrivere i punti sul cad con probabili errori 
di lettura e trascrizione. Punto.
Se invece, come faccio con le coord. cartesiane, faccio riconoscere la 
pagina con l'OCR, la importo con excel e la esporto in formato txt con i 
dati separati da virgola, il tutto avviene automaticamente senza digitazione 
ed errori.
Mi sono spiegato?
 
 
-- 
Ciao 
 
 

 
 
 
 
Si, ti sei spiegato.
 
Vediamo se mi spiego anch'io:
 
Immagino che il trascrivere un libretto pregeo serva per fare una 
riconfinazione.
 
Le coordinate cartesiane che ti vengono fornite con il libretto pregeo, 
sono coordinate calcolate dall'elaborazione pregeo, che come avrai notato 
si tratta di una rototraslazione con variazione di scala sulla base dei 
punti fiduciali utilizzati.
 
Prima regola importante per una riconfinazione ï¿œ quella di utilizzare le 
misure "non trattate" in special modo da pregeo per il quale gli algoritmi 
di calcolo sono sconosciuti.
 
Per questo ti suggerivo di partire dalle misure polari, che poi era la tua 
domanda iniziale.
 
Utilizzando l'OCR puoi scannerizzare sia il libretto che le coordinate 
calcolate. Il mio suggerimento ï¿œ quello di scannerizzare il libretto delle 
misure.
 
 
 
Ora, ottenuto il libretto delle misure procedi con il sistema piï¿œ opportuno.
 
 
 
La cosa piï¿œ semplice ï¿œ copiare il libretto su un file blocco note 
rinominato con estensione dat che puoi agevolmente importare in pregeo.
 
In pregeo NON UTILIZZANDO le coordinate dei punti fiduciali (per esempio 
rinominando i PF con altri nomi: PF01 -> 1001 oppure cancellandoli dalla 
TAF) puoi fare una elaborazione baricentrica rigida e con il programma 
Vigeo ti trasformi in DXF apribile da CAD sul quale puoi sovrapporre il tuo 
rilievo.
 
Ciao geoNick


 Ciao geoNick
 
Buona soluzione,
 
-- 
Ciao 
 
 


Non programmo pi� in AutoLisp da svariati anni, quindi riprendere il filo a 
memoria � quasi impossibile...
per� se tu hai il file .lsp di partenza (quello che scrive da coord. 
cartesiane) posse vedere se riesco ad adattarlo in coord polari.
 
Devi mandarmi anche un file di testo tipo da importare (uno vecchia maniera 
con coord cartesiane e uno con coord polari)
 
non garantisco la riuscita... ma un tentativo lo posso fare ;-)
 
gene 
 
 

 typed:

Questo l'ha fatto Maci, a proposito, dov'� finito?
 
**********************************************************
 
;;; Restituisci un rilievo da un elenco di punti di un file TXT
 
************************************************************
 
; variabili generali di default
 
(setq ril:dx 0.15 ;offset X posizione testo
 
ril:dy 0.05 ;offset Y posizione testo
 
ril:ht 0.40 ;altezza testo
 
ril:sep "," ;separatore valori nel file
 
ril:rot 0.0 ;rotazione del testo
 
ril:lap "punti" ;layer su cui disegnare i punti
 
ril:lat "nomi" ;layer su cui scrivere i testi
 
)
 
 
 
(defun c:rest_ril ()
 
(if (null (tblsearch "layer" ril:lap)) (command ".-layer" "_n"
 
ril:lap ""))
 
(if (null (tblsearch "layer" ril:lat)) (command ".-layer" "_n"
 
ril:lat ""))
 
(setq ril:htt (cdr (assoc 40 (tblsearch "style" (getvar "TEXTSTYLE")))))
 
(setq ril:htt (if (= 0.0 ril:htt) T nil))
 
(if (null ril:htt) (command "_.style" "" "" ril:ht "" "" "" "" ""))
 
(setq ril:file (getfiled "Scegli file coordinate" "" "txt" 4))
 
(setq ril:desc (open ril:file "r"))
 
(setq ril:riga t)
 
(setq ril:con 0)
 
(while ril:riga
 
(setq ril:riga (read-line ril:desc))
 
(if ril:riga
 
(progn
 
(setq ril:pos 0
 
ril:lung (strlen ril:riga)
 
ril:pt (ril:val)
 
ril:N (atof (ril:val))
 
ril:E (atof (ril:val))
 
ril:con (1+ ril:con)
 
)
 
(setvar "CLAYER" ril:lap)
 
(command "_.point" "_non" (list ril:E ril:N))
 
(setvar "CLAYER" ril:lat)
 
(command "_.text" "_non" (list (+ ril:E ril:dx) (+ ril:N ril:dy)))
 
(if ril:htt (command ril:ht))
 
(command ril:rot ril:pt)
 
)
 
)
 
)
 
(alert (strcat "\nSono stati importati correttamente " (itoa ril:con)
 
" punti."))
 
(princ)
 
)
 
(defun ril:val ()
 
(setq ril:chr "")
 
(while (/= ril:chr ril:sep)
 
(setq ril:pos (1+ ril:pos)
 
ril:chr (substr ril:riga ril:pos 1)
 
)
 
(if (> ril:pos ril:lung)
 
(setq ril:chr ril:sep)
 
)
 
)
 
(setq ril:ret (substr ril:riga 1 (1- ril:pos ))
 
ril:riga (substr ril:riga (1+ ril:pos) ril:lung)
 
ril:pos 0
 
)
 
(eval ril:ret)
 
)
 
 
 
;(princ "\nUtility per ricostruire un rilievo da un elenco di coordinate
 
;caricata.\nby Maci 24.01.09\nDigita 'rest_ril' per avviare il comando")
 
(princ)
 
______________________________________________________
Questo � un file di coord. cartesiane. Per le polari � inutile che ti 
dica......
CODICE, ANGOLO, DISTANZA
______________________________________________________
PF05/0190/D597,1286.729,1330.032
PF06/0190/D597,1586.193,1410.33
PF10/0190/D597,2101.91,1335.852
PF09/0190/D597,1819.598,1735.548
100,1640.12,1466.843
200,1575.839,1452.013
300,1673.21,1577.774
400,1785.063,1703.275
500,1569.18,1487.505
101,1638.597,1411.104
102,1650.912,1424.043
103,1653.686,1434.051
104,1660.767,1459.609
105,1663.971,1471.173
106,1608.919,1486.656
107,1605.683,1474.977
108,1598.557,1449.432
109,1596.076,1420.423
201,1589.058,1422.291
202,1588.086,1422.525
203,1569.812,1426.917
204,1535.783,1442.857
205,1542.67,1467.712
206,1544.286,1473.543
207,1551.178,1498.418
208,1605.791,1475.363
209,1598.897,1450.489
210,1597.282,1444.658
211,1592.882,1428.777
212,1589.828,1429.536
 
-- 
Ciao 
 
 


 
Ecco qua
copia incolla e prova
N.B. nel lisp che mi hai mandato le coordinate venivano scritte invertite 
cio� "Codice,Y,X" fai una prova...
in questo lisp i valori importati sono: "Codice, angolo (gradi centesimali), 
distanza"
dove l'angolo da gradi centesimali viene convertito in gradi e la distanza � 
dal punto 0,0 del disegno.
Praticamente le coordinate da importare sono considerate polari rispetto al 
punto 0,0
 
ciao
gene
 
 
**********************************************************
 
;;; Restituisci un rilievo da un elenco di punti di un file TXT
 
************************************************************
 
 
 
; funzione di conversione gradi centesimali in radianti
 
(defun cir (a)
 (* pi(/ a 200.0))
)
 
 
 
 
; variabili generali di default
 
(setq ril:dx 0.15 ;offset X posizione testo
 
ril:dy 0.05 ;offset Y posizione testo
 
ril:ht 0.40 ;altezza testo
 
ril:sep "," ;separatore valori nel file
 
ril:rot 0.0 ;rotazione del testo
 
ril:lap "punti" ;layer su cui disegnare i punti
 
ril:lat "nomi" ;layer su cui scrivere i testi
 
)
 
 
 
(defun c:pol ()
 
(if (null (tblsearch "layer" ril:lap)) (command ".-layer" "_n"
 
ril:lap ""))
 
(if (null (tblsearch "layer" ril:lat)) (command ".-layer" "_n"
 
ril:lat ""))
 
(setq ril:htt (cdr (assoc 40 (tblsearch "style" (getvar "TEXTSTYLE")))))
 
(setq ril:htt (if (= 0.0 ril:htt) T nil))
 
(if (null ril:htt) (command "_.style" "" "" ril:ht "" "" "" "" ""))
 
(setq ril:file (getfiled "Scegli file coordinate" "" "" 4))
 
(setq ril:desc (open ril:file "r"))
 
(setq ril:riga t)
 
(setq ril:con 0)
 
(while ril:riga
 
(setq ril:riga (read-line ril:desc))
 
(if ril:riga
 
(progn
 
(setq ril:pos 0
 
ril:lung (strlen ril:riga)
 
ril:pt (ril:val)
 
ril:N (atof (ril:val))
 
ril:E (atof (ril:val))
 
ril:con (1+ ril:con)
 
)
 
(setvar "CLAYER" ril:lap)
 
(setq pnt1 (polar '(0 0) (cir ril:N) ril:E))   ;calcola il punto
 
(command "_.point" "_non" pnt1)   ;disegna il punto
 
 
(setvar "CLAYER" ril:lat)
 
(command "_.text" "_non" (list (+ (car pnt1) ril:dx) (+ (cadr pnt1) 
ril:dy))) ;scrive il testo alla distanza stabilita

;caricata.\nby Maci 24.01.09\n modificata da Genep per
;coordinate polari\nDigita 'pol' per avviare il comando")
 
(princ)
 
 
 


 
dimenticavo il comando �: pol
 
ciao
gene
 
 


 
le coordinate sono invertite perch� � cos� che succede tra autocad e e 
cartesiane di tipografia.
Se non le inverti il disegno viene "specchiato.
 
-- 
Ciao 
 
 

 distanza è dal punto 0,0 del disegno.

Grazie, proverò e ti farò sapere
 
-- 
Ciao 
 
 

 distanza è dal punto 0,0 del disegno.

-- 
Ciao 
 
 


 
 
 
autocad > formato > unità > direzione
 
guarda un pò se il problema è lì...............
 
 
 
 
-- 
www.studiomirano.it
 

 typed:

no, non è lì, è proprio che gli angoli sono tutti sballati e senza una 
logica precisa.
Se ruoto tutto il rilievo allineandolo angolarmente al primo punto, gli 
altri angoli non corrispondono a quelli letti dal file .txt.
Boooh?
 
-- 
Ciao 
 
 

Il giorno giovedì 2 maggio 2013 17:21:29 UTC+2, Il grande fardello ha scritto: > In news:kltuuo$ec2$
1...@speranza.aioe.org
, 
www.studiomirano.it
 typed: > On 02/05/2013 16:53, Il grande fardello wrote: >> i punti li importa ma: >> un punto importato con angolo 200,0000 g. centesimali, (disegnata la >> stazione 100 su coord. 0.00,0.00), e misurata la distanza da il >> valore dell'angolo 300,0000 g >> Perché? >> > > > > autocad > formato > unità > direzione > > guarda un pò se il problema è lì............... no, non è lì, è proprio che gli angoli sono tutti sballati e senza una logica precisa. Se ruoto tutto il rilievo allineandolo angolarmente al primo punto, gli altri angoli non corrispondono a quelli letti dal file .txt. Boooh? -- Ciao
 
Attenzione ai separatori di decimali e di valori.
Nella variabile ril:sep viene impostato il separatore di campi per ogni riga:
ril:sep "," ;separatore valori nel file 
Se tale separatore è lo stesso del separatore decimale il lisp non legge correttamente i dati.
Meglio scegliere ";" come separatore dei campi.
Ciao Claudio

Calma calma...
il separatore � correttamente una virgola, perch� il separatore dei decimali 
in autocad � il punto.
 
il problema che riscontri forse � la conversione fra gradi centesimali e 
gradi (cartesiani?)!
100 gradi centesimali corrispondono a 90 gradi cartesiani!
200 a 180� ecc ecc
 
se provi ad importare questo test:
 
test,100.00,45.00
 
ottieni un punto a 45 unit� di distanza dall'origine 0,0 con un angolo di 
90� (cio� in autocad sulla verticale di 0,0)
 
se invece le misure che inserisci sono gi� in gradi cartesiani, dimmelo che 
elimino la conversione
 
ciao
gene
 
 
 
 

E dimmi anche se hai necessit� di ruotare i disegni una volta importati i 
valori angolari,
perch� la rotazione la posso impostare automaticamente.
 
ciao
gene
 
 


se 200 diventa 300 allora � solo una questione che � tutto 
ruotato...........se invece ci sono dei casi in cui 200 diventa 305 o 
comunque situazioni diverse, il problema � altrove
 
 
 
-- 
www.studiomirano.it
 

 Calma calma... il separatore � correttamente una virgola, perch� il separatore dei decimali in autocad � il punto. il problema che riscontri forse � la conversione fra gradi centesimali e gradi (cartesiani?)! 100 gradi centesimali corrispondono a 90 gradi cartesiani! 200 a 180� ecc ecc se provi ad importare questo test: test,100.00,45.00 ottieni un punto a 45 unit� di distanza dall'origine 0,0 con un angolo di 90� (cio� in autocad sulla verticale di 0,0) se invece le misure che inserisci sono gi� in gradi cartesiani, dimmelo che elimino la conversione ciao gene
 
Attenzione, prima si deve verificare che nel file il separatore dei decimali sia il . perchè se così non fosse la lettura nel file non potrebbe funzionare correttamente.
Infatti, la lettura nel file viene fatta in questo modo:
- leggo una riga
- in questa, leggo un carattere alla volta finchè incontro il carattere separatore (,)
Ciò significa che se nel file ho la seguente riga:
test,100,00,45,00 
i tre valori che il lisp estrarrà sono:
test
100
00
che non sono corretti.
Ciao Claudio

 Ciao Claudio
 
Nel file ci sono le virgole per separare i dati e il punto separatore 
decimali.
Eccolo:
 
PF15,229.2190,136.199
PF16,313.6250,270.271
101,184.2650,53.798
102,226.9460,39.040
128,33.0560,25.451
129,89.1160,43.670
130,105.4360,71.294
131,140.5680,55.511
132,139.6630,57.091
134,147.9700,22.543
154,144.6060,31.150
135,214.7860,6.848
 
-- 
Ciao 
 
 

In news:5183d104$0$37131$
4faf...@reader1.news.tin.it
,
Il grande fardello <nonte...@virgilio.it.invalid> typed:

Aggiungo che ho un lisp che fa lo stesso lavoro perfettamente ma con dati 
digitati da tastiera.
Rieccolo:
 
; *********************************************************************
;            DISEGNA UN PUNTO DI COORDINATE POLARI DATE  (Punto per polari)
; *********************************************************************
 
(defun c:polari (/ ht xyst xytx xnomep ynomep postx nomep nomep1 nomestr 
stringa staz ang1 np x y dtr dis pt)
 (setvar "blipmode" 1)
 (setvar "AUNITS" 2)
 (setvar "ANGDIR" 1)
 (setvar "ANGBASE" ( * pi 0.5))
 (setvar "AUPREC" 4)
 (setvar "LUNITS" 2)
 (setvar "LUPREC" 3)
 (setvar "PDMODE" 3)
 (setvar "PDSIZE" 2.0000)
 (setvar "OSMODE" 0)
 
 (setvar "CMDECHO" 0)
 
 ;se non esiste il layer TESTI, lo crea
 (IF (not (TBLSEARCH "LAYER" "TESTI"))
  (COMMAND "_LAYER" "_N" "TESTI" "_C" "1" "TESTI" ""));fine if
 
 ;se non esiste il layer PUNTI, lo crea
 (IF (not (TBLSEARCH "LAYER" "PUNTI"))
  (COMMAND "_LAYER" "_N" "PUNTI" "_C" "3" "PUNTI" ""));fine if
 
 ;se HTES non � impostato, preimposta HTES
 (if (not htes) (setq htes 4.0));fine if
 
 ;chiede l'altezza per il testo
 (setq ht (getreal (strcat "\nAltezza testi <" (rtos htes 2 2) ">: ")));fine 
setq
 
 ;se HT non � stato impostato, significa che � stato confermato HTES, quindi 
lo assegna
 (if ht (setq htes ht));fine if
 
  (command "stile" "" "" htes "" "" "" "" "")
 
 (setq STAZ nil)
 (while (not STAZ)
  (setq staz (getint "\nSTAZIONE N.: "))
 );wend
 (setq XYST nil)
 (while (not XYST)
  (setq xyst (getpoint "\nCoordinate STAZIONE: "))
 );wend
 (setq xytx (LIST (+ (* 2 htes) (CAR XYST)) (+ (* 2 htes) (CADR XYST))))
 
 (COMMAND "layer" "R" "Punti" ""
  "punto" xyst
  "layer" "R" "Testi" ""
  "testo" xytx 100 staz
 );fine command
 
 (setq nomep (1+ staz) ang1 T)
 
(setq nomestr (getstring (strcat "\nPunto battuto: <" (itoa nomep) ">")))
(if (not nomestr) ;se nomestr � = NIL (ha ricevuto un INVIO)
(setq nomestr (itoa nomep)) ;imposta nomestr=nomep, ma informato STRING
(setq nomep (atoi nomestr)) ;altrimenti reimposta nomep=nomestr, ma in 
formato INTEGER
);fine if
 
 
 (while ang1  ;finch� ang1 � impostato... continua il ciclo
 
  (setq ang1 (getreal "\nAngolo: "))
  (if ang1
   (progn
    (initget 1)
    (setq dis (getreal "\nDistanza: "))
    (setq dtr (* pi (/ ang1 200.0)))
    (setq x (+ (CAR XYST) (* dis (sin dtr))))
    (setq y (+ (CADR XYST) (* dis (cos dtr))))
    (setq pt (list x y))
    (setq xnomep (+ X htes))
    (setq ynomep (+ y htes))
    (setq postx (list xnomep ynomep))
    (command "layer" "R" "Punti" ""
     "punto"  pt
     "layer" "R" "Testi" ""
     "testo"  postx 100 nomep
    );fine command
 
    (setq nomep (1+ nomep)
     NOMESTR (itoa nomep)
     nomep (getint (strcat "\n \n \nPunto battuto n.<" NOMESTR ">: "))
     );fine setq
    (if nomep (setq NOMESTR (itoa nomep))(setq nomep (atoi nomestr)));fine 
if
 
   );fine progn
  );fine if
 );fine while
(prompt "\n \nTerminato")
(princ)
 
);fine defun
 
-- 
Ciao 
 
 

mmm.....hai settato la variabile che da precedenza ai dati inputati dal 
lisp rispetto a eventuali osnap ?
 
OSNAPCOORD



 
??????
 
-- 
Ciao 
 
 


 
non mi hai risposto al mio messaggio precedente così te lo rimando:
 
il problema che riscontri forse è la conversione fra gradi centesimali e
gradi (cartesiani?)!
100 gradi centesimali corrispondono a 90 gradi cartesiani!
200 a 180° ecc ecc
 
se provi ad importare questo test:
 
test,100.00,45.00
 
ottieni un punto a 45 unità di distanza dall'origine 0,0 con un angolo di
90° (cioè in autocad sulla verticale di 0,0)
 
se invece le misure che inserisci sono già in gradi cartesiani, dimmelo che


 135,214.7860,6.848
 
Lo importa correttamente! Ma devi dirmi se i gradi sono CENTESIMALI o
CARTESIANI ....
Ciao
Gene

 CARTESIANI ....
 
Pardon,
gradi CENTESIMALI o SESSAGESIMALI.
 
ho modificato il lisp di Maci per l'acquisizione di punti espressi in coord. 
polari con gradi CENTESIMALI
come mi era sembrata la tua richiesta...
 
ciao
gene
 
 

 (setvar "OSMODE" 0)
 
Il problema � proprio questo!!!!
lanciando questo lisp fai un casino alle impostazioni delle unit� angolari:
 
 (setvar "blipmode" 1) ;mette un marcatore sui punti
 (setvar "AUNITS" 2) ;imposta i gradi centesimali   <<<<<<<??????
 (setvar "ANGDIR" 1) ;conta gli angoli in senso orario <<<<<<<<???????
 (setvar "ANGBASE" ( * pi 0.5)) ;setta la base degli angoli rispetto alla 
corrente UCS a P greco mezzi (???) quindi la ruota di 90� <<<<<<???????
 (setvar "AUPREC" 4) ; setta il numero dei decimali dopo la virgola
 (setvar "LUNITS" 2) ;imposta l'unita decimale
 (setvar "LUPREC" 3) ;numero dei decimali per le linee
 (setvar "PDMODE" 3) ;mostra i punti con la crocetta
 (setvar "PDSIZE" 2.0000) ;specifica la dimensione della crocetta sul punto
 
ciao
gene
 
 
 

In 
news:1831704503389354494.621835...@news.tiscali.it
,
addre...@invalid.invalid <addre...@invalid.invalid> typed:

Centesimali
 
-- 
Ciao 
 
 

 typed:

E il tutto � proprio come voglio che sia.
 
-- 
Ciao 
 
 


 
ma allora � tutto a posto, non capisco cosa non funziona!
gli angoli che trovi strani sono dovuti alle impostazioni che hai detto di 
volere.
Veramente non afferro il problema!
 
ciao
gene 
 
 


se questa variabile non � ben settata, autocad potrebbe non disegnare 
l'angolo secondo l'input del lisp, ma secondo l'osnap pi� vicino
 
 
 
-- 
www.studiomirano.it
 

 typed:

Grazie per la tua pazienza.
Non so cosa succeda nell'importazione del file .txt.
Ti allego il libretto da importare ed il risultato dopo l'importazione:
 
Libretto da importare
PF15,229.2190,136.199
PF16,313.6250,270.271
101,184.2650,53.798
102,226.9460,39.040
128,33.0560,25.451
129,89.1160,43.670
130,105.4360,71.294
131,140.5680,55.511
132,139.6630,57.091
134,147.9700,22.543
154,144.6060,31.150
135,214.7860,6.848
 
Risultato su cad
PF15,270.7810,136.199
PF16,186.3750,270.271
101,315.7350,53.798
102,273.0540,39.040
128,66.9440,25.451
129,10.8840,43.670
130,394.5640,71.294
131,359.4320,55.511
132,360.3370,57.091
133,352.0300,22.543
134,355.3940,31.150
135,285.2140,6.848
 
 
-- 
Ciao 
 
 

 typed:

Non mi ha mai dato problemi
 
-- 
Ciao 
 
 

> Grazie per la tua pazienza.
 
Ormai mi sono appassionato...

Il risultato � corretto:
tu hai come impostazione
la rotazione del calcolo degli angoli che parte da 90� anzich� da 0� (menu 
FORMAT > UNITS > DIRECTION)
e l'impostazione CLOCKWISE anzich� il contrario.
Se provi a calcolare gli angoli in senso ANTIORARIO e da EST (sinistra) e 
impostando il tipo centesimale (GRADS) i numeri tornano giusti.
 
Posso capire la rotazione del disegno ma non capisco perch� cambiare il 
verso antiorario, perch� cos� quando misuri trovi gli angoli esplementari 
(complementari dell'angolo giro ...l'ho trovato su wikipedia!!!)
 
ciao
gene 
 
 

 gene
 
Non so se sei geometra ma per come mi suggerisci mi sembra di no.
comunque ho fatto come dici tu ed il risultato � sempre uguale.
In topografia comunque il nord � parallelo all'asse Y del cad ed � 0 gradi e 
la rotazione in senso orario.
Hai provato a digitare un punto caricando il mio lisp che ho mandato qualche 
giorno fa, cio� questo che funziona benissimo?
Si potrebbe adattarlo per far si che leggesse un file .txt invece di 
digitare da tastiera?
 
; *********************************************************************
;            DISEGNA UN PUNTO DI COORDINATE POLARI DATE  (Punto per polari)
; *********************************************************************
 
(defun c:polari (/ ht xyst xytx xnomep ynomep postx nomep nomep1 nomestr
stringa staz ang1 np x y dtr dis pt)
 (setvar "blipmode" 1)
 (setvar "AUNITS" 2)
 (setvar "ANGDIR" 1)
 (setvar "ANGBASE" ( * pi 0.5))
 (setvar "AUPREC" 4)
 (setvar "LUNITS" 2)
 (setvar "LUPREC" 3)
 (setvar "PDMODE" 3)
 (setvar "PDSIZE" 2.0000)
 (setvar "OSMODE" 0)
 


Stavolta � a prova di bomba!
(spero ;-)
 
il comando l'ho cambiato in "polari" per non confonderlo con qualcos'altro
 
ciao
gene
 
 
**********************************************************
 
;;; Restituisci un rilievo da un elenco di punti di un file TXT
 
************************************************************
 
;impostazioni di ambiente
 
 (setvar "AUNITS" 2) ;gradi centesimali
 (setvar "ANGDIR" 1) ;calcola gli angoli in senso orario
 (setvar "ANGBASE" ( * pi 0.5)) ;calcola gli angoli da nord (y)
 (setvar "AUPREC" 4) ;4 decimali
 (setvar "LUNITS" 2)
 (setvar "LUPREC" 3)
 (setvar "PDMODE" 3)
 (setvar "PDSIZE" 2.0000)
 (setvar "OSMODE" 0)
 
 
 
; funzione di conversione gradi centesimali in radianti
 
(defun cir (a)
 (* pi(/ a 200.0))
)
 
 
 
 
; variabili generali di default
 
(setq ril:dx 0.15 ;offset X posizione testo
ril:dy 0.05 ;offset Y posizione testo
ril:ht 0.40 ;altezza testo
ril:sep "," ;separatore valori nel file
ril:rot 0.0 ;rotazione del testo
ril:lap "punti" ;layer su cui disegnare i punti
ril:lat "nomi" ;layer su cui scrivere i testi
)
 
 
 
(defun c:polari ()
 
(if (null (tblsearch "layer" ril:lap)) (command ".-layer" "_n" ril:lap ""))
 
(if (null (tblsearch "layer" ril:lat)) (command ".-layer" "_n" ril:lat ""))
 
(setq ril:htt (cdr (assoc 40 (tblsearch "style" (getvar "TEXTSTYLE")))))
 
(setq ril:htt (if (= 0.0 ril:htt) T nil))
 
(if (null ril:htt) (command "_.style" "" "" ril:ht "" "" "" "" ""))
 
 (setq ril:file (getfiled "Scegli file coordinate" "" "" 4))
 
 (setq ril:desc (open ril:file "r"))
 
 (setq ril:riga t)
 
 (setq ril:con 0)
 
 (while ril:riga
 
  (setq ril:riga (read-line ril:desc))
 
  (if ril:riga
 
   (progn
 
    (setq
     ril:pos 0
     ril:lung (strlen ril:riga)
     ril:pt (ril:val)
     ril:N (atof (ril:val))
     ril:E (atof (ril:val))
     ril:con (1+ ril:con)
    )
 
    (setvar "CLAYER" ril:lap)
 
    (setq x (* ril:E (sin (cir ril:N) ))) ;calcola la X del punto
    (setq y (* ril:E (cos (cir ril:N) ))) ;calcola la Y del punto
    (setq pnt1 (list x y))
 
    (command "_.point" "_non" pnt1) ;disegna il punto
 
 
    (setvar "CLAYER" ril:lat)
 
    (command "_.text" "_non" (list (- (car pnt1) ril:dy) (+ (cadr pnt1) 
ril:dx))) ;scrive il testo alla distanza stabilita

;coordinate polari\nDigita 'polari' per avviare il comando")
 
(princ)
 
 
 

 135,214.7860,6.848
 
una curiositï¿œ: ma da pregeo 8 in poi su diverse misure, se non su 
tutte, c'ï¿œ anche l'angolo verticale. Lï¿œ come fai? Riduci la distanza 
prima?
 
 

 gene
 
finalmenteeeee! e, come disse la mosca cocchiera "hai visto quanto abbiamo 
lavorato?"
 
Ho modificato solo queste righe:
ril:rot 0.0 ;rotazione del testo con ril:rot 100.0 ;rotazione del testo per 
far scrivere il testo in orizzontale;
 
    (command "_.text" "_non" (list (- (car pnt1) ril:dy) (+ (cadr pnt1)
 ril:dx))) ;scrive il testo alla distanza stabilita
 
con ..... (+car pnt1) perch� non mi spostava il testo a destra rispetto 
all'asse y
 
Ti ringrazio molto e ti sono debitore
 
 
-- 
Ciao 
 
 

 prima?
 
� giusto il tuo appunto ma questa applicazione serve per riconfinazioni di 
libretti "ante 8".
Per gli altri basta lo scanner, il riconoscimento tramite OCR, il 
salvataggio .dat e rielaborazione con pregeo 10.
Poi applicazioni tipo Leonardo o altre free per esportare in dxf.
Aggiustando il .lisp questa procedura si potrebbe applicare anche ai 
libretti ante 8
 
-- 
Ciao 
 
 

In news:5188b521$0$1374$
4faf...@reader2.news.tin.it
,
Il grande fardello <nonte...@virgilio.it.invalid> typed:

oops "post 8"
 
-- 
Ciao