Newsgroup: it.comp.software.cad
Titolo: lisp interpolazione 3dpoly

quvorrei porVi un esito che non riesco a risolvere in modo veloce, e
tutte le volte butto via del gran tempo... ho cercato e ricercato ma
avrei bisogno di un lisp, o qualcosa del genere, che dovrebbe ottenere
questo risultato:
- data una 3dpoly di "N" vertici e, per semplificare diciamo, soltanto
il primo e l'ultimo di questi vertici hanno quota (Z) diversa da zero;
- è possibile ottenere l'interpolazione lineare della sola coordinata
Z (quota) nei vertici intermedi della 3dpoly? (mantenendo le altre due
coordinate X e Y inalterate)
- ad esempio anche in un file di testo da poter riutilizzare come
script per rigenerare la 3dpoly avente tutti i vertici con quota
diversa da zero.
ringrazio per l'attenzione... attendo trepidante. saluti

 coordinate X e Y inalterate)
L'operazione di interpolazione consente di calcolare i parametri di una
curva regolare che approssimi l'andamento irregolare dei dati noti ed č
tipicamente effettuata per ottenere una simulazione di dati
sperimentali.
In particolare, l'interpolazione lineare consente di ottenere i
parametri di una linea retta per la quale sia minima la somma delle 
distanze dei punti dalla retta stessa.
In questo caso, immaginando di visualizzare l'andamento della 3dpoly in
un piano verticale con i singoli tratti allineati, si tratterebbe di 
ottenere un andamento delle quote dei vertici della 3dpoly che giaccia 
lungo una linea retta verosimilmente inclinata.
Un altro tipo di calcolo consiste  nell' unire con una linea  retta il 
primo e l'ultimo vertice, sempre  immaginando di visualizzare 
l'andamento della 3dpoly in un piano verticale con i singoli tratti 
allineati, e di proiettare la quota sulla retta risultante unendo 
ciascun vertice alla retta calcolata con una linea verticale.
Ho interpretato con uno di questi due tipi di calcolo quello che
desideri ottenere?
Alessandro.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


si ma il lisp? 

spigodesign ha scritto:

prova a chiedere a rpor66 
ha soddisfatto molte richieste
è un programmatore molto preparato 
http://www.cad3d.it/forum1/showthread.php?p=77969#post77969
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 si ma il lisp?
Che trepidanza spigodesign 4all !!!
Ancora PRIMA di indicare quale dei due casi (completamente diversi uno
dall'altro) ti interessa vorresti già avere il LISP !!



se ho compreso il problema e facendo un esempio la polilinea 3d è come
una strada tortuosa di campagna che  nel suo percorso ha le quote
variabili ma non uniformi e lineari, quindi a mio giudizio l'utente
vuole una polilinea che abbia le caratteristiche di una linea retta, e
che segue l'andamento delle tortuosità, ad esempio un elica che
procede ad andamento regolare


NO a me non serve GRAZIE !!!! 

rispondo per la PRIMA volta e mi scuso per il vespaio che ho
scatenato...
anche se ho visto che il problema non è solo mio.
il mio problema dovrebbe essere più o meno il secondo esposto - faccio
un'altro esempio per spiegare meglio: la 3dpoly in realtà ha pendenza
costante fra i due punti estremi di quota nota (forse non è una vera
interpolazione, piuttosto una semplice calcolo (pendenza per distanza
per trovare il dislivello tra il primo vertice della 3dpoly noto e il
secondo incognito) ma sviluppo planimetrico diverso da una retta, (la
strada tortuosa, una curva in generale approssimata con una spezzata,
la 3dpoly appunto) quindi calcolata la pendenza, (il dislivello è dato
dai due punti noti e la lunghezza dallo sviluppo della 3dpoly) vorrei
ottenere la quota degli altri vertici che compongono la 3dpoly
grazie per l'aiuto di tutti voi. spigodesign


Ci sono in rete diversi file lsp che restituiscono tutte e 3 le coordinate
dei vertici di polilinee. E' sufficiente cancellare la parte che riguarda le
coord. XY.
Te ne allego uno di esempio; lasco a te l'ultima fatica di modificare questo
o cercarne degli altri.
(Defun C:ScrivipolyXYZ ()
  (Setq Pol (Entsel "\n....... Seleziona La Polilinea: "))
  (Setq Separatore
	 (Getstring "\n....... Carattere Separatore Di Num X Y Z: ")
  )
  (Setq
    Nomefile (Getfiled "File Txt Con Le Coordinate Della Polilinea"
		       (Getvar "Dwgprefix")
		       "Txt"
		       1
	     )
  )
  (If (And Pol Nomefile)
    (Progn
      (If (= Separatore "")
	(Setq Separatore " ")
      )
      (Setq Ff (Open Nomefile "W"))
      (If (= (Cdr (Assoc 0 (Entget (Car Pol)))) "LWPOLYLINE")
	(Progn (Setq Li-Crea Nil)
	       (Setq Conta 0)
	       (Setq I 0)
	       (setq Z(Cdr (Assoc 38 (Entget (Car Pol)))))
	       (Repeat (Length (setq lwp(entget(car pol))))
		 (Setq Lwele (Nth I Lwp))
		 (If (= (Car Lwele) 10)
		   (Progn (Setq X (Cadr Lwele))
			  (Setq Y (Caddr Lwele))
			  (Setq Xconta (Itoa (Setq Conta (+ Conta 1))))
			  (Write-Line
			    (Strcat Xconta
				    Separatore
				    (Rtos X 2 2)
				    Separatore
				    (Rtos Y 2 2)
				    Separatore
				    (Rtos Z 2 2)
			    )
			    Ff
			  )
		   )
		 )
		 (Setq I (+ I 1))
	       )
	       (Close Ff)
	)
	)
	(If (= (Cdr (Assoc 0 (Entget (Car Pol)))) "POLYLINE")
	  (Progn (Setq Li-Crea Nil)
		 (Setq Pol-Princ (Entget (Car Pol)))
		 (Setq Vertice (Entnext (Car Pol)))
		 (Setq Vert (Entget Vertice))
		 (Setq Conta 0)
		 (While (/= (Cdr (Assoc 0 Vert)) "SEQEND")
		   (Setq X (Car (Cdr (Assoc 10 Vert))))
		   (Setq Y (Cadr (Cdr (Assoc 10 Vert))))
		   (Setq Z (Caddr (Cdr (Assoc 10 Vert))))
		   (Setq Conta (+ Conta 1))
		   (Setq Xconta (Itoa Conta))
		   (Write-Line
		     (Strcat Xconta
			     Separatore
			     (Rtos X 2 2)
			     Separatore
			     (Rtos Y 2 2)
			     Separatore
			     (Rtos Z 2 2)
		     )
		     Ff
		   )
		   (Setq Vertice (Entnext Vertice))
		   (Setq Vert (Entget Vertice))
		 )
		 (Close Ff)
	  )
	)
	(alert (Strcat "Creato Il File: " Nomefile))
	(princ)
      )
    )
  )
(Princ
  "\n <Copyright Ing. Claudio Granuzzo - 2003> Digitare ScrivipolyXYZ Per
Lanciare Il Programma!"
)
(Princ)
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

ti ringrazio tanto per la velocità della risposta joseph, sicuramente
il lisp è utile ma il mio problema più grande non riguardava tanto
l'estrazione quanto "l'interpolazione" o il calcolo delle quote
incognite della 3dpoly.
http://groups.google.it/group/it.comp.software.cad/tree/browse_frm/thread/b11c523d3c777fbc/e56377733b1c9668?rnum=1&hl=it&_done=%2Fgroup%2Fit.comp.software.cad%2Fbrowse_frm%2Fthread%2Fb11c523d3c777fbc%2F6ca1520867667be2%3Fhl%3Dit%26#doc_658985e5f0a9b485
grazie mille comunque. spigodesign

 -
A me sembrava che volessi solo le coordinate dei vertici, e non di altri
punti intermedi.
Se vuoi altri punti, usa il comando Dividi o MIsura per posizionare dei
Punti sulla Polilinea 3D in numero o a distanza prefissata, poi li selezioni
tutti e con Interroga - Elenca otterrai un file testo con tutte le
coordinate, file che puoi manipolare a piacere,
Sicuramente ci sarà in rete anche un Lisp che restituisce le 3 coordinate di
punti già posizionati.
Ciao


 ha scritto nel messaggio 
news:1153664466.5...@p79g2000cwp.googlegroups.com...


 ha scritto nel messaggio
news:1153495667.7...@m73g2000cwd.googlegroups.com...


 vorrei ottenere la quota degli altri vertici che compongono la 3dpoly.
- altro esempio:
questo script definisce la mia 3dpoly
3dpoly
2321047.873,4885796.816,0.580
2321047.887,4885795.817,0.000
2321048.020,4885794.826,0.000
2321048.112,4885793.831,0.000
2321048.160,4885792.832,0.000
2321048.164,4885791.832,0.000
2321048.118,4885790.833,0.000
2321048.014,4885789.839,0.000
2321047.851,4885788.852,0.000
2321047.630,4885787.877,0.000
2321047.353,4885786.917,0.000
2321047.027,4885785.971,0.000
2321046.653,4885785.044,0.000
2321046.233,4885784.136,0.000
2321045.768,4885783.251,0.000
2321045.259,4885782.391,0.000
2321044.706,4885781.557,0.000
2321044.308,4885781.008,0.000
2321040.163,4885775.939,0.000
2321036.773,4885771.792,1.790
il primo campo è la X il secondo è la Y il terzo logicamente la quota
Z
disegnando la 3dpoly si vede che non è una retta e i punti non sono
allineati anzi in curva
l'unica cosa che è data oltre alla posizione planimetrica e che la
pendenza dal primo all'ultimo vertice è costante. l'elaborazione
dovrebbe quindi mantenere le cordinate X e Y e calcolare la quota Z,
aggiornare la poli oppure esportare tutto in file di testo per
disegnarla nuovamente con un nuovo script oppure mettere nodi o testi
con le quote aggiornate.
di nuovo ringrazio. 
spigo

 ha scritto nel messaggio
news:1153735127.4...@s13g2000cwa.googlegroups.com...


infatti sto facendo così, mi estraggo un profilo medio la livelletta
come se fosse un progetto, aggiorno le quote della livelletta, e col
tuo lisp estraggo distanze e quote.
ti ringrazio moltissimo per il momento. ciao e grazie. spigo