home *** CD-ROM | disk | FTP | other *** search
- (defun pwlerr(s)
- (if (/= s "Function cancelled")
- (princ (strcat "\nError:" s))
- )
- (command "undo" "end")
- (setvar "osmode" 0)
- (setvar "aperture" apert)
- (setvar "pickbox" pib)
- (command "layer" "s" "0" "")
- (setvar "cmdecho" 1)
- (setq *error* oer)
- (princ)
- )
-
- (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)
- )
-
- (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 c:pw(/ oer apert pib thick elv ss lastent ssl n ssa ssb sn en ename elay w cflag sp ep sn1 en1 sn2 en2 bflag
- mp sp1 ep1 sp2 ep2 sn11 sn22 sn33 sn44 osn1 osn2 trimpt ep1 ep2 mid1 mid2 ang sint1 sint2 sp3 ep3 sp4 ep4 eint1 eint2
- ang1 ang2 sln eln spep cnt0 llp l n pt pt1 pt2 bkss bkssl bken bknam bklay isp iep intp n0 ip whh sx sy sz wl wh att ths
- ww bn ip1 ip2 ip3 ip4 p5 p6 enchk att1 cen r r1 r2 whh0 cnt)
- (setvar "cmdecho" 0)
- (setq oer *error* *error* pwlerr)
- (command "undo" "group")
- (setq apert (getvar "aperture"))
- (setq pib (getvar "pickbox"))
- (setq thick (getvar "thickness"))
- (setq elv (getvar "elevation"))
- (setq ss (ssget) lastent (entlast))
- (if ss
- (progn
- (setq ssl (sslength ss) n 0 ssa nil ssa (ssadd) ssb nil ssb (ssadd))
- (repeat ssl
- (setq sn (ssname ss n) en (entget sn))
- (setq ename (cdr (assoc 0 en)) elay (cdr (assoc 8 en)))
- (cond ((and (= "POLYLINE" ename) (= "PWALL" (substr elay 1 5)))
- (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 "")
- (command "change" sn "" "p" "t" 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" (fix (/ w 2.0)) (list sn sp) sp1 "")
- (setq sn1 (entlast))
- (if (= elay "PWALLW") (progn (if (= (tblsearch "layer" "pwalln") nil) (command "layer" "n" "pwalln" "")) (command "change" sn1 "" "p" "la" "pwalln" "")))
- (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" (fix (/ w 2.0)) (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 "")
- )
- ((and (= ename "INSERT") (= elay "PWINDOW") (member (strcase (substr (setq bn (cdr (assoc 2 en))) 1 2)) '("MM" "CC")))
- (ssadd sn ssb)
- )
- )
- (setq n (1+ n))
- )
- (if ssa (progn
- (princ "\nTrim processing .....")
- (setvar "pickbox" 1)
- (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))
- (setq sint2 (inters sp2 ep2 sp3 ep3))
- (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))
- (setq eint2 (inters sp2 ep2 sp4 ep4))
- (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))))
- (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))
- ))
- )) ;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 (= (substr bklay 1 5) "PWALL") (member bknam '("LINE")))
- (progn
- (setq isp (cdr (assoc 10 bken)) iep (cdr (assoc 11 bken)))
- (setq intp (inters isp iep pt (polar pt (+ (angle isp iep) 1.57079) 50) nil))
- (if (and intp (equal (distance intp pt) 0 0.1))
- (command "break" (list bksn pt1) "f" mid1 mid2))
- ))
- (setq n0 (1+ n0))
- )
- )) ;endif bkss
- (setq cnt (1+ cnt))
- )
- )
- )
- )) ;endif continue
- (if ssb (progn
- (setq ssl (sslength ssb) n 0)
- (repeat ssl
- (setq sn (ssname ssb n) en (entget sn) bn (cdr (assoc 2 en)))
- (setq ip (cdr (assoc 10 en)) whh (last ip) ip (list (car ip) (cadr ip) 0))
- (setq sx (abs (cdr (assoc 41 en))) att (cdr (assoc 1 (entget (setq sn1 (entnext sn))))) en1 (entget sn1))
- (setq sz (cdr (assoc 43 en)) ang (cdr (assoc 50 en)))
- (setq wl (* sx 100.0) wh (* sz 100.0) att (cdr (assoc 1 (entget (entnext sn)))))
- (setq ths (substr att 1 (- (instr 1 att " ") 1)) ww (atof (substr att (+ (instr 1 att " ") 1))))
- (setq en (subst (cons 43 (* 0.01 (/ sz sz))) (assoc 43 en) en))
- (setq en (subst (cons 10 ip) (assoc 10 en) en))
- (entmod en)
- (cond ((and (= bn "CCC") (/= (substr att (strlen att) 1) "@"))
- (setq ip1 (polar ip (- ang (/ pi 2.0)) (/ ww 2.0)))
- (setq ip2 (polar ip (+ ang (/ pi 2.0)) (/ ww 2.0)))
- (if (setq enchk (entfind ip1 ip2)) (progn
- (setq ip3 (polar ip1 (+ ang pi) (/ wl 2.0)))
- (setq ip1 (polar ip1 ang (/ wl 2.0)))
- (setq ip4 (polar ip2 (+ ang pi) (/ wl 2.0)))
- (setq ip2 (polar ip2 ang (/ wl 2.0)))
- (setq p5 (polar ip (+ ang pi) (/ wl 2.0)))
- (setq p6 (polar ip ang (/ wl 2.0)))
- (setq att (strcat "C-? " (rtos wl 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (command "layer" "m" "pwindow" "")
- (setvar "thickness" 0)
- (setvar "elevation" 0)
- (command "color" "bylayer")
- (command "break" (car enchk) p5 p6)
- (command "line" ip3 ip4 "")
- (command "break" (cadr enchk) p5 p6)
- (command "line" ip1 ip2 "")
- (setvar "thickness" thick)
- (setvar "elevation" elv)
- ))
- ) ;cond1
- ((and (= (substr bn 1 2) "MM") (/= (substr att (strlen att) 1) "@"))
- (setq ip1 (polar ip (- ang (/ pi 2.0)) (/ ww 2.0)))
- (setq ip2 (polar ip (+ ang (/ pi 2.0)) (/ ww 2.0)))
- (setq ip3 (polar ip1 (+ ang pi) (/ wl 2.0)))
- (setq ip1 (polar ip1 ang (/ wl 2.0)))
- (setq ip4 (polar ip2 (+ ang pi) (/ wl 2.0)))
- (setq ip2 (polar ip2 ang (/ wl 2.0)))
- (setq att (strcat "C-? " (rtos wl 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (command "layer" "m" "pwindow" "")
- (setvar "thickness" 0)
- (setvar "elevation" 0)
- (command "color" "bylayer")
- (command "line" ip3 ip4 "")
- (command "line" ip1 ip2 "")
- ) ;cond1
- ((and (= (substr bn 1 3) "CCZ") (/= (substr att (strlen att) 1) "@"))
- (setq sn2 (entnext sn1) en2 (entget sn2))
- (setq att (cdr (assoc 1 en1)) att1 (cdr (assoc 1 en2)))
- (setq ww (atof (substr att (+ (instr 1 att " ") 1))))
- (strdv att1)
- (setq sp1 (list (atof (nth 0 wlist)) (atof (nth 1 wlist)) 0))
- (setq sp2 (list (atof (nth 2 wlist)) (atof (nth 3 wlist)) 0))
- (setq ep2 (list (atof (nth 4 wlist)) (atof (nth 5 wlist)) 0))
- (setq ep1 (list (atof (nth 6 wlist)) (atof (nth 7 wlist)) 0))
- (setq ip1 (polar sp1 (angle sp1 ep1) (/ (distance sp1 ep1) 2.0)))
- (setq ip2 (polar sp2 (angle sp2 ep2) (/ (distance sp2 ep2) 2.0)))
- (setq att (strcat "CZ-? " (rtos (distance sp2 ep2) 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (setq att1 (strcat "CZ-? " att1))
- (setq en2 (subst (cons 1 att1) (assoc 1 en2) en2))
- (entmod en2)
- (if (setq enchk (entfind ip1 ip2)) (progn
- (command "layer" "m" "pwindow" "")
- (setvar "elevation" 0)
- (setvar "thickness" 0)
- (command "break" (car enchk) sp1 ep1)
- (command "line" sp1 sp2 "")
- (command "line" ep1 ep2 "")
- (command "break" (cadr enchk) sp2 ep2)
- ))
- )
- ((and (= (substr bn 1 3) "CCA") (/= (substr att (strlen att) 1) "@"))
- (setq sn2 (entnext (setq sn1 (entnext sn))) en1 (entget sn1) en2 (entget sn2))
- (setq att (cdr (assoc 1 en1)) att1 (cdr (assoc 1 en2)))
- (setq ww (atof (substr att (+ (instr 1 att " ") 1))))
- (strdv att1)
- (setq sp (list (atof (nth 0 wlist)) (atof (nth 1 wlist)) 0))
- (setq cen (list (atof (nth 2 wlist)) (atof (nth 3 wlist)) 0))
- (setq ep (list (atof (nth 4 wlist)) (atof (nth 5 wlist)) 0))
- (setq r (distance cen ip) r1 (+ r (/ ww 2.0)) r2 (- r (/ ww 2.0)))
- (setq ang (angle sp ep) ang1 (angle cen sp) ang2 (angle cen ep))
- (setq ip1 (polar cen (angle cen ip) r2))
- (setq ip2 (polar cen (angle cen ip) r1))
- (setq sp1 (polar cen (angle cen sp) r2))
- (setq sp2 (polar cen (angle cen sp) r1))
- (setq ep1 (polar cen (angle cen ep) r2))
- (setq ep2 (polar cen (angle cen ep) r1))
- (setq att (strcat "CA-? " (rtos (distance sp2 ep2) 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (setq att1 (strcat "CA-? " (rtos ang1 2 2) " " (rtos ang2 2 2) " " (rtos r1 2 2) " " (rtos r2 2 2) " " (rtos whh 2 0) " " (rtos ww 2 0) " " (rtos ang 2 2)))
- (setq en2 (subst (cons 1 att1) (assoc 1 en2) en2))
- (entmod en2)
- (if (setq enchk (arcfind ip1 ip2)) (progn
- (command "break" (car enchk) sp1 ep1)
- (command "break" (cadr enchk) sp2 ep2)
- ))
- (setvar "elevation" 0)
- (setvar "thickness" 0)
- (command "layer" "m" "pwindow" "")
- (command "line" sp1 sp2 "")
- (command "line" ep1 ep2 "")
- )
- ((= (substr att (strlen att) 1) "@")
- (cond ((or (= bn "CCC") (= (substr bn 1 2) "MM"))
- (strdv att)(setq whh0 (last wlist))
- (setq att (strcat (substr bn 1 1) "-? " (rtos wl 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths " " whh0))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- )
- ((= (substr bn 1 3) "CCZ")
- (strdv att) (setq whh0 (last wlist))
- (setq sn2 (entnext sn1) en2 (entget sn2))
- (setq att1 (cdr (assoc 1 en2)))
- (strdv att1) (setq sp2 (list (atof (nth 2 wlist)) (atof (nth 3 wlist)) 0.0))
- (setq ep2 (list (atof (nth 4 wlist)) (atof (nth 5 wlist)) 0.0))
- (setq att (strcat "CZ-? " (rtos (distance sp2 ep2) 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths " " whh0))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (setq att1 (strcat "CZ-? " att1))
- (setq en2 (subst (cons 1 att1) (assoc 1 en2) en2))
- (entmod en2)
- )
- ((= (substr bn 1 3) "CCA")
- (strdv att) (setq whh0 (last wlist))
- (setq sn2 (entnext sn1) en2 (entget sn2))
- (setq att1 (cdr (assoc 1 en2)))
- (strdv att1)
- (setq sp (list (atof (nth 0 wlist)) (atof (nth 1 wlist)) 0))
- (setq cen (list (atof (nth 2 wlist)) (atof (nth 3 wlist)) 0))
- (setq ep (list (atof (nth 4 wlist)) (atof (nth 5 wlist)) 0))
- (setq ang (angle cen ip) ang1 (angle cen sp) ang2 (angle cen ep))
- (setq r (distance cen ip) r1 (+ r (/ ww 2.0)) r2 (- r (/ ww 2.0)))
- (setq sp2 (polar cen ang1 r1) ep2 (polar cen ang2 r1))
- (setq att (strcat "CA-? " (rtos (distance sp2 ep2) 2 0) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " ths " " whh0))
- (setq en1 (subst (cons 1 att) (assoc 1 en1) en1))
- (entmod en1)
- (setq att1 (strcat "CA-? " (rtos ang1 2 2) " " (rtos ang2 2 2) " " (rtos r1 2 2) " " (rtos r2 2 2) " " (rtos wh 2 0) " " (rtos whh 2 0) " " (rtos ww 2 0) " " (rtos (angle sp ep) 2 2)))
- (setq en2 (subst (cons 1 att1) (assoc 1 en2) en2))
- (entmod en2)
- ))
- )) ;endcond
- (setq n (1+ n))
- )
- )
- )
- (command "undo" "end")
- (setq *error* oer)
- (setvar "cmdecho" 1)
- (setvar "pickbox" pib)
- (setvar "aperture" apert)
- (princ)
- )
-
- (defun findent(pt ang / loop l cnt en)
- (setq en nil trimd 250)
- (setq ss (ssget "c" (setq pt1 (polar pt ang trimd)) pt))
- (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")) (= (substr (cdr (assoc 8 (entget enchk))) 1 5) "PWALL") (not (eq enchk sn1)) (not (eq enchk sn2)))
- (progn
- (setq isp (cdr (assoc 10 (entget enchk))) iep (cdr (assoc 11 (entget enchk))))
- (if (and (inters isp iep sp1 ep1) (inters isp iep sp2 ep2))
- (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))
- )
-
- (defun entfind(ip1 ip2)
- (setq ds 10)
- (setq ip3 (list (+ (car ip1) ds) (+ (cadr ip1) ds) (caddr ip1)))
- (setq ip1 (list (- (car ip1) ds) (- (cadr ip1) ds) (caddr ip1)))
- (setq ip4 (list (+ (car ip2) ds) (+ (cadr ip2) ds) (caddr ip2)))
- (setq ip2 (list (- (car ip2) ds) (- (cadr ip2) ds) (caddr ip2)))
- (setq ss31 (ssget "c" ip3 ip1) ss42 (ssget "c" ip4 ip2))
- (if (and ss31 ss42) (progn
- (setq l31 (sslength ss31) l42 (sslength ss42))
- (setq n0 0 lp t enchk1 nil)
- (while (and lp (< n0 l31))
- (setq sn31 (ssname ss31 n0) en31 (entget sn31))
- (setq ename (cdr (assoc 0 en31)) elay (cdr (assoc 8 en31)))
- (if (and (= "PWALL" (substr elay 1 5)) (= "LINE" ename) (> (distance (cdr (assoc 10 en31)) (cdr (assoc 11 en31))) wl))
- (setq enchk1 sn31 lp nil))
- (setq n0 (1+ n0))
- )
- (setq n0 0 lp t enchk2 nil)
- (while (and lp (< n0 l42))
- (setq sn42 (ssname ss42 n0) en42 (entget sn42))
- (setq ename (cdr (assoc 0 en42)) elay (cdr (assoc 8 en42)))
- (if (and (= "PWALL" (substr elay 1 5)) (= "LINE" ename) (> (distance (cdr (assoc 10 en42)) (cdr (assoc 11 en42))) wl) (not (eq sn31 sn42)))
- (setq enchk2 sn42 lp nil))
- (setq n0 (1+ n0))
- )
- (if (and enchk1 enchk2) (setq enchk (list enchk1 enchk2)) (setq enchk nil))
- ))
- )
-
- (defun arcfind(ip1 ip2)
- (setq ds 10)
- (setq ip3 (list (+ (car ip1) ds) (+ (cadr ip1) ds) (caddr ip1)))
- (setq ip1 (list (- (car ip1) ds) (- (cadr ip1) ds) (caddr ip1)))
- (setq ip4 (list (+ (car ip2) ds) (+ (cadr ip2) ds) (caddr ip2)))
- (setq ip2 (list (- (car ip2) ds) (- (cadr ip2) ds) (caddr ip2)))
- (setq ss31 (ssget "c" ip3 ip1) ss42 (ssget "c" ip4 ip2))
- (if (and ss31 ss42) (progn
- (setq l31 (sslength ss31) l42 (sslength ss42))
- (setq n0 0 lp t enchk1 nil)
- (while (and lp (< n0 l31))
- (setq sn31 (ssname ss31 n0) en31 (entget sn31))
- (setq ename (cdr (assoc 0 en31)) elay (cdr (assoc 8 en31)))
- (if (and (= "PWALL" (substr elay 1 5)) (= "ARC" ename))
- (setq enchk1 sn31 lp nil))
- (setq n0 (1+ n0))
- )
- (setq n0 0 lp t enchk2 nil)
- (while (and lp (< n0 l42))
- (setq sn42 (ssname ss42 n0) en42 (entget sn42))
- (setq ename (cdr (assoc 0 en42)) elay (cdr (assoc 8 en42)))
- (if (and (= "PWALL" (substr elay 1 5)) (= "ARC" ename) (not (eq sn31 sn42)))
- (setq enchk2 sn42 lp nil))
- (setq n0 (1+ n0))
- )
- (if (and enchk1 enchk2) (setq enchk (list enchk1 enchk2)) (setq enchk nil))
- ))
- )