Newsgroup: it.discussioni.geometri
Titolo: ecco un lisp per restituzione rilievi con progressive

se a qualcuno interessa, ho buttato giù questo piccolo lisp per restituire i
rilievi geometrici effettuati con il metodo delle progressive (classico
rilievo esterno di una parete perimetrale di una abitazione con finestre,
porte, ecc.. ponendo lo zero su uno spigolo della parete)
;lisp realizzato dal GEOM. MIRANO Dario 
WWW.STUDIOMIRANO.IT
;6 MARZO 2007
;DESCRIZIONE:
;Il lisp serve per restituire un rilievo effettuato con il metodo delle
distanze progressive
;Per ogni distanza progressiva che verrà inserita, sarà disegnata una
lineetta
;perpendicolare al vettore base lungo il quale sono state misurate le
progressive
;ISTRUZIONI:
;- caricare il lisp in autocad
;- lanciarlo scrivendo "progressive" e premendo invio
;- quando richiesto selezionare con il mouse il punto di partenza
;e un altro punto qualsiasi del vettore base su cui vanno tracciate le
progressive
;- inserire le progressive separate da un trattino, es: "0-100-200-250-300"
;- inserire la lunghezza delle lineette che verranno usate per tracciare le
progressive
(defun c:progressive ()
(setq partenza (getpoint "\nSelezionare il punto di partenza del vettore"))
(setq arrivo (getpoint "\nSelezionare un secondo punto del vettore"))
(setq xpartenza (rtos(car partenza)))
(setq ypartenza (rtos(cadr partenza)))
(setq xarrivo (rtos(car arrivo)))
(setq yarrivo (rtos(cadr arrivo)))
(command "_ucs" "_3"
  (strcat xpartenza "," ypartenza ",0")
   (strcat xarrivo "," yarrivo ",0")
         (strcat xarrivo ",1,0")
  )
(setq progressive (getstring "\nInserire le progressive: "))
(setq lunghezza_stanghette (getreal "\nInserire lunghezza lineette: "))
(setq carattereennesimo 0)
(setq xprogressiva "")
(setq valorecarattereennesimo "")
(setq lunghezzaprogressive (strlen progressive))
;inizio repeat
(repeat lunghezzaprogressive
(setq carattereennesimo (+ carattereennesimo 1))
(setq valorecarattereennesimo (substr progressive carattereennesimo 1))
;inizio if
(if (= valorecarattereennesimo "-")
(progn
(command "_line"
  (strcat xprogressiva ",0,0")
  (strcat xprogressiva","(rtos lunghezza_stanghette)",0")
   "")
(setq xprogressiva "")
(setq valorecarattereennesimo "")
)
);fine if
(setq xprogressiva (strcat xprogressiva valorecarattereennesimo))
);fine repeat
(command "_line"
  (strcat xprogressiva ",0,0")
  (strcat xprogressiva","(rtos lunghezza_stanghette)",0")
   "")
(command "_ucs" "_p")
)
--
Studio geometra MIRANO Dario
www.studiomirano.it
Progettazione - Direzione lavori - Catasto terreni e fabbricati -
Cartellonistica - Grafica 2D e 3D

 spigolo della parete)
Complimenti utilissimo! inoltre č anche materiale buono per il sito!
PS se posso permettermi un consiglio.........
prima di far partire la routine dovresti dovresti fargli toglieere l'osnap 
perchč se č attivo fa un casino con le linee che disegna se hai bisogno di 
aiuto fa un fischio.
Saluti Andrea 

 perchè se è attivo fa un casino con le linee che disegna se hai bisogno di



ecco l'aggiornamento:
;lisp realizzato dal GEOM. MIRANO Dario 
WWW.STUDIOMIRANO.IT
;MARZO 2007
;DESCRIZIONE:
;Il lisp serve per restituire un rilievo effettuato con il metodo delle
distanze progressive
;Per ogni distanza progressiva che verrà inserita, sarà disegnata una
lineetta
;perpendicolare al vettore base lungo il quale sono state misurate le
progressive
;ISTRUZIONI:
;- caricare il lisp in autocad
;- lanciarlo scrivendo "progressive" e premendo invio
;- quando richiesto selezionare con il mouse il punto di partenza
;e un altro punto qualsiasi del vettore base su cui vanno tracciate le
progressive
;- inserire le progressive separate da un trattino, es: "0-100-200-250-300"
;- inserire la lunghezza delle lineette che verranno usate per tracciare le
progressive
(defun c:progressive ()
(setq osnapcoordoriginale "osnapcoord")
(setvar "osnapcoord" 1)

(setvar "osnapcoord" osnapcoordoriginale)
  )