;;;非表示オブジェクトをにする
;;;（60.1）を図形データに挿入

;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_209( / Set1 i Obj1 Data1)
	(if (= SD:Lang "E")
		(princ "\n Unhide hidden object")
		(princ "\n 非表示オブジェクトを表示に戻す")
	)
	(princ "\n **********************************")
	(setq *error* *209_error*)
	(SD1028)

	(setq Set1 (ssget "X" '((60 . 1)) ))					;非表示OBJをSet1に入れる

	(cond	(Set1	(HilightHiddenObjects Set1 )			;一旦全部点線表示させる
					(AddSSandRedraw4)						;表示させるオブジェクトを選択させ実線に戻しながらSet2に入れる
					(cond	(Set2	(HideObjects Set1)		;もういちど全部非表示に戻す
									(ShowObjects Set2)		;選択されたもの(set2）を表示にする
							)
					)				
			 )	
			(T	
				(if (= SD:Lang "E")	
					(princ "\n No Hidden Object");非表示OBJが存在しないなら.
					(princ "\n 非表示図形はありません")
				)
			 )
	)			
	
	(SD2056)
	(setq *error* nil)
	(princ)
)

;;;+-------------------------------------------------------------------+
;一旦全部点線表示させる

(defun HilightHiddenObjects ( Set1 / Obj1 Data1 i)
	
	(setq i 0)
	(print	(sslength Set1))
	(if (= SD:Lang "E")	
		(princ "\n  Hidden Objects Found\n")
		(princ "\n  非表示図形が見つかりました\n")
	)
	(repeat (sslength Set1)						
		(setq Obj1 (ssname Set1 i))
		(setq Data1 (entget Obj1))
		(setq Data1 (subst '(60 . 0) '(60 . 1) Data1))
		(entmod Data1)
		(command "redraw")
		(redraw Obj1 3)			
		(setq i (1+ i))
	)
)

;;;+-------------------------------------------------------------------+
;もういちど全部非表示に戻す

(defun HideObjects ( Set1 / Obj1 Data1 i )

	(setq i 0)
	(repeat (sslength Set1)				
		(setq Obj1 (ssname Set1 i))
		(setq Data1 (entget Obj1))
		(setq Data1 (append Data1 (list(cons 60 1))))
		(entmod Data1)
		(setq i (1+ i))
	)
)

;;;+-------------------------------------------------------------------+
;表示させるオブジェクトを選択させ、Set2に入れる

(defun AddSSandRedraw4 ( / Name1 )

	(setvar "ERRNO" 0)						
	(setq Set2 (ssadd))
	(while (/=(getvar "ERRNO")52)
		(setvar "ERRNO" 0)
		(if (= SD:Lang "E")	
			(setq Name1 (car(entsel  "\n Select Object to be unhide：")))
			(setq Name1 (car(entsel  "\n 表示させたい図形を選択：")))
		)
		(cond 	((=(getvar "ERRNO")  7) 
					(if (= SD:Lang "E")
						(princ "nothing selected")
						(princ "選択されませんでした")	
					)
				)	
				((=(getvar "ERRNO") 52) 
					(if (= SD:Lang "E")
						(princ "end")
						(princ "終了")	
					)
				)		
				((=(getvar "ERRNO")  0) (redraw Name1 4)
										(ssadd Name1 Set2)
				)	
		)
	)
	Set2
)

;;;+-------------------------------------------------------------------+
;選択されたもの(set2）を表示にする

(defun ShowObjects( Set2 / Obj1 Data1)

	(setq i 0)	
	(repeat (sslength Set2)				
		(setq Obj1 (ssname Set2 i))
		(setq Data1 (entget Obj1))
		(setq Data1 (append Data1 (list(cons 60 0))))
		(entmod Data1)
		(setq i (1+ i))
	)


)



;;;+-------------------------------------------------------------------+
;エラー時に非表示のもの(Set1)は非表示に戻す

(defun *209_error* (msg)

	(setq *error* nil)
	
	(setq i 0)
	(repeat (sslength Set1)						
		(setq Obj1 (ssname Set1 i))
		(setq Data1 (append (entget Obj1) (list (cons 60 1))))
		(entmod Data1)
		(setq i (1+ i))
	)
	
	(SD2056)
	(princ)
	
)

;共通コマンド
(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_209 \n")
	(princ "\n コマンド名：SD_209 \n")
)
(princ)
