home *** CD-ROM | disk | FTP | other *** search
- (vmon)
-
- (defun rooferr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
-
- (setq felv 3300.0 clay "TOTHER")
-
- (defun C:ROOF(/ x x1 loop sn1 sn2 sn3 en1 en2 en01 en02 sp1 sp2 ep1 ep2 op sp ep ang pl spl bx by sply1 sply2 n n0 n1 ll dx zpl lpl fg dist sn4 fg70 pl0)
- (setvar "CMDECHO" 0)
- (setq oer *error* *error* rooferr)
- (if (/= (+ fh78 fh65 fh72 fh85 fh70) 370) (tst))
- (princ "\n▓π├√ <")(princ clay)
- (setq x (getstring ">: "))
- (if (/= x "") (setq clay (strcase x)))
- (princ "\n╩Σ╚δ╣∞╝ú╧▀╧α╢╘╕▀╢╚ <")
- (princ (fix felv))
- (setq x (getreal ">:"))
- (if (/= x nil) (setq felv x))
- (setq loop t ssp nil ssp (ssadd))
- (while loop
- (while (= nil (setq sn1 (entsel "\n╤í╘±╣∞╝ú╧▀:"))))
- (if (= "POLYLINE" (cdr (assoc 0 (setq en01 (entget (car sn1)))))) (setq loop nil))
- )
- (setq loop t)
- (while loop
- (while (= nil (setq sn2 (entsel "\n╤í╘±╨╬╫┤╞╩├µ╧▀:"))))
- (if (= "POLYLINE" (cdr (assoc 0 (setq en02 (entget (car sn2)))))) (setq loop nil))
- )
- (setq pl nil zpl nil sn3 (car sn1))
- (while (/= "SEQEND" (cdr (assoc 0 (setq en1 (entget (setq sn3 (entnext sn3)))))))
- (setq sp1 (cdr (assoc 10 en1)) pl (cons sp1 pl))
- )
- (if (or (= 9 (cdr (assoc 70 en01))) (= 1 (cdr (assoc 70 en01)))) (setq pl (cons (last pl) pl)))
- (setq zpl (cons (setq pl (reverse pl)) zpl))
- (setq spl nil sn2 (car sn2))
- (while (/= "SEQEND" (cdr (assoc 0 (setq en2 (entget (setq sn2 (entnext sn2)))))))
- (setq sp2 (cdr (assoc 10 en2)) spl (cons sp2 spl))
- )
- (if (or (= 9 (cdr (assoc 70 en02))) (= 1 (cdr (assoc 70 en02)))) (setq spl (cons (last spl) spl)))
- (setq lpl (length pl) spl (reverse spl))
- (setq splx (mapcar 'car spl) sply (mapcar 'cadr spl))
- (setq bx (nth 0 splx) by (nth 0 sply))
- (setq sp (nth 0 pl) ep (nth 1 pl) ang (angle sp ep) dist (distance sp ep) ep (polar sp ang (/ dist 2.0)))
- (if (>= (setq fg70 (cdr (assoc 70 en01))) 8) (progn (setq en01 (subst (cons 70 (- fg70 8)) (assoc 70 en01) en01)) (entmod en01)))
- (setq n 1)
- (repeat (1- (length splx))
- (setq dx (- (nth n splx) bx))
- (cond ((= dx 0) (setq dx 0.000001 op ep))
- ((> dx 0) (setq op (polar ep (- ang 1.57079) 200)))
- ((< dx 0) (setq dx (- dx) op (polar ep (+ ang 1.57079) 200)))
- )
- (command "offset" dx sn1 (list (car op) (cadr op)) "")
- (ssadd (entlast) ssp)
- (setq n (1+ n))
- )
- (if ssp (progn
- (setq ssl (sslength ssp) n 0)
- (repeat ssl
- (setq pl0 nil sn3 (setq sn4 (ssname ssp n)) n0 0)
- (while (/= "SEQEND" (cdr (assoc 0 (setq en1 (entget (setq sn3 (entnext sn3)))))))
- (setq sp1 (cdr (assoc 10 en1)) pl0 (cons (list (car sp1) (cadr sp1) (caddr (nth n0 pl))) pl0))
- (setq n0 (1+ n0))
- )
- (if (= 1 (cdr (assoc 70 en01))) (setq pl0 (cons (last pl0) pl0)))
- (if (/= (length pl0) lpl) (setq fg t))
- (princ "\n**")(princ (list (length pl0) lpl))
- (setq zpl (cons (reverse pl0) zpl))
- (entdel sn4)
- (setq n (1+ n))
- )
- (setq zpl (reverse zpl))
- (setq en01 (subst (cons 70 fg70) (assoc 70 en01) en01))
- (entmod en01)
- (if (not fg) (progn
- (setq ll (length zpl) n 0 x (nth n zpl) ll0 (length x))
- (command "layer" "m" clay "")
- (command "3dmesh" ll ll0)
- (repeat ll
- (setq x (nth n zpl) sply1 (+ (- (nth n sply) by) felv))
- (setq n0 0)
- (repeat ll0
- (setq sp1 (nth n0 x))
- (setq sp1 (list (car sp1) (cadr sp1) (+ (caddr sp1) sply1)))
- (command sp1)
- (setq n0 (1+ n0))
- )
- (setq n (1+ n))
- )
- ) (princ "\n╣∞╝ú╧▀╣╒╡π╛α└δ╠½╜ⁿ"))
- ))
- (command "layer" "s" "0" "")
- (setvar "CMDECHO" 1)
- (setq *error* oer)
- (princ)
- )