home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / cad / jun93.zip / TIP877.LSP < prev    next >
Lisp/Scheme  |  1993-05-19  |  3KB  |  66 lines

  1. ;; TIP 877:  PLATDIM.LSP (C)1993, WATSON H. KILBOURNE
  2.  
  3. ;;  Adds surveyor angle and line length dimensions to existing drawing.
  4. ;;  Option of linear inline dimensions or over/under line dimensioning.
  5. ;;  The lines on drawing must be drawn in correct angular direction.
  6.  
  7. (defun c:PLATDIM (/ CE BM LN TH YN LX SP EP AN LG MP TA TB TX TY EX EY NY)
  8.    (setq CE (getvar "CMDECHO"))
  9.    (setq BM (getvar "BLIPMODE"))
  10.    (defun NE (NE)
  11.       (setvar "CMDECHO" CE)
  12.       (setvar "BLIPMODE" BM)
  13.       (princ "Function cancelled ")
  14.       (princ)
  15.    )
  16.    (setq OE *error* *error* NE)
  17.    (while (= LN nil)
  18.        (setq LN (entsel "\nSelect line for surveyor dimensions: "))
  19.    )
  20.    (setq TS (getvar "TEXTSIZE"))
  21.    (prompt "\nEnter text height for dimensions <")
  22.    (princ (rtos TS 2 2))
  23.    (setq TH (getreal ">: "))
  24.    (if (= TH nil)
  25.        (setq TH TS)
  26.    )
  27.    (setq YN (getstring "\nOver & under line dimensions? (Y or N) <Y> "))
  28.    (setvar "CMDECHO" 0)
  29.    (setvar "BLIPMODE" 0)
  30.    (setq LX (entget (car LN))                       ; Line identification
  31.          SP (cdr (assoc 10 LX))                     ; Start point of line
  32.          EP (cdr (assoc 11 LX))                     ; End point of line
  33.          AN (angle SP EP)                           ; Angle of line
  34.          LG (distance SP EP)                        ; Length of line
  35.          LF (/ LG 12)                               ; Length of line in feet
  36.          MP (polar SP AN (/ LG 2))                  ; Midpoint of line
  37.          TA (polar MP (+ AN (* pi 0.5)) (/ TH 2))   ; End of angle text
  38.          TB (polar TA AN (* TH 2))                  ; Start of dimension text
  39.          UN (polar MP (+ AN (* pi 1.5)) (* TH 1.5)) ; Under line start
  40.          TX (angtos AN 4 4)                         ; Angle in surveyor units
  41.          TY (rtos LF 2 2)                           ; Length in decimal units
  42.    )
  43.    (if (or (= YN "n") (= YN "N"))
  44.        (progn
  45.           (command ".TEXT" "R" TA TH (/ (* AN 180) pi) (strcase TX))
  46.           (setq EX (entlast))
  47.           (command ".TEXT" TB TH (/ (* AN 180) pi) (strcat (strcase TY) "'"))
  48.           (setq EY (entlast))
  49.        )
  50.        (progn
  51.           (command "TEXT" "C" TA TH (/ (* AN 180) pi) (strcase TX))
  52.           (setq EX (entlast))
  53.           (command "TEXT" "C" UN TH (/ (* AN 180) pi)(strcat(strcase TY) "'"))
  54.           (setq EY (entlast))
  55.        )
  56.    )
  57.    (setq NY (getstring "\nRotate dimension 180 degrees? (Y or N) <N> "))
  58.    (if (or (= NY "y") (= NY "Y"))
  59.            (command "ROTATE" EX EY "" MP "180")
  60.    )
  61.    (setvar  "BLIPMODE" BM)
  62.    (setvar "CMDECHO" CE)
  63.    (setq *error* OE OE nil)
  64.    (princ)
  65. )
  66.