• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Leggi altro.

Picchettamento in lisp

peppolo

Utente poco attivo
Professione: geometra
Software: autocad
Regione: sardegna
#1
Ciao a tutti, sono nuovo del forum e mi sono affacciato da poco nel mondo del lisp...
Ho la necessità di creare un'applicazione che faccia le seguenti azioni:

-impostare le unità di misura (gradi centesimali, rotazione destra)
-selezionare la stazione di origine (magari impostarla e fare in modo che rimanga fissa, con la possibilità di cambiarla)
-selezionare l'orientamento (rispetto a un punto)
-ricavare la lettura di un punto in coordinate polari
-esportare in un file txt con numerazione progressiva.

In che modo dovrei procedere? Ricorrendo alla conversione tra coordinate cartesiane e polari?
Qualcuno è a conoscenza di un lisp che faccia le stesse cose?

Grazie a tutti!
 
Ultima modifica:

liber

Utente Standard
Professione: tiralinee
Software: autocad map
Regione: Sotto la Gabbia
#2
in sintesi ti scoccia digitare dist dal ... al, e trascrivere il tutto da te.....
 

peppolo

Utente poco attivo
Professione: geometra
Software: autocad
Regione: sardegna
#3
Non è così :mad:. Mi servono la distanza e l'angolo a partire da un punto noto e un allineamento. La procedura che uso quando devo ricavare i dati è:

-imposto le unità di misura
-imposto la nuova origine
-ruoto il disegno mettendo l'allineamento in verticale
-faccio id del punto.

se mi servono le letture da un altro punto devo rifare la procedura a partire dall'origine. Il risultato va benissimo :D ma volevo velocizzare il lavoro creando un lisp che facesse le stesse cose senza necessità di ruotare il disegno, e quindi pensavo alle coordinate cartesiane da convertire in polari.
Il problema è scriverlo in lisp dato che non lo conosco bene, chiedevo per ridurre un po' i tempi :)
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#4
Questo lisp scrive in un file txt le coordinate polari dei punti selezionati a video rispetto ad un altro punto (stazione).

L'orientamento non è (per ora) selezionabile ma impostato rispetto al nord (angolo 0,000 dell'UCS globale), al limite basta impostare in campagna, sul punto di orientamento, il relativo angolo calcolato.

Scrive azimut e distanza ridotta, i punti 3D vengono automaticamente convertiti in 2D.

Sicuramente migliorabile in futuro con le altre cose (giuste) che chiedi, per ora ti devi accontentare.
 

Allegati

peppolo

Utente poco attivo
Professione: geometra
Software: autocad
Regione: sardegna
#5
Mi accontento :D grazie mille ;)

vorrei esporre il ragionamento che ho fatto per scrivere il programma (la traduzione da linguaggio umano a lisp... eh quello per ora è un problema) in modo da avere l'opinione di chi è esperto:

1) utilizzare le variabili di autocad per impostare:
-origine della rotazione degli angoli a nord;
-rotazione degli angoli in senso orario;
-la gradazione centesimale.

2) creare una variabile stazione che abbia:
-coordinata x;
-coordinata y;
-angolo azimutale;

3) lettura dei punti:
- linea dalla stazione al punto;
- distanza dal punto alla stazione (_dist?);
- azimut della linea;
- controllo della coordinata del punto (ad es "x.stazione<x.punto" per determinare il quadrante e quindi la sottrazione di 400 gradi in base alla somma degli angoli)

4) risultati:
da scrivere in un file di testo nominato nomedisegno.txt con la sintassi stazione|puntoBattuto|distanza|angolo

5) possibilità di cambiare la stazione, con eventuale menu

6) controllo di errori.

Pensate che potrebbe funzionare, che sia completo, macchinoso o altro?
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#6
1) utilizzare le variabili di autocad per impostare:
-origine della rotazione degli angoli a nord;
-rotazione degli angoli in senso orario;
-la gradazione centesimale.
Non serve, il valore dell'angolo viene restituito in radianti (con lo zero in direzione est), bisogna convertirlo successivamente.

Il lisp che ho postato è indipendente da tutto questo in quanto calcola gli azimut con la funzione (angle) e poi converte da radianti.

Una sola cosa è importante, impostare l'UCS = Globale prima di qualunque calcolo, specialmente se tu preferissi utilizzare le formule classiche di topografia tan(AB)=XB-XA/YB-YA impostando degli IF oppure COND per l'assegnazione del quadrante.


2) creare una variabile stazione che abbia:
-coordinata x;
-coordinata y;
-angolo azimutale;
Per l'angolo azimutale vale quello scritto sopra.


3) lettura dei punti:
- linea dalla stazione al punto;
- distanza dal punto alla stazione (_dist?);
- azimut della linea;
- controllo della coordinata del punto (ad es "x.stazione<x.punto" per determinare il quadrante e quindi la sottrazione di 400 gradi in base alla somma degli angoli)
La linea dalla stazione al punto non serve, la distanza si calcola con (distance).


4) risultati:
da scrivere in un file di testo nominato nomedisegno.txt con la sintassi stazione|puntoBattuto|distanza|angolo
OK


5) possibilità di cambiare la stazione, con eventuale menu
Se ritieni di farcela fai pure, però la vedo dura, scriveresti un "vero" programma di topografia con annessi e connessi. Molto più semplice calcolare il tutto da una stazione selezionata al lancio del lisp.


6) controllo di errori.
OK
 

peppolo

Utente poco attivo
Professione: geometra
Software: autocad
Regione: sardegna
#7
L'idea era quella di impostare la funzione principale in modo tale che si possa scegliere, e quella del picchettamento come sottofunzione... Però in effetti sarebbe già un grande risultato riuscire solo a fare il picchettamento... Provo a buttare giù qualcosa, solo con le idee non combinerò niente :)
 

Vilfredo Bordiga

Utente poco attivo
Professione: architetto
Software: autoca
Regione: Lombardia
#8
Buongiorno a tutti....
E' la prima volta che vengo a conoscenza dei file lisp....anche a me servirebbe uno tipo quello fatto da voi per il picchettamento.
Purtroppo c'è un problema..ho scaricato questo ma io uso autocad in italiano e sembra non funzioni!
Qualcuno sa dirmi come posso fare o se esiste una versione in italiano?
Un ultima cosa...anche per il caricamento potete aiutarmi per autocadlt 2008 in italiano?
Grazie!
PS: scusate la mia ignoranza ma ho scoperto oggi i file lisp :D
 

Vilfredo Bordiga

Utente poco attivo
Professione: architetto
Software: autoca
Regione: Lombardia
#10
Grazie per la riposta...non ci speravo...
scusa se insisto...ma non legge nessun file lisp?
Perchè io ne ho caricato uno scaricato da un sito e lo utilizza....come mai se non li legge mi legge quello?
 

Shape

Utente Senior
Professione: Disegnatore Carpenteria
Software: Autocad, VBA-AutoLisp, Tecnometal4D, GIMP
Regione: Friuli
#11
Grazie per la riposta...non ci speravo...
scusa se insisto...ma non legge nessun file lisp?
Perchè io ne ho caricato uno scaricato da un sito e lo utilizza....come mai se non li legge mi legge quello?
Sicuro che sia un lisp e non uno script (sequenza di comandi) *.scr ?
 

Vilfredo Bordiga

Utente poco attivo
Professione: architetto
Software: autoca
Regione: Lombardia
#13
a dire il vero non me ne intendo molto...ma non capisco...è un file visualizzato come un qualsiasi file autocad che (come da istruzioni) se trascinato all'interno del disegno attiva il comando (in questo caso una tabella con i rapporti Rai
 

xmaffox

Utente poco attivo
Professione: Topografo
Software: Autocad
Regione: Emilia Romagna
#14
Salve colleghi!
ho un quesito da porvi!
Sono un topografo.. ho a che fare quotidianamente con Pratiche pregeo..
Ho sempre utilizzato una funzione del Qbasic per estrapolare dal file di Autocad le letture lineari e angolari dalla stazione da me definita. Ora che ho preso il pc nuovo con win7 a 64 bit.. questo bel programmino non funzia più.
Ho scaricato dal sito il lisp "libretto misure".. Bello.. ma ha qualche limitazione..
Qualcuno sa modificarlo o sapermi dire se esistono altri lisp che possono fare al caso mio?
-E' possibile selezionare tutti i punti da battere in una volta sola, magari utilizzando l'usilio di punti con attributo per identificare il nome del punto.
-Avrei l'esigenza di avere una precisione di lettura angolare di 4 numeri dopo la virgola (nel lisp LM ce ne sono 3 e basta)
Grazie per l'attenzione..
Saluti Geom Simone Campanini
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#15
.. ho a che fare quotidianamente con Pratiche pregeo.....Avrei l'esigenza di avere una precisione di lettura angolare di 4 numeri dopo la virgola (nel lisp LM ce ne sono 3 e basta)
Il lisp era nato per tracciamenti, la quarta cifra decimale è quasi impossibile da impostare sullo strumento.
Pregeo accetta anche (per assurdo) numeri interi, non è obbligatorio fornirgli 4 decimali, d'altronde considera che la quarta cifra in un angolo corrisponde ad uno scarto massimo di 1,5 mm su 100 metri, comunque, se è questa la tua esigenza, edita il lisp e sostituisci 3 con 4 in questa stringa (setvar "luprec" 4).

Per l'attributo NOMEPUNTO si potrebbe vedere, ma ti serve per trattare casi di circolare 2 o per modeste entità?
 

xmaffox

Utente poco attivo
Professione: Topografo
Software: Autocad
Regione: Emilia Romagna
#16
Il lisp era nato per tracciamenti, la quarta cifra decimale è quasi impossibile da impostare sullo strumento.
Pregeo accetta anche (per assurdo) numeri interi, non è obbligatorio fornirgli 4 decimali, d'altronde considera che la quarta cifra in un angolo corrisponde ad uno scarto massimo di 1,5 mm su 100 metri, comunque, se è questa la tua esigenza, edita il lisp e sostituisci 3 con 4 in questa stringa (setvar "luprec" 4).

Per l'attributo NOMEPUNTO si potrebbe vedere, ma ti serve per trattare casi di circolare 2 o per modeste entità?

Grazie Per la risposta celere!
L'attributo NomePunto lo utilizzo sopratutto per i tracciamenti di grandi opere..
Fino ad adesso utilizzavo come detto in precedenza il Qbasic. In pratica inserivo questo blocco con attributi digitando solo il nome del punto deciso a tavolino, poi, laciavo il programma che mi dava in uscita un file di coordinate x, y con specificato il nome del punto da me definito.
Cosa che non sono mai riuscito a fare con Leonardo o con Merdiana.
lo stesso applicativo per l'appunto lo utilizzavo anche per le pratiche pregeo. Inserivo i punti da battere nel libbretto in cad con questo blocco con attributi (numero punto) gli impostavo la stazione da cui volevo fossero battuti i punti, selezionavo tutto e il gioco era fatto. File di testo con le letture di tutti i punti da me istituiti fatti dalle varie stazioni.
Tu fai in modo diverso? Puoi suggerirmi qualcosa??

Grazie mille per disponibilità!

Saluti Geom. Simone.
 

GP.

Utente Senior
Professione: Nientologo
Software: uozapp
Regione: Vercelli
#17
Io utilizzo un applicativo topografico per queste operazioni.

Per i casi di modesta entità, volendo semplificare e velocizzare, mi sono creato un lisp che estrae le coordinate dei punti (blocchi con attributi nomepunto e descrizione) ed esporta le righe 8 in un file .dat per Pregeo.

Se ho capito bene credo sia quello che ti faceva il Qbasic.
 

xmaffox

Utente poco attivo
Professione: Topografo
Software: Autocad
Regione: Emilia Romagna
#18
Io utilizzo un applicativo topografico per queste operazioni.

Per i casi di modesta entità, volendo semplificare e velocizzare, mi sono creato un lisp che estrae le coordinate dei punti (blocchi con attributi nomepunto e descrizione) ed esporta le righe 8 in un file .dat per Pregeo.

Se ho capito bene credo sia quello che ti faceva il Qbasic.
Per il tracciamento utilizzo l'attext di Autocad, inserisco il blocco con attributi, estrapolo le coordinate dei vari punti poi attraverso l'ausilio di Meridiana le trasferisco sullo strumento.
Il qbasic lo utilizzavo specificatamente per gli angoli e le distanze da impostare nel Pregeo!
Sempre con l'ausilio dell'attesxt estrapolo un file di testo con tutti i punti con attributi, lancio il qbasic e gli imposto di leggere il file .txt precedentemente creato, poi gli imposto la stazione e lui mi estrapola tutte le letture di tutti punti riferiti alla stazione inserita per la lettura. Operazione ripetuta per tutte le stazioni.. Dopo cancellerò opportunamente i punti indesiderati ( tipo stazione 100 che mi batte il punto 202 che deve essere battuto invece dalla stazione 200).
Spero di non avere confuso ulteriormente le cose!
Grazie ancora.