本帖最后由 作者 于 2004-2-26 13:48:48 编辑
已自行設計完成,實例測試中,待測試完成提供源碼 - (defun c:lljj() (setvar "cmdecho" 0)
- (setq selnum (getvar "osmode"))
- (setvar "osmode" 0)
- (setq cly (getvar "clayer")); (setq p1 (getpoint "\nFirst corner:"))
- ; (setq p2 (getcorner p1 "\nSecond corner:"))
- (setq ss (ssget "X" '((0 . "LINE,LWPOLYLINE,ARC")(62 . 256))))
-
- (setq i 0)
- (repeat (sslength ss)
- (setq ename (ssname ss i))
- (setq endata (entget ename))
- (setq enthick (cdr (assoc 39 endata)))
- (if (= enthick nil)(command "chprop" ename "" "c" 2 ""))
- (setq i (+ i 1))
- )
-
- (setq ss (ssget "X" '((0 . "LINE,LWPOLYLINE,ARC")(62 . 256))))
-
-
- (setq i 0)
- (setq sstol 0.0)
- (repeat (sslength ss)
- (setq ename (ssname ss i))
- (setq endata (entget ename))
- (setq entype (cdr (assoc 0 endata)))
- (setq enthick (cdr (assoc 39 endata)))
- (command "lengthen" ename "")
- (setq sslen (getvar "perimeter"))
- (setq sstol (+ sstol (* sslen enthick)))
- (setq i (+ i 1))
- )
- (setq i 0)
- (repeat (sslength ss)
- (setq ename (ssname ss i))
- (if (/= ename nil)
- (progn
- (setq endata (entget ename))
- (setq entype (cdr (assoc 0 endata)))
- (setq enlay (cdr (assoc 8 endata)))
- (setq ssp (ssget "x" (list (cons 8 enlay))))
- (setq ssp (ssget "p" '((0 . "LINE,LWPOLYLINE,ARC")(62 . 256))))
- (if (and (or (= entype "LINE")(= entype "ARC")) (/= ssp nil))
- (progn
- (command "pedit" ename "y" "j" ssp "" "w" "1.0" "")
- (command "chprop" "l" "" "c" 52 "")
- (setq sspp (ssget "l"))
- (command "lengthen" sspp "")
- (setq sspplen (getvar "perimeter"))
- )
- (progn
- (command "pedit" ename "j" ssp "" "w" "1.0" "")
- (command "chprop" "l" "" "c" 52 "")
- (setq sspp (ssget "l"))
- (command "lengthen" sspp "")
- (setq sspplen (getvar "perimeter"))
- )
- )
- (setq ssp (ssget "x" '((0 . "LINE,ARC,LWPOLYLINE")(62 . 256))))
-
- (setq ssptol 0.0)
- (if (/= ssp nil)
- (progn
- (setq j 0)
- (setq ssptol 0)
- (repeat (sslength ssp)
- (setq spname (ssname ssp j))
- (setq spdata (entget spname))
- (setq sspth (cdr (assoc 39 spdata)))
- (command "lengthen" spname "")
- (setq ssplen (getvar "perimeter"))
- (setq ssptol (+ ssptol (* ssplen sspth)))
- (setq j (+ j 1))
- )
- )
- )
- )
- ) (setq i (+ i 1))
- (setq minlen (- sstol ssptol))
- (setq sppthset (/ minlen sspplen)) (command "chprop" sspp "" "t" sppthset "c" "bylayer" "")
-
- (setq sppthset nil)
- (setq ss (ssget "x" '((0 . "LINE,LWPOLYLINE,ARC")(62 . 256))))
-
- ) (setq tb (tblsearch "LAYER" "ZTEMP"))
- (if (= tb nil)(command "layer" "m" "ZTEMP" "c" 7 "ZTEMP" "")) (setq ss (ssget "x" '((0 . "LWPOLYLINE")))) (setq i 0)
- (repeat (sslength ss)
- (setq ename (ssname ss i))
- (command "copy" ename "" '(0 0) '(0 0))
- (command "chprop" "L" "" "la" "ZTEMP" "")
- (command "explode" "L")
- (setq sstemp (ssget "x" '((8 . "ZTEMP"))))
- (setq ntmp (sslength sstemp))
- (if (= ntmp 1)(command "explode" ename))
- (command "erase" sstemp "")
- (setq i (+ i 1))
- )
- ; (setq ss (ssget "X" '((0 . "LINE,LWPOLYLINE,ARC"))))
- ; (command "chprop" ss "" "c" "bylayer" "")
- (setvar "osmode" selnum)
- (setvar "clayer" cly)(prin1)
- )
- (prin1)
|