home *** CD-ROM | disk | FTP | other *** search
- (defun c:pwall(/)
- (command "undo" "group")
- (setvar "cmdecho" 0)
- (setq ss (ssget) lastent (entlast))
- (if ss
- (progn
- (setq ssl (sslength ss) n 0 ssa nil ssa (ssadd))
- (repeat ssl
- (setq sn (ssname ss n) en (entget sn))
- (setq ename (cdr (assoc 0 en)) elay (cdr (assoc 8 en)))
- (if (and (= "POLYLINE" ename) (= "PWALL" elay))
- (progn
- (setq w (cdr (assoc 40 en)) cflag (cdr (assoc 70 en)))
- (setq sp (cdr (assoc 10 (entget (setq sn1 (entnext sn))))))
- (setq ep (cdr (assoc 10 (entget (entnext sn1)))))
- (setq bflag (cdr (assoc 42 (entget sn1))))
- (command "pedit" sn "w" 0 "")
- (if (= bflag 0) (progn
- (setq mp (polar sp (angle sp ep) (/ (distance sp ep) 2.0)))
- (setq sp1 (polar mp (+ (/ pi 2) (angle sp ep)) 250))
- (setq sp2 (polar mp (+ (- (/ pi 2)) (angle sp ep)) 250))
- )
- (progn
- (setq ang (* 4 (atan bflag)))
- (if (>= ang pi)
- (setq ang (- (angle sp ep) (- (/ pi 2.0) (/ (- (* 2 pi) ang) 2.0))))
- (setq ang (+ (angle sp ep) (- (/ pi 2.0) (/ ang 2.0))))
- )
- (setq sp1 (polar sp ang 250))
- (setq sp2 (polar sp (+ pi ang) 250))
- ))
- (setq sn11 nil sn22 nil sn33 nil sn44 nil osn1 nil osn2 nil)
- (command "offset" (/ w 2) (list sn sp) sp1 "")
- (setq sn1 (entlast))
- (command "explode" sn1)
- (setq sn1 (entnext sn1) sn11 sn1)
- (setq sn1 (entnext sn1))
- (while (/= sn1 nil) (setq osn1 sn1 sn1 (entnext sn1)))
- (if (/= osn1 nil) (setq sn33 osn1))
- (command "offset" (/ w 2) (list sn sp) sp2 "")
- (setq sn2 (entlast))
- (command "explode" sn2)
- (setq sn2 (entnext sn2) sn22 sn2)
- (setq sn2 (entnext sn2))
- (while (/= sn2 nil) (setq osn2 sn2 sn2 (entnext sn2)))
- (if (/= osn2 nil) (setq sn44 osn2))
- (if (= cflag 0) (progn
- (ssadd sn11 ssa)
- (ssadd sn22 ssa)
- (if (not (or (= sn33 nil) (= sn44 nil))) (progn
- (ssadd sn33 ssa)
- (ssadd sn44 ssa)
- ))
- ))
- (command "erase" sn "")
- )
- )
- (setq n (1+ n))
- )
- (if ssa (progn
- (princ "\nTrim processing .....")
- (setq ssl (sslength ssa) n 0 trimpt ())
- (repeat (/ ssl 2)
- (setq sn1 (ssname ssa n) sn2 (ssname ssa (1+ n)))
- (if (and (= (cdr (assoc 0 (entget sn1))) "LINE")
- (= (cdr (assoc 0 (entget sn2))) "LINE"))
- (progn
- (setq sp1 (cdr (assoc 10 (entget sn1))))
- (setq ep1 (cdr (assoc 11 (entget sn1))))
- (setq sp2 (cdr (assoc 10 (entget sn2))))
- (setq ep2 (cdr (assoc 11 (entget sn2))))
- (setq mid1 (polar sp1 (angle sp1 sp2) (/ (distance sp1 sp2) 2.0)))
- (setq mid2 (polar ep1 (angle ep1 ep2) (/ (distance ep1 ep2) 2.0)))
- (setq ang (angle sp1 ep1))
- (setq sln (findent mid1 ang) eln (findent mid2 (+ ang pi)))
- (if sln
- (if (= "LINE" (cdr (assoc 0 (entget sln)))) (progn
- (setq sp3 (cdr (assoc 10 (entget sln))) ep3 (cdr (assoc 11 (entget sln))))
- (if (> (distance sp3 ep3) (distance sp1 sp2)) (progn
- (setq sint1 (inters sp1 ep1 sp3 ep3 nil))
- (setq sint2 (inters sp2 ep2 sp3 ep3 nil))
- (if (and sint1 sint2) (progn
- (newst sn1 sint1) (newst sn2 sint2)
- (setq trimpt (cons (list sint1 sint2) trimpt))
- )))))))
- (if eln
- (if (= "LINE" (cdr (assoc 0 (entget eln)))) (progn
- (setq sp4 (cdr (assoc 10 (entget eln))) ep4 (cdr (assoc 11 (entget eln))))
- (if (> (distance sp4 ep4) (distance ep1 ep2)) (progn
- (setq eint1 (inters sp1 ep1 sp4 ep4 nil))
- (setq eint2 (inters sp2 ep2 sp4 ep4 nil))
- (if (and eint1 eint2) (progn
- (newnd sn1 eint1) (newnd sn2 eint2)
- (setq trimpt (cons (list eint1 eint2) trimpt))
- )))))))
- ) ;end progn "LINE"
- (if (and (= (cdr (assoc 0 (entget sn1))) "ARC")
- (= (cdr (assoc 0 (entget sn2))) "ARC"))
- (progn
- (setq sp1 (car (spep sn1)) ep1 (cadr (spep sn1)))
- (setq sp2 (car (spep sn2)) ep2 (cadr (spep sn2)))
- (setq mid1 (polar sp1 (angle sp1 sp2) (/ (distance sp1 sp2) 2.0)))
- (setq mid2 (polar ep1 (angle ep1 ep2) (/ (distance ep1 ep2) 2.0)))
- (setq ang1 (angle (cdr (assoc 10 (entget sn1))) sp1))
- (setq ang2 (angle (cdr (assoc 10 (entget sn1))) ep1))
- (setq sln (findent mid1 (+ ang1 (/ pi 2.0))))
- (setq eln (findent mid2 (- ang2 (/ pi 2.0))))
- (setq apt (getvar "aperture"))
- (setq pib (getvar "pickbox"))
- (setvar "aperture" 1)
- (setvar "pickbox" 1)
- (if sln (progn
- (command "trim" sln "" (list sn1 (osnap sp1 "END")) (list sn2 (osnap sp2 "END")) "")
- (setq sint1 (car (spep sn1)) sint2 (car (spep sn2)))
- (setq trimpt (cons (list sint1 sint2) trimpt))
- ))
- (if eln (progn
- (command "trim" eln "" (list sn1 (osnap ep1 "END")) (list sn2 (osnap ep2 "END")) "")
- (setq sint1 (cadr (spep sn1)) sint2 (cadr (spep sn2)))
- (setq trimpt (cons (list sint1 sint2) trimpt))
- ))
- (setvar "aperture" apt)
- (setvar "pickbox" pib)
- )) ;end if "ARC"
- ) ;endif "LINE"
- (setq n (+ n 2))
- )
- ))
- (setq llp (getstring "\nContinue.."))
- (if (= (strcase llp) "Y") (progn
- (setq cnt 0 l (length trimpt))
- (repeat l
- (setq n (nth cnt trimpt) mid1 (car n) mid2 (cadr n))
- (setq pt (polar mid1 (angle mid1 mid2) (/ (distance mid1 mid2) 2.0)))
- (setq pt1 (list (+ (car pt) 5) (+ (cadr pt) 5) (caddr pt)))
- (setq pt2 (list (- (car pt) 5) (- (cadr pt) 5) (caddr pt)))
- (setq bkss (ssget "c" pt1 pt2))
- (if bkss (progn
- (setq bkssl (sslength bkss) n0 0)
- (repeat bkssl
- (setq bken (entget (setq bksn (ssname bkss n0))))
- (setq bknam (cdr (assoc 0 bken)) bklay (cdr (assoc 8 bken)))
- (if (and (= bklay "PWALL") (member bknam '("LINE" "ARC")))
- (command "break" (list bksn pt1) "f" mid1 mid2))
- (setq n0 (1+ n0))
- )
- )) ;endif bkss
- (setq cnt (1+ cnt))
- )
- )
- )
- )) ;endif continue
- (command "undo" "end")
- (setvar "cmdecho" 1)
- (princ)
- )
-
- (defun findent(pt ang / loop l cnt en)
- (setq en nil trimd 200)
- (setq ss (ssget "c" pt (setq pt1 (polar pt ang trimd))))
- (if ss
- (progn
- (setq cnt 0 l (sslength ss) loop t)
- (while (and loop (< cnt l))
- (setq enchk (ssname ss cnt))
- (if (and (member (cdr (assoc 0 (entget enchk))) '("LINE" "ARC")) (= (cdr (assoc 8 (entget enchk))) "PWALL") (not (eq enchk sn1)) (not (eq enchk sn2)))
- (setq en enchk loop nil)
- )
- (setq cnt (1+ cnt))
- )
- )
- )
- (setq en en)
- )
-
- (defun newst(oldent new10)
- (setq oldente (entget oldent))
- (setq oldente (subst (append '(10) new10) (assoc 10 oldente) oldente))
- (entmod oldente)
- (setq oldent oldent)
- )
-
- (defun newnd(oldent new11)
- (setq oldente (entget oldent))
- (setq oldente (subst (append '(11) new11) (assoc 11 oldente) oldente))
- (entmod oldente)
- (setq oldent oldent)
- )
-
- (defun spep(sn1 / sang1 eang1 sr1 cen1 sp1 ep1)
- (setq sang1 (cdr (assoc 50 (entget sn1))))
- (setq eang1 (cdr (assoc 51 (entget sn1))))
- (setq sr1 (cdr (assoc 40 (entget sn1))))
- (setq cen1 (cdr (assoc 10 (entget sn1))))
- (setq sp1 (polar cen1 sang1 sr1))
- (setq ep1 (polar cen1 eang1 sr1))
- (setq cen1 (list sp1 ep1))
- )