home *** CD-ROM | disk | FTP | other *** search
- (vmon)
-
- (defun pxwerr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (command "layer" "s" olay "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
-
- (defun C:PXW(/ oer fname olay x ss ssl sn ename bn xx yy sn1 sn2 en en1 en2 wlength wwidth insp n)
- (setvar "CMDECHO" 0)
- (setq olay (getvar "CLAYER"))
- (setq oer *error* *error* pxwerr)
- (chkw) (setq winn fname)
- (setq ss (ssget))
- (command "layer" "m" "spwindow" "")
- (if ss (progn
- (setq ssl (sslength ss) n 0)
- (repeat ssl
- (setq sn (ssname ss n) en (entget sn))
- (setq ename (cdr (assoc 0 en)) bn (cdr (assoc 8 en)))
- (if (and (eq ename "POLYLINE") (eq bn "SPWINDOW"))
- (progn
- (setq sn1 (entnext sn) en1 (entget sn1))
- (setq sn2 (entnext sn1) en2 (entget sn2))
- (setq sn3 (entnext sn2) en3 (entget sn3))
- (setq scal (cdr (assoc 40 en)))
- (if (= (substr (rtos scal 2 4) (strlen (rtos scal 2 4)) 1) "1") (setq scal (- scal)))
- (setq insp (cdr (assoc 10 en1)))
- (setq wlength (fix (+ 0.5 (distance insp (setq insp1 (cdr (assoc 10 en2)))))))
- (setq wwidth (fix (+ 0.5 (distance insp1 (cdr (assoc 10 en3))))))
- (command "insert" winn "x" scal insp "0" wwidth)
- )
- )
- (setq n (1+ n))
- )
- )) ;endif
- (command "layer" "s" olay "")
- (setvar "CMDECHO" 1)
- (setq *error* oer)
- (princ)
- )
- (defun chkw(/ fg loop xh oer ratio scr scr1 scr2 scrx scry sctr sctrx sctry dx dy ddx ddy dxx dyy p1 p2 q1 q2 pl ql n inp source lp pt prev m ll lr ul ur)
- (setq loop t)
- (while loop
- (setq xh (strcase (getstring "\n╩Σ╚δ├┼┤░╨═║┼ <C1815>:")))
- (if (= xh "") (setq xh "C1815"))
- (if (or (setq fname (findfile (strcat xh ".dwg"))) (setq fname (findfile (strcat xh "a.dwg")))) (setq loop nil fg t))
- (if (tblsearch "BLOCK" xh) (setq loop nil fg nil))
- )
- (if fg (progn
- (cond ((= "C" (substr xh 1 1)) (setq xh0 "C"))
- ((= "M" (substr xh 1 1))
- (cond ((= "P" (substr xh 2 1)) (setq xh0 "MP"))
- ((= "Z" (substr xh 2 1)) (setq xh0 "MZ"))
- ((= "C" (substr xh 2 1)) (setq xh0 "MC"))
- (t (setq xh0 "M"))
- ))
- )
- (command "vslide" (strcat xh0 "(" xh ")"))
- (command "ucs" "view")
- (setq ratio (getvar "userr5"))
- (setq scr (getvar "screensize") scr1 (car scr) scr2 (cadr scr))
- (setq scry (getvar "viewsize")) ;screen y size
- (setq sctr (getvar "viewctr") sctrx (car sctr) sctry (cadr sctr)) ;screen centre
- (setq scrx (/ (* scr1 scry) scr2 ratio)) ;screen x size
- (setq dx (/ scrx 4.0) dy (/ scry 2.0) dy (- dy (* 0.164 dy)));one
- (setq ddx (- dx (* 0.082 dx)) ddy (- dy (* 0.082 dy))) ;space
- (setq dxx (* 0.041 dx) dyy (* 0.041 dy))
- (setq p1 (polar sctr 0 (/ scrx 2.0)) q1 (polar p1 (* 1.5 pi) (/ scry 2.0)))
- (setq pl nil pl (cons p1 pl) ql nil ql (cons q1 ql))
- (setq n 1)
- (repeat 4
- (setq p2 (polar p1 pi (* n dx)) pl (cons p2 pl))
- (setq q2 (polar q1 pi (* n dx)) ql (cons q2 ql))
- (setq n (1+ n))
- )
- (setq n 0 p1 (nth n pl) p2 p1)
- (defbox)
- (setq loop t)
- (while loop
- (setq inp (grread t))
- (setq source (car inp) pt (cadr inp))
- (cond ((= source 3)
- (drawbox)
- (setq loop nil))
- ((= source 5)
- (if (not (equal prev pt 0.1))
- (progn
- (setq prev pt)
- (setq lp t n 0)
- (while (and lp (< n 4))
- (if (and (>= (car pt) (car (nth n pl))) (<= (car pt) (car (nth (1+ n) pl)))) (setq lp nil) (setq n (1+ n)))
- (if (> (cadr pt) sctry) (setq p1 (nth n pl) m 0) (setq p1 (nth n ql) m 1))
- )
- (if (not (equal p1 p2 0.1)) (progn (drawbox) (defbox) (setq p2 p1)))
- )))
- )
- )
- (if (and (= n 0) (= m 0)) (setq fname fname) (setq fname (strcat (strcase xh) (chr (+ 65 n (* m 4))) ".DWG")))
- (command "ucs" "p")
- (redraw))
- (setq fname xh))
- )
-
- (defun defbox(/ x1 x2 y1 y2)
- (setq x1 (+ (car p1) dxx) x2 (+ x1 ddx))
- (setq y1 (+ (cadr p1) dyy) y2 (+ y1 ddy))
- (setq ll (list x1 y1) lr (list x2 y1))
- (setq ul (list x1 y2) ur (list x2 y2))
- (drawbox)
- )
-
- (defun drawbox()
- (grdraw ll lr -1) (grdraw lr ur -1)
- (grdraw ur ul -1) (grdraw ul ll -1)
- )