home *** CD-ROM | disk | FTP | other *** search
- (vmon)
-
- (defun twerr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (command)
- (command "layer" "s" "0" "")
- (command "text" "s" "hz")
- (command)
- (setvar "cmdecho" 1)
- (setvar "orthomode" 0)
- (setvar "dimrnd" 0)
- (setq *error* oer)
- (princ)
- )
-
- (defun C:TWIN(/ oer sp ep mp pl pld pll ss ssl sn en ename elay insp iang rn wlist wlength p1 p2 p3 p4 int1 int2 m n l dmax)
- (setvar "cmdecho" 0)
- (setvar "orthomode" 1)
- (setq oer *error* *error* twerr)
- (setq sp (getpoint "\n▒Ω╫ó╞≡╡π:"))
- (setq ep (getpoint sp "\n▒Ω╫ó╓╒╡π:"))
- (setq mp (getpoint "\n│▀┤τ╧▀╬╗╓├:"))
- (setvar "orthomode" 0)
- (setq ss (ssget) pl nil pld nil pll nil)
- (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)) elay (cdr (assoc 8 en)))
- (if (and (= "PWINDOW" elay) (= "INSERT" ename)) (progn
- (setq insp (cdr (assoc 10 en)) iang (cdr (assoc 50 en)))
- (setq rn (cdr (assoc 1 (entget (entnext sn)))))
- (strdv rn)
- (setq wlength (atoi (nth 1 wlist)))
- (setq p1 (polar insp (+ pi iang) (/ wlength 2.0)))
- (setq p2 (polar insp iang (/ wlength 2.0)))
- (setq p3 (polar p1 (+ 1.57079 iang) 50) p4 (polar p2 (+ 1.57079 iang) 50))
- (setq int1 (inters sp ep p1 p3 nil) int2 (inters sp ep p2 p4 nil))
- (if (and int1 (not (member int1 pl))) (setq pl (cons int1 pl) pld (cons (distance sp int1) pld)))
- (if (and int2 (not (member int2 pl))) (setq pl (cons int2 pl) pld (cons (distance sp int2) pld)))
- ) ;endprogn "WINDOW"
- (if (and (= "LINE" ename) (member elay '("PDIM" "PAXIS")))
- (progn
- (setq p1 (cdr (assoc 10 en)) p2 (cdr (assoc 11 en)))
- (setq int1 (inters sp ep p1 p2 nil))
- (if (and int1 (not (member int1 pl))) (setq pl (cons int1 pl) pld (cons (distance sp int1) pld)))
- )));endif
- (setq n (1+ n))
- )
- (setq l (length pl) n 0)
- (repeat l
- (setq dmax (apply 'max pld))
- (setq m 0)
- (while (< m l)
- (if (= dmax (nth m pld)) (setq pll (cons (nth m pl) pll) pld (subst -1 dmax pld)) (setq m (1+ m)))
- )
- )
- )) ;endif ss
- (setq pll (cons sp pll) pll (reverse (cons ep (reverse pll))))
- (command "color" "bylayer")
- (command "layer" "m" "pdim" "c" "3" "pdim" "")
- (command "dim" "style" "standard" "dimrnd" "10")
- (setq l (length pll) n 1 p1 (nth 0 pll))
- (repeat (- l 1)
- (setq p2 (nth n pll))
- (if (>= (distance p1 p2) 120) (progn
- (if (= n 1) (progn
- (command "rotate" (/ (* 180.0 (angle sp ep)) pi) p1 p2 mp "")
- )
- (command "continue" p2 "")
- )
- )) ;endif
- (setq n (1+ n) p1 p2)
- )
- (command "dimrnd" "0" "style" "hz" "exit")
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
- (defun strdv(rn / loop l x)
- (setq wlist nil loop t)
- (while loop
- (setq l (instr 1 rn " "))
- (if (= l 0) (setq wlist (cons rn wlist) loop nil)
- (progn ;else
- (setq x (substr rn 1 (1- l)))
- (setq wlist (cons x wlist))
- (setq rn (substr rn (1+ l) (- (strlen rn) l)))
- (setq loop t)
- )
- )
- )
- (setq wlist (reverse wlist))
- )
- (defun instr(st s0 s00 / l n loop x n0 l0)
- (setq l (+ (- (strlen s0) st) 1) l0 0 n0 st n 1 loop t)
- (while (and (<= n l) loop)
- (setq x (substr s0 n0 1))
- (if (eq x s00) (setq loop nil l0 n0) (setq n0 (1+ n0) n (1+ n)))
- )
- (eval l0)
- )