Newsgroup: it.comp.software.cad
Titolo: Quotatura con linee di estensione della medesima lunghezza.

Se interessa ho fatto un programmino in Visual Lisp per AutoCAD
2000 per la quotatura automatica architettonica che può essere scaricato
gratuitamente nel mio sito (sotto riportatto):
CARATTERISTICHE:
Programma per la quotatura prevalente di elementi civili ed architettonici
con la peculiarità di avere le linee di estensione della medesima lunghezza
e la possibilità di mettere i blocchi freccia più usati.
DESCRIZIONE:
QAA è una routine per la quotatura automatica di entità "LINEA".
La caratteristica principale è quella di disegnare le quote con linee di
estensione della medesima lunghezza, tipiche della quotatura
architettonica,
con trattino "grosso" a 45°.
Per operare è sufficiente intersecare o selezionare le entità LINEA da
quotare.
I punti di intersezione (o le estremità) saranno quelli che determineranno
le quote.
Di seguito verrà richiesto di posizionare la linea porta-quote.
Il programma QAA è di libero uso e distribuzione, si richiede solamente di
essere registrati, gratuitamente, presso la mia casella di E-mail entro 30
giorni (periodo di valutazione) a partire dalla data dell'installazione.
(Funziona in ambiente Windows ed è stato compilato con Visual LISP per
AutoCAD 2000 o superiori.)
 Saluti da Stefano Gaggioli - Bologna
Il mio sito:
http://space.tin.it/computer/stefanogaggioli

Ciao Stefano,
tempo fa avevo abbozzato qualcosa pure io per le quotature...
...provero' cio' che hai fatto.
Come spunto di riflessione ti allego quanto segue, se sono cose
che non hai gia' previsto e ti sembrano possibili implementazioni
di quanto hai fatto implementa pure.
Il concetto di partenza era quello di avere le quotature automaticamente
disposte tutte alla medesima distanza dagli oggetti quatati, (una sorta di
quotatura stile offset, da cui il nome); in pratica non si devono dare piu'
3 punti ma due punti ed un lato dal quale posizionare la quotatura.
Per le diagonali bastano solo 2 PT in quanto e' prevista una quotatura
con offset 0.
Sara' un piacere se vorrai riparlarne qua o altrove (tempo permettendo).
Un saluto Giovanni Anzani
P.S. Se nei tuoi mess. parli di lisp, ti va di mettere un TAG [LISP]
...e se poi alleghi anche codice [LISP+C] , cosi' mi si accende
una lampadina sul tuo messaggio e non me lo perdo. Tanks.
;---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---
;-------------------------------------------------------------------------
; Giovanni Anzani - Luglio 2001 
giova...@tiscalinet.it
;-------------------------------------------------------------------------
(defun VAR-OLD-GET (lvar) (foreach var lvar (set (read (strcat "old-" var))
(getvar var))))
(defun VAR-OLD-PUT (lvar) (foreach var lvar (setvar var (eval(read (strcat
"old-" var))))))
;-------------------------------------------------------------------------
(defun c:qo ( / qd )
  (VAR-OLD-GET '("cmdecho" "osmode" "blipmode"))
  (setvar "cmdecho"  0)
  (setvar "blipmode" 1)
  (setq qd qdold)
  (princ "\nPRIMO estremo della distanza da quotare: ")  (setq P1
etpoint   )) (princ P1)
  (princ "\nSECONDO estremo della distanza da quotare: ")(setq P2 (getpoint
P1)) (princ P2)
  (setq dist12 (distance P1 P2))
  (setq ang12  (angle P1 P2))
  (setq PM     (polar P1 ang12 (/ dist12 2)))
  (command "_redraw")  (grdraw P1 P2 -1 2)
  (princ "\nLATO dal quale posizionare la quota")          (setq PL
(getpoint PM))
  (if (not qd) (initget 5)(initget 4))
  (command "_redraw")  (grdraw P1 P2 -1 2)
  (princ "\nOffset della quotatura dalla misura quotata < ")(if qd (princ
qd))(princ " >: ")
  (setq qd (getdist) qdold (if qd qd qdold) qd qdold)
  (setq P3a (polar P1 (+ ang12 (/ pi 2.0)) qd) disa (distance P3a PL))
  (setq P3b (polar P1 (- ang12 (/ pi 2.0)) qd) disb (distance P3b PL))
  (setq P3 (if (< disa disb) P3a P3b))
  (setvar "osmode" 0)
  (setvar "blipmode" 0)
  (command "_dimaligned" P1 P2 P3)
  (command "_redraw")
  (VAR-OLD-PUT '("cmdecho" "osmode" "blipmode")))
;-------------------------------------------------------------------------
(defun qoff (doff / qd )
  (VAR-OLD-GET '("cmdecho" "osmode" "blipmode"))
  (setvar "cmdecho"  0)
  (setvar "blipmode" 1)
  (princ "\nPRIMO estremo della distanza da quotare: ")  (setq P1
etpoint   )) (princ P1)
  (princ "\nSECONDO estremo della distanza da quotare: ")(setq P2 (getpoint
P1)) (princ P2)
  (setq dist12 (distance P1 P2))
  (setq ang12  (angle P1 P2))
  (setq PM     (polar P1 ang12 (/ dist12 2)))
  (if (/= doff 0.0)
   (progn (command "_redraw")  (grdraw P1 P2 -1 2)
          (princ "\nLATO dal quale posizionare la quota") (setq PL (getpoint
PM))
          (setq P3a (polar PM (+ ang12 (/ pi 2.0)) doff) disa (distance P3a
PL))
          (setq P3b (polar PM (- ang12 (/ pi 2.0)) doff) disb (distance P3b
PL))
          (setq P3 (if (< disa disb) P3a P3b)))
   (progn (setq P3 PM)))
  (setvar "osmode" 0)
  (setvar "blipmode" 0)
  (command "_dimaligned" P1 P2 P3)
  (command "_redraw")
  (VAR-OLD-PUT '("cmdecho" "osmode" "blipmode")))
;-------------------------------------------------------------------------
(defun c:Q00 ()  (qoff 0.0))
(defun c:Q03 ()  (qoff 0.3))
(defun c:Q01 ()  (qoff 0.1))
(defun c:Q12 ()  (qoff 1.2))
;-------------------------------------------------------------------------
;---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---CUT---