;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_706 ( / i j m ObjSet Data Contents ContentsL flag MaxLetter)
	(if (= SD:Lang "E")
		(princ "\n Replace 2byte Katakana with 1byte")
		(princ "\n 半角カタカナを全角に変換")
	)
	(setq *error* *myerror*)   
	(SD1028)
	
	(setq AcadVersion (getvar "acadver"))
	(princ "\n AcadVersion :  ")(princ AcadVersion)
	
	(setq ObjSet (ssget  '((0 . "TEXT,DIMENSION,MTEXT"))))
	
	(Procedure_706_16)
	
	;タﾞ→ダの処理（置換）
	(setq i 0)
	(repeat m
		(setq Data (entget (ssname ObjSet i)))
		(setq Contents (cdr (assoc 1 Data)))
		(mapcar '(lambda(x y)
					(repeat (strlen Contents)
						(setq Contents (vl-string-subst x y Contents))
					)
					)
					'("ガ" "ギ" "グ" "ゲ" "ゴ" "ザ" "ジ" "ズ" "ゼ" "ゾ" "ダ" "ヂ" "ヅ" "デ" "ド" "バ" "ビ" "ブ" "ベ" "ボ" "パ" "ピ" "プ" "ペ" "ポ")
					'("カﾞ" "キﾞ" "クﾞ" "ケﾞ" "コﾞ" "サﾞ" "シﾞ" "スﾞ" "セﾞ" "ソﾞ" "タﾞ" "チﾞ" "ツﾞ" "テﾞ" "トﾞ" "ハﾞ" "ヒﾞ" "フﾞ" "ヘﾞ" "ホﾞ" "ハﾟ" "ヒﾟ" "フﾟ" "ヘﾟ" "ホﾟ")
		)
		(setq i (1+ i))
		(setq Data (subst (cons 1 Contents) (assoc 1 Data) Data))
		(entmod Data)
	)
			
	(SD2056)
	(setq *error* nil)
	(princ)
)	
	
;****************************
(defun 	Procedure_706_16()
	(setq i 0 m (sslength ObjSet) MaxLetter 0)
	(repeat m
		(setq Data (entget (ssname ObjSet i)))
		(setq Contents (cdr (assoc 1 Data)))
		(setq ContentsL (StringToList Contents) flag T)
		(mapcar '(lambda(x y)(setq ContentsL (subst x y ContentsL)))
								(reverse '("ブ" "ベ" "ボ" "パ" "ピ" "プ" "ペ" "ポ" ))
								(reverse '("ﾌﾞ" "ﾍﾞ" "ﾎﾞ" "ﾊﾟ" "ﾋﾟ" "ﾌﾟ" "ﾍﾟ" "ﾎﾟ" )))
		(mapcar '(lambda(x y)(setq ContentsL (subst x y ContentsL)))
								(reverse '("ヵ" "ヶ" "ッ" "ャ" "ュ" "ョ" "ヮ" "ー" "ガ" "ギ" "グ" "ゲ" "ゴ" "ザ" "ジ" "ズ" "ゼ" "ゾ" "ダ" "ヂ" "ヅ" "デ" "ド" "バ" "ビ" ))
								(reverse '("ヵ" "ヶ" "ｯ" "ｬ" "ｭ" "ｮ" "ヮ" "ｰ" "ｶﾞ" "ｷﾞ" "ｸﾞ" "ｹﾞ" "ｺﾞ" "ｻﾞ" "ｼﾞ" "ｽﾞ" "ｾﾞ" "ｿﾞ" "ﾀﾞ" "ﾁﾞ" "ﾂﾞ" "ﾃﾞ" "ﾄﾞ" "ﾊﾞ" "ﾋﾞ" )))
		(mapcar '(lambda(x y)(setq ContentsL (subst x y ContentsL)))
								'("ハ" "ヒ" "フ" "ヘ" "ホ" "マ" "ミ" "ム" "メ" "モ" "ヤ" "ユ" "ヨ" "ラ" "リ" "ル" "レ" "ロ" "ワ" "ヲ" "ァ" "ィ" "ゥ" "ェ" "ォ" "ン")
								'("ﾊ" "ﾋ" "ﾌ" "ﾍ" "ﾎ" "ﾏ" "ﾐ" "ﾑ" "ﾒ" "ﾓ" "ﾔ" "ﾕ" "ﾖ" "ﾗ" "ﾘ" "ﾙ" "ﾚ" "ﾛ" "ﾜ" "ｦ" "ｧ" "ｨ" "ｩ" "ｪ" "ｫ" "ﾝ"))
		(mapcar '(lambda(x y)(setq ContentsL (subst x y ContentsL)))
								'("ア" "イ" "ウ" "エ" "オ" "カ" "キ" "ク" "ケ" "コ" "サ" "シ" "ス" "セ" "ソ" "タ" "チ" "ツ" "テ" "ト" "ナ" "ニ" "ヌ" "ネ" "ノ" )
								'("ｱ" "ｲ" "ｳ" "ｴ" "ｵ" "ｶ" "ｷ" "ｸ" "ｹ" "ｺ" "ｻ" "ｼ" "ｽ" "ｾ" "ｿ" "ﾀ" "ﾁ" "ﾂ" "ﾃ" "ﾄ" "ﾅ" "ﾆ" "ﾇ" "ﾈ" "ﾉ" ))
		(setq Contents (ListToString ContentsL))
		(setq Data (subst (cons 1 Contents) (assoc 1 Data) Data))
		(entmod Data)
		(setq i (1+ i))
	)
)

(princ)


;;;+---------------StringToList-----------------------+
;;;文字列をばらばらにしてLISTにする
;;;【引数】　文字列："SHU"
;;;【戻り値】A_LIST：("S""H""U")のリスト
;;;+---------------------------------------------------+

(defun StringToList ( SSS / A_DATA A_LIST) 
	(setq AcadVersion (getvar "acadver"))
	(cond 	
			((or	(= 17.0 (atof (substr AcadVersion 1 4)))
				(and (= 17.2 (atof (substr AcadVersion 1 4)))(/= (ver) "Visual LISP 2009 (en)")))
				(while ( /= SSS "")
					(setq A_DATA (logand 224 (ascii SSS)))
					(setq A_LIST (append A_LIST (list (substr SSS 1 1))))
					(setq SSS (substr SSS 2))
				)
			)
			(T
				  (while ( /= SSS "")
					(setq A_DATA (logand 224 (ascii SSS)))
					(if (or (= A_DATA 224) (= A_DATA 128))
						(progn(setq A_LIST (append A_LIST (list (substr SSS 1 2))))
											(setq SSS (substr SSS 3))
								)
						(progn(setq A_LIST (append A_LIST (list (substr SSS 1 1))))
											(setq SSS (substr SSS 2))
						)
					)
				)
			)
	)
  A_LIST
)
;;;+-------------ListToString---------------------+
;;;LISTの要素を文字列にする
;;;【引数】　リスト：("S""H""U")
;;;【戻り値】NewString：文字列："SHU"
;;;+---------------------------------------------------+

(defun ListToString ( LLL / NewString)
	(setq NewString "")
	(while	(/= LLL nil)
					(setq NewString (strcat NewString (car LLL)))
					(setq LLL (cdr LLL))
	)
	NewString
)

;**********************
(defun SD3511 (g e)
	(cond
		((= (type e) 'ename) (cdr (assoc g (entget e))))
		((= (type e) 'list) (cdr (assoc g e)))
	)
)


;共通コマンド
(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_706 \n")
	(princ "\n コマンド名：SD_706 \n")
)
(princ)
