试试这个,我还采用了tharwat的部分代码来检查层是否被锁定(谢谢tharwat!)
- (defun c:off+ (/ *error* ent dist kwrd offset_side )
- ;; 24 october 2012 nod684
- (defun *error* (msg)
- (command "._undo" "_end")
- (setvar 'cmdecho cmd1)
- )
- (command "._undo" "_begin")
- (setq cmd1 (getvar 'cmdecho))
- (setvar 'cmdecho 0)
- (prompt "\nSelect Objects to Offset: ")
- (while (not ent)
- (setq ent (ssget "_+.:S:L" '((0 . "*LINE,CIRCLE,ELLIPSE"))))
- )
- (initget (+ 1 2 4 64))
- (setq dist (getdist "\nEnter offset distance: "))
- (while (= offset_side nil)
- (setq offset_side (getpoint "\nSide to offset on: "))
- )
- (initget (+ 2 4) "Yes No")
- (setq kwrd (getkword "\nDelete source object [Yes/No] <Yes>: "))
- (if (/= kwrd "No")
- (setq kwrd "Yes")
- )
- (command "offset" "erase" "no" dist ent offset_side "")
- (if (eq kwrd "Yes")
- (command "erase" ent "")
- )
- (*error* "")
- (princ "\nDone!")
- (princ))
|