Impostare la squadratura del disegno

Programma autolisp per impostare la squadratura del disegno.
Una volta lanciato il formato desiderato (A0, A1, A3, A4) digitare alla tastiera la scala della squadratura e premere invio; muovendosi sullo schermo di autocad verrà proposta la squadratura  scelta.
Cliccando in un punto dello schermo con il mouse verrà disegnata la squadratura con una polilinea. Se invece della scala si digita "r" (erre minuscola) verrà proposto il foglio ruotato di 90°.

 
;;; Una volta lanciato il formato desiderato (A0, A1, A3, A4) digitare alla tastiera la scala
;;; della squadratura e premere invio; muovendosi sullo schermo di autocad verrà proposta la squadratura
;;; scelta. Cliccando in un punto dello schermo con il mouse verrà disegnata la squadratura con una polilinea.
;;; se invece della scala si digita "r" (erre minuscola) verrà proposto il foglio ruotato di 90°.
(defun c:a0 ()
  (DisegnaSquadratura 1.194 0.841)
  (princ)
)
(defun c:a1 ()
  (DisegnaSquadratura 0.841 0.594)
  (princ)
)
(defun c:a3 ()
  (DisegnaSquadratura 0.42 0.297)
  (princ)
)
(defun c:a4 ()
  (DisegnaSquadratura 0.21 0.297)
  (princ)
)
 
(defun DisegnaSquadratura (LL HH)
  (setq OSMODEprec(getvar "OSMODE")
    ANGBASEprec(getvar "ANGBASE")
    ANGDIRprec(getvar "ANGDIR")
    AUNITSprec(getvar "AUNITS")
    clay(getvar "CLAYER")
  )
  (setvar "OSMODE" 0)
  (setvar "CMDECHO" 0)
  (setvar "ANGBASE" 0)
  (setvar "ANGDIR" 0)
  (setvar "AUNITS" 2)
  (setq lista-num "" pp nil xy nil primo nil stringa "Scala 1:" )
  (if (not stringa2)(progn (setq scala_i 1000)(setq stringa2 "1000")))
  (setq stringa1 (strcat stringa stringa2))
  (princ "\r                               ")
  (princ "\r....... ")
  (princ stringa1)
  (while (/= primo 3)
    (setq xxx(grread 1 4 1))
    (setq xy(nth 1 xxx))
    (setq primo(nth 0 xxx))
    (if (= primo 2)(progn
      (cond
        ((= xy 48)(setq lista-num(strcat lista-num "0")))
        ((= xy 49)(setq lista-num(strcat lista-num "1")))
        ((= xy 50)(setq lista-num(strcat lista-num "2")))
        ((= xy 51)(setq lista-num(strcat lista-num "3")))
        ((= xy 52)(setq lista-num(strcat lista-num "4")))
        ((= xy 53)(setq lista-num(strcat lista-num "5")))
        ((= xy 54)(setq lista-num(strcat lista-num "6")))
        ((= xy 55)(setq lista-num(strcat lista-num "7")))
        ((= xy 56)(setq lista-num(strcat lista-num "8")))
        ((= xy 57)(setq lista-num(strcat lista-num "9")))
        ((= xy 13)(vedi-scala LL HH))
        ((= xy 114)(setq HH1 LL LL HH HH HH1))
      )
      (if (/= lista-num "")(progn
        (setq stringa1(strcat stringa lista-num))
        (princ "\r                               ")
        (princ "\r....... ")(princ stringa1)
      ))
    ))
    (if (and (/= primo 2)(/= xy 0))(progn
      (setq xy1(polar xy 0 (* scala_i LL)))
      (setq xy2(polar xy1 (* 0.5 pi) (* scala_i HH)))
      (setq xy3(polar xy2 pi (* scala_i LL)))
      (grdraw xy xy1 -1)(grdraw xy1 xy2 -1)(grdraw xy2 xy3 -1)(grdraw xy3 xy -1)
      (if (= pp 1)(progn (grdraw xyv xy1v -1)(grdraw xy1v xy2v -1)(grdraw xy2v xy3v -1)(grdraw xy3v xyv -1)))
      (setq xyv xy xy1v xy1 xy2v xy2 xy3v xy3 pp 1)
    ))
  )
  (command "_layer" "_m" "Squadratura" \r)
  (command "_pline" xy xy1 xy2 xy3 "_c")
  (redraw)
  (setvar "OSMODE" OSMODEprec)
  (setvar "ANGBASE" ANGBASEprec)
  (setvar "ANGDIR" ANGDIRprec)
  (setvar "AUNITS" AUNITSprec)
  (command "_layer" "_s" clay \r)
  (princ)
)
 
(defun vedi-scala (L H)
  (setq scala_i(atoi lista-num))
  (setq lista-num "")
  (setq xxx(grread 1 4 1))
  (setq xy(nth 1 xxx))
  (setq xy1(polar xy 0 (* scala_i L)))
  (setq xy2(polar xy1 (* 0.5 pi) (* scala_i H)))
  (setq xy3(polar xy2 pi (* scala_i L)))
  (prompt "\r                                                                        ")
  (prompt "\r....... Scala 1:")
  (princ scala_i)(setq stringa2 (rtos scala_i 2 0))
)
(princ "\n Disegna squadratura")
(princ "\n Digitare A0, A1, A3, A4 per lanciare il programma!")
(princ "\n")
 
 
Compago
Chiudi