home *** CD-ROM | disk | FTP | other *** search
- (defun erwinerr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (setvar "osmode" 0)
- (setvar "aperture" 3)
- (setvar "pickbox" 3)
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
-
- (defun c:erwin(/ oer ss ssl n sn en ename elay bn ip sx sy wl ww rp lp att cen ss1 en1 lw col elay1)
- (setvar "cmdecho" 0)
- (setq oer *error* *error* erwinerr)
- (setq ss (ssget))
- (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)))
- (setq bn (cdr (assoc 2 en)))
- (cond ((and (= ename "INSERT") (= elay "PWINDOW") (= (strcase (substr bn 1 2)) "MM"))
- (setq ip (cdr (assoc 10 en)) sx (cdr (assoc 41 en)))
- (setq sy (cdr (assoc 42 en)) ang (cdr (assoc 50 en)))
- (setq wl (abs (* sx 100.0)) ww (abs (* sy 10.0)))
- (setq rp (polar ip (+ ang pi) (/ wl 2.0)))
- (setq lp (polar ip ang (/ wl 2.0)))
- (erpoly lp rp)
- ) ;cond1
- ((and (= ename "INSERT") (= elay "PWINDOW") (= (substr bn 1 4) "CCAM"))
- (setq att (cdr (assoc 1 (entget (entnext (entnext sn))))))
- (strdv att)
- (setq lp (list (atof (nth 0 wlist)) (atof (nth 1 wlist)) 0.0))
- (setq cen (list (atof (nth 2 wlist)) (atof (nth 3 wlist)) 0.0))
- (setq rp (list (atof (nth 4 wlist)) (atof (nth 5 wlist)) 0.0))
- (setq ss1 (ssget (osnap rp "END")))
- (command "erase" sn "")
- (if (setq en1 (entget (ssname ss1 0))) (progn
- (setq lw (cdr (assoc 40 en1)))
- (setq col (cdr (assoc 62 en1)) elay1 (cdr (assoc 8 en1)))
- (if col (command "color" col))
- (command "layer" "s" elay1 "")
- (command "pline" lp "w" lw lw "a" "ce" cen rp "")
- (command "color" "bylayer")))
- (command "layer" "s" "0" "")
- ) ;cond2
- ((and (= ename "INSERT") (= elay "PWINDOW") (= (strcase (substr bn 1 2)) "CC"))
- (command "erase" sn ""))
- ) ;end cond
- (setq n (1+ n))
- )
- )) ;endif ss
- (setq *error* oer)
- (setvar "cmdecho" 1)
- (princ)
- )
-
- (defun erpoly(lp rp / ss1 ss2 sn1 sn2 en1 en2 enm1 enm2 elay1 elay2 pl sn1 sn2 sn11 sn22 lw col nn n0)
- (command "erase" sn "")
- (setq ss1 (ssget (osnap rp "END")) ss2 (ssget (osnap lp "END")))
- (if (and (setq sn1 (ssname ss1 0)) (setq sn2 (ssname ss2 0)))
- (progn
- (setq en1 (entget sn1) en2 (entget sn2) pl nil)
- (setq enm1 (cdr (assoc 0 en1)) enm2 (cdr (assoc 0 en2)))
- (setq elay1 (cdr (assoc 8 en1)) elay2 (cdr (assoc 8 en2)))
- (if (and (= "POLYLINE" enm1) (= "PWALL" (substr elay1 1 5)) (= "POLYLINE" enm2) (= "PWALL" (substr elay2 1 5)))
- (progn
- (setq sn11 sn1 sn22 sn2 lw (cdr (assoc 40 en1)) col (cdr (assoc 62 en1)))
- (while (/= (cdr (assoc 0 (entget (setq sn1 (entnext sn1))))) "SEQEND")
- (setq pl (cons (list (cdr (assoc 10 (entget sn1))) (cdr (assoc 42 (entget sn1)))) pl))
- )
- (setq pl (cdr pl) nn 0)
- (while (/= (cdr (assoc 0 (entget (setq sn2 (entnext sn2))))) "SEQEND")
- (if (> nn 0)(setq pl (cons (list (cdr (assoc 10 (entget sn2))) (cdr (assoc 42 (entget sn2)))) pl)))
- (setq nn (1+ nn))
- )
- (command "erase" sn11 sn22 "")
- (setq pl (reverse pl))
- (if (/= col nil)
- (entmake (list (cons 0 "POLYLINE") (cons 8 elay1) (cons 62 col) (cons 66 1) (cons 40 lw) (cons 41 lw)))
- (entmake (list (cons 0 "POLYLINE") (cons 8 elay1) (cons 66 1)(cons 40 lw) (cons 41 lw))))
- (setq n0 0)
- (repeat (length pl)
- (entmake (list (cons 0 "VERTEX") (cons 42 (cadr (nth n0 pl)))(append (list 10) (car (nth n0 pl)))))
- (setq n0 (1+ n0))
- )
- (entmake (list (cons 0 "SEQEND")))
- ) ;endprogn
- (command "u")
- )
- ) ;endprogn
- (command "u")
- )
- )
-
- (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))
- )