 - (defun c:5 (/ l en sn)
- (setvar "cmdecho" 1)
- (setvar "offsetgaptype" 0)
- (command "offset" "e" "n" "l" "s" (if (setq l (getdist)) l (getvar "OFFSETDIST")))
- (initget "Exit")
- (setq en (entsel "\n选择要偏移的对象,或 [退出(E)] <退出>:"))
- (if (= (type en) 'list)
- (if (wcmatch (cdr (assoc 0 (entget (car en))))
- "*LINE,ARC,CIRCLE,ELLIPSE"
- )
- (command (car en) "m")
- (progn (command "") (setq sn -1))
- )
- (command "")
- )
- (princ)
- )
- ;(c:5)很简单,自己用的话还可以,但是有些小问题,操作的时候需要注意
- (defun c:6 (/ e l en sn si tt dist e1 l1)
- (setvar "cmdecho" 0)
- (setvar "offsetgaptype" 0)
- (setq e "n")
- (setq l "s")
- (princ "\n当前设置: 删除源=否 图层=源 OFFSETGAPTYPE=0")
- (setq sn 0)
- (while (zerop sn)
- (setq tt (strcat "\n指定偏移距离或 [通过(T)/删除(E)/图层(L)]<" (if (= (setq n (getvar "OFFSETDIST")) -1.0) "通过" (rtos n)) ">:" ))
- (initget "Through Erase Layer")
- (setq dist (getdist tt))
- (cond ((= dist nil) (setq sn 1))
- ((= (type dist) 'real) (setvar "OFFSETDIST" dist) (setq sn 1))
- ((= dist "Through") (setvar "OFFSETDIST" -1.0) (setq sn 1))
- ((= dist "Erase") (initget "Yes No")
- (setq e1 (getkword
- (strcat
- "\n要在偏移后删除源对象吗?[是(Yes)/否(No)] <"
- (if (= e "n")
- "否"
- "是"
- )
- ">:"
- )
- )
-
- )
- (if e1 (if (= e1 "Yes") (setq e "y") (setq e "n")))
- )
- ((= dist "Layer") (initget "Current Sourse")
- (setq l1 (getkword
- (strcat
- "\n输入偏移对象的图层选项 [当前(C)/源(S)] <"
- (if (= l "c")
- "当前"
- "源"
- )
- ">:"
- )
- )
-
- )
- (if l1 (if (= l1 "Current") (setq l "c") (setq l "s")))
- )
- (t (setq sn 1))
- )
- )
- (setq sn 0)
- (setq si 0)
- (while (zerop sn)
- (command "offset" "e" e "l" l "")
- (initget "Exit Undo")
- (setq en (entsel "\n选择要偏移的对象,或 [退出(E)/放弃(U)] <退出>:"))
- (if (= (type en) 'list)
- (if (wcmatch (cdr (assoc 0 (entget (car en))))
- "*LINE,ARC,CIRCLE,ELLIPSE"
- )
- (command (car en) "m")
- (progn (command "") (setq sn -1))
- )
- (progn
- (command "")
- (if (and (zerop si) (= en "Undo")) (progn (princ "\n命令已全部放弃。") (setq sn -1 si -1)))
- )
- )
- (setq sn (1+ sn))
- (setq si (1+ si))
- )
- (princ)
- )
- ;建议使用(c:6)
|