;;;***拡張オフセット*** ;;;現在の画層・線色・線種でオフセット. (defun c:maruso_6_aa (/ OFSD LAY LTY COL COLOR DIS ENT EN OSM BLP PT ED LAST_EN NEXT_EN NEXT_SS ) (setq OFSD (getvar "OFFSETDIST")) (setq LAY (getvar "CLAYER")) (setq LTY (getvar "CELTYPE")) (setq COL (getvar "CECOLOR")) (cond ((= COL "BYLAYER") (setq COLOR 256)) ((= COL "BYBLOCK") (setq COLOR 0)) ((and (< 0 (atoi COL)) (> 256 (atoi COL))) (setq COLOR (atoi COL)) ) (t nil) ) (setvar "CMDECHO" 0) (while (>= 0 DIS) (setq DIS (getreal (strcat "\n 正の数値を入力して下さい\nオフセット間隔を入力 <" (rtos OFSD) "> : " ) ) ) (if (not DIS) (setq DIS OFSD) ) ;en-if ) ;en-wh (while (/= (setq ENT (SO_ENTSEL "\n オフセットするオブジェクトを選択 または <終了>:") ) "" ) (setq EN (car ENT)) (redraw EN 3) (if (setq PT (getpoint "\n オフセットする側の点を指定 <戻る>:") ) (progn (setq LAST_EN (entlast)) (SYS_OFF) (command "_offset" DIS EN PT "") (SYS_ON) (setq NEXT_SS (ssadd)) (setq NEXT_EN (entnext LAST_EN)) (ssadd NEXT_EN NEXT_SS) (while (setq NEXT_EN (entnext NEXT_EN)) (ssadd NEXT_EN NEXT_SS) ) (SS_MOD NEXT_SS 8 LAY) (SS_MOD NEXT_SS 6 LTY) (SS_MOD NEXT_SS 62 COLOR) ) ;en-pr ) ;en-if (redraw EN 4) ) ;en-wh (setvar "CMDECHO" 1) (princ) ) ;en-df ;;;****************************************************************************** ;;;***エンター終了と空打ちなしのentsel*** (defun SO_ENTSEL (MSG / OBJ) (while (not OBJ) (initget " ") (setq OBJ (entsel MSG)) ) ) ;;;****************************************************************************** ;;;***図形要素更新*** ;;; 【引数】CODE:DXFコードNo. ENAME:図形名 NEW_D:更新する値. (defun SO_MOD (CODE ENAME NEW_D / OLD_D ENT_D) (setq ENT_D (entget ENAME)) (setq OLD_D (assoc CODE ENT_D)) (if OLD_D (setq ENT_D (subst (cons CODE NEW_D) OLD_D ENT_D)) (setq ENT_D (append ENT_D (list (cons CODE NEW_D)))) ) (entmod ENT_D) ) ;;;****************************************************************************** ;;;***選択セットの図形要素更新*** ;;; 【引数】CODE:DXFコードNo. ENAME:図形名 NEW_D:更新する値. (defun SS_MOD (SS CODE NEW_D / N I SS_ENAME) (setq N (sslength SS)) (setq I 0) (while (> N I) (setq SS_ENAME (ssname SS I)) (SO_MOD CODE SS_ENAME NEW_D) (setq I (1+ I)) ) ) ;;;****************************************************************************** ;;;***システム変数の待避*** (defun SYS_OFF () (setq OSM (getvar "OSMODE") BLP (getvar "BLIPMODE") ) (setvar "OSMODE" 0) (setvar "BLIPMODE" 0) ) ;;;***システム変数の設定*** (defun SYS_ON () (setvar "OSMODE" OSM) (setvar "BLIPMODE" BLP) ) (princ "\n コマンド名はmaruso_6_aaです ") (princ)