;Shusei Hayashi
;OffshoreCad&Management Inc.
;10F Jaka Bldg., 6780 Ayala Ave.,
;Makati, Philippines
;http://www.offshorecad.com.ph/
;http://www.offshore-management.com.ph/

(defun c:SD_202 (/)
	(if (= SD:Lang "E")
		(princ "\n Save Layer Setting")
		(princ "\n レイヤー状態を保存")
	)
	(princ "\n **********************************")
	(setq *error* *myerror*)
	(SD1028)
	
	(if (/= (getvar "ctab") "Model")
		(process_paperthaw)
		(process_on)
	)
	(if (null (findfile (strcat (getvar "tempprefix") "SD_202.las")))
		(progn (setq fil1 (open (strcat (getvar "tempprefix") "SD_202.las")"w"))
			(write-line "SD_202.las")
		(close fil1))
	)
	(command "-layer" "a" "d" "SD_202")
	(while (= (getvar "cmdactive") 1)(command ""))
	(command "-layer" "a" "s" "SD_202")
	(while (= (getvar "cmdactive") 1)(command ""))
	(if (/= (getvar "ctab") "Model")
		(command "vplayer" "v" "*" "t" "")
		(progn
			(setq Layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
			(vlax-for Lay1 Layers (vla-put-viewportdefault Lay1 :vlax-false))
		)
	)
	(command "-layer" "a" "ex" "SD_202" (strcat (getvar "tempprefix") "SD_202.las"))
	(while (= (getvar "cmdactive") 1)(command ""))
	(command "list" "")
	
	(SD2056)
	(setq *error* nil)
	(princ)
)
(defun process_paperthaw (/ cvp ObjName Data1 Layers)
	(setq cvp (getvar "cvport"))
	(setq ObjName (ssname (ssget "x" (list (cons 0 "VIEWPORT")(cons 69 cvp))) 0))
	(setq Data1 (vl-remove-if-not '(lambda (x) (= 331 (car x)))(entget ObjName)))
	(setq Layers (mapcar '(lambda(x) (cdr (assoc 2 (entget (cdr x ))))) Data1))
	(mapcar '(lambda (x) (command "vplayer" "v" x "f" "")) Layers)
)
(defun process_on (/ Layers)
	(setq Layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
	(vlax-for Lay1 Layers (if (eq (vla-get-layeron Lay1) :vlax-true)(vla-put-viewportdefault Lay1 :vlax-false)))
)

;共通コマンド
(defun SD1028 ()
  (setq OldCmdEcho (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (command "undo" "be")
  (setq OldOsmode (getvar "OSMODE"))
  (setq OldLayer (getvar "CLAYER"))
  (setq OldLType (getvar "CeLType"))
  (setq OldCeLWeight (getvar "CeLWeight"))
  (setq OldColor (getvar "CeColor"))
  (setq OldOrtho (getvar "ORTHOMODE"))
  (setq OldDStyle  (getvar "DIMSTYLE"))
  (setq OldExpert (getvar "Expert"))
  (setvar "EXPERT" 0)
  (setq Path_Lang "HKEY_CURRENT_USER\\Software\\SpeedDraftLT")
  (if (vl-registry-read Path_Lang "SD_Language" )
  	(setq SD:Lang (vl-registry-read Path_Lang "SD_Language" ))
  	(progn	(setq SD:Lang "J")
  			(vl-registry-write Path_Lang "SD_Language" "J")
  	)
  )
  (princ)
)
;********************************
(defun SD2056 ()
  (setvar "OSMODE" OldOsmode)
  (command "undo" "end")
  (setvar "CLAYER" OldLayer)
  (setvar "CeLType" OldLType)
  (setvar "CeLWeight" OldCeLWeight)
  (setvar "CeColor" OldColor)
  (setvar "ORTHOMODE" OldOrtho)
  (setvar "Expert" OldExpert)
  (if (and (/= (getvar "DIMSTYLE") OldDStyle)(tblsearch "DIMSTYLE" OldDStyle))
  	(command "-dimstyle" "Restore" OldDStyle)
  )
  (princ "\n (C)OffshoreCad&Management")
  (setvar "CMDECHO" OldCmdEcho)
  (princ)
)


(if (= SD:Lang "E")
	(princ "\n Command Name: SD_202 \n")
	(princ "\n コマンド名：SD_202 \n")
)
(princ)
