;***************************************
;***************************************
;;DenSien(電気図作成支援アプリケーション)
;;File Name "MakeSlide.lsp"
;;Command Name "mls"
;;
;;By Kim Grossa
;;Ver1.0 April ,2010
;;
;;Action "Slideファイルの作成"
;;
;;;;How to Use
;;(1)MakeSlide.dclを使用
;;(2)DOSLib.drxのロードを使用しない
;; (BricsCadVersion8用のDOSLibがサポートされなくなったため)
;;
;;THANKS To
;;http://www.afralisp.net/
;;http://www.jefferypsanders.com/autolisp.html
;;http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm
;;http://en.wiki.mcneel.com/default.aspx/McNeel/DOSLib.html
;***************************************
;***************************************
;
;-----Start of File-----
;------------------
;初期設定 InitSet
;------------------
(defun InitSet()
(setq SIENDIR "C:\\Program Files\\Bricsys\\Bricscad\\")
(setq DENBURODIR (strcat SIENDIR "DenSien\\DenBuroV1_1\\"))
(setq QUITFLAG 99)
(setq ItemNum "0")
(setq SelectedDIR NIL)
(setq dwglocal NIL)
(setq sldlocal NIL)
);defun
;-------------------------------------
;ポップアップリストの設定 SetPopList
;-------------------------------------
(defun SetPopList()
;ディレクトリー(フォルダ)の設定
; DirListの初期値 " S21一般配線" ;sStr=1
; "S31機器" ;sStr=2
; "S41一般用照明" ;sStr=3
; "S41防災用照明" ;sStr=4
; "S42コンセント" ;sStr=5
; "S43点滅器" ;sStr=6
; "S44開閉器_計器" ;sStr=7
; "S45配電盤_分電盤等" ;sStr=8
; "S51情報" ;sStr=9
; "S51電話" ;sStr=10
; "S52ナースコール" ;sStr=11
; "S52警報_呼出_表示" ;sStr=12
; "S53電気時計" ;sStr=13
; "S54インターホン" ;sStr=14
; "S54拡声_映像" ;sStr=15
; "S55テレビ共同受信" ;sStr=16
; "S56駐車場管制" ;sStr=17
; "S61自動火災報知" ;sStr=18
; "S62共同住宅用警報" ;sStr=19
; "S63非常警報" ;sStr=20
; "S64消火" ;sStr=21
; "S65自動閉鎖" ;sStr=22
; "S66ガス漏れ警報" ;sStr=23
; "S67無線通信補助" ;sStr=24
; "S68監視カメラ" ;sStr=25
; "S69機械警備" ;sStr=26
; "S70避雷" ;sStr=27
; "S80屋外" ;sStr=28
; "SK1計器" ;sStr=29
; "SK2受変電" ;sStr=30
; "SK3制御盤" ;sStr=31
; "SK4変圧器" ;sStr=32
(setq DirList (list "")) ;;ディレクトリのリストをクリア
(setq DirList (vl-directory-files DENBURODIR "*.*" -1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルのみ
(setq DirList (cdr DirList)) ;リストの1行目を取り除く
);defun
;--------------------------------------------------
;選択されたディレクトリリストの項目を取得 GetItem
;--------------------------------------------------
(defun GetItem()
(setq ItemNum (get_tile "DirList")) ;;リストから選択した項目を取得
);defun
;------------------------------------------
;DWGファイルのリストを取得 GetDWGFileList
;------------------------------------------
(defun GetDWGFileList()
(setq SelectedDIR (nth (atoi ItemNum) DirList)) ;;ブロックのディレクトリを取得
(setq DWGDir (strcat DENBURODIR SelectedDIR))
(setq dwglocal (vl-directory-files DWGDir "*.dwg" 1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルのみ
);defun
;------------------------------------------
;SLDファイルのリストを取得 GetSLDFileList
;------------------------------------------
(defun GetSLDFileList()
(setq SelectedDIR (nth (atoi ItemNum) DirList)) ;;ブロックのディレクトリを取得
(setq SLDDir (strcat DENBURODIR SelectedDIR))
(setq sldlocal (vl-directory-files SLDDir "*.sld" 1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルの
);defun
;--------------------------------------
;DWG,SLDファイルの数を取得 GetFileNum
;--------------------------------------
(defun GetFileNum()
(setq dwgamu (length dwglocal)) ;;dwgファイルの数を取得
(setq sldamu (length sldlocal)) ;;sldファイルの数を取得
(cond
((and (= sldamu 0) (= dwgamu 0))
(alert "SLD,DWGファイルがありません。フォルダを変更して下さい。") ;;sld,dwgファイルが両方ともない場合
(setq fFileName 77)
)
((= sldamu 0)
(alert "SLDファイルがありません。SLDファイルを作成します。") ;;sldファイルがない場合
(setq fFileNum 88)
)
((= dwgamu 0)
(alert "DWGファイルがありません。フォルダを変更して下さい。") ;;dwgファイルがない場合
(setq fFileNum 77)
)
((/= dwgamu sldamu)
(alert "SLDファイルとDWGファイルの数がちがいます。終了します。") ;;dwgファイルとsldファイルの数がちがう場合
(setq fFileNum 99)
)
((= dwgamu sldamu) ;;dwgファイルとsldファイルの数が同じ場合
(alert "すでにSLDファイルがあります。フォルダを変更して下さい。")
(setq fFileNum 1)
)
);cond
);defun
;---------------------------
;SLDファイルの作成 MakeSLD
;---------------------------
(defun MakeSLD()
(GetItem)
(GetDWGFileList)
(GetSLDFileList)
(setq fFileNum NIL)
(GetFileNum)
(if (= fFileNum 99) ;;dwgファイルとsldファイルの数がちがう場合
(exit)
);if
(if (= fFileNum 88) ;;sldファイルがない場合
(progn
(setq dnum 0)
(setq dmax dwgamu)
(princ "dmax= ")(princ dmax)(terpri)
(princ "dwgamu= ")(princ dwgamu)(terpri)
(while (<dnum dmax)
(princ "dnum= ")(princ dnum)(terpri)
(setq DWGFName (strcat DWGDir "\\" (nth dnum dwglocal)))
(princ "DWGFName= ")(princ DWGFName)(terpri)
(setq SLDFName DWGFName)
(setq SLDFName (vl-string-subst ".sld" ".dwg" SLDFName))
(command "_open" DWGFName "")
(command "_mslide" SLDFName "")
(command "_close" "")
(setq dnum (+ dnum 1))
);while
(alert "SLDファイルの作成が終わりました。")
);progn
);;if
);defun
;----------------------------
;終了 QuitLisp
;----------------------------
(defun QuitLisp()
(exit)
);defun
;-----------------------------
;ダイアログの表示 ShowDialog
;-----------------------------
(defun ShowDialog()
(setq DclId (load_dialog "MakeSlide.dcl"))
(new_dialog "MakeSlide" DclId)
(set_tile "Title" "MakeSlide")
(start_list "DirList" 3) ;;ディレクトリリストの項目
(mapcar 'add_list DirList)
(end_list)
(action_tile "OK#" "(MakeSLD)(done_dialog)")
(action_tile "Cancel#" "(done_dialog)")
(action_tile "Quit#" "(QuitLisp)(done_dialog)")
(start_dialog) ;;Start Dialog
(unload_dialog DclId) ;; Unload Dialog
);defun
;-----------------------------
;メイン command name mls
;-----------------------------
(defun C:mls()
(InitSet) ;;初期設定
(SetPopList) ;;ポップアップリストの設定
(while (> QUITFLAG 1) ;;ダイアログの表示
(ShowDialog)
);while
);defun
;-----End of File-----
;***************************************
;;DenSien(電気図作成支援アプリケーション)
;;File Name "MakeSlide.lsp"
;;Command Name "mls"
;;
;;By Kim Grossa
;;Ver1.0 April ,2010
;;
;;Action "Slideファイルの作成"
;;
;;;;How to Use
;;(1)MakeSlide.dclを使用
;;(2)DOSLib.drxのロードを使用しない
;; (BricsCadVersion8用のDOSLibがサポートされなくなったため)
;;
;;THANKS To
;;http://www.afralisp.net/
;;http://www.jefferypsanders.com/autolisp.html
;;http://web2.airmail.net/terrycad/Tutorials/MyDialogs.htm
;;http://en.wiki.mcneel.com/default.aspx/McNeel/DOSLib.html
;***************************************
;***************************************
;
;-----Start of File-----
;------------------
;初期設定 InitSet
;------------------
(defun InitSet()
(setq SIENDIR "C:\\Program Files\\Bricsys\\Bricscad\\")
(setq DENBURODIR (strcat SIENDIR "DenSien\\DenBuroV1_1\\"))
(setq QUITFLAG 99)
(setq ItemNum "0")
(setq SelectedDIR NIL)
(setq dwglocal NIL)
(setq sldlocal NIL)
);defun
;-------------------------------------
;ポップアップリストの設定 SetPopList
;-------------------------------------
(defun SetPopList()
;ディレクトリー(フォルダ)の設定
; DirListの初期値 " S21一般配線" ;sStr=1
; "S31機器" ;sStr=2
; "S41一般用照明" ;sStr=3
; "S41防災用照明" ;sStr=4
; "S42コンセント" ;sStr=5
; "S43点滅器" ;sStr=6
; "S44開閉器_計器" ;sStr=7
; "S45配電盤_分電盤等" ;sStr=8
; "S51情報" ;sStr=9
; "S51電話" ;sStr=10
; "S52ナースコール" ;sStr=11
; "S52警報_呼出_表示" ;sStr=12
; "S53電気時計" ;sStr=13
; "S54インターホン" ;sStr=14
; "S54拡声_映像" ;sStr=15
; "S55テレビ共同受信" ;sStr=16
; "S56駐車場管制" ;sStr=17
; "S61自動火災報知" ;sStr=18
; "S62共同住宅用警報" ;sStr=19
; "S63非常警報" ;sStr=20
; "S64消火" ;sStr=21
; "S65自動閉鎖" ;sStr=22
; "S66ガス漏れ警報" ;sStr=23
; "S67無線通信補助" ;sStr=24
; "S68監視カメラ" ;sStr=25
; "S69機械警備" ;sStr=26
; "S70避雷" ;sStr=27
; "S80屋外" ;sStr=28
; "SK1計器" ;sStr=29
; "SK2受変電" ;sStr=30
; "SK3制御盤" ;sStr=31
; "SK4変圧器" ;sStr=32
(setq DirList (list "")) ;;ディレクトリのリストをクリア
(setq DirList (vl-directory-files DENBURODIR "*.*" -1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルのみ
(setq DirList (cdr DirList)) ;リストの1行目を取り除く
);defun
;--------------------------------------------------
;選択されたディレクトリリストの項目を取得 GetItem
;--------------------------------------------------
(defun GetItem()
(setq ItemNum (get_tile "DirList")) ;;リストから選択した項目を取得
);defun
;------------------------------------------
;DWGファイルのリストを取得 GetDWGFileList
;------------------------------------------
(defun GetDWGFileList()
(setq SelectedDIR (nth (atoi ItemNum) DirList)) ;;ブロックのディレクトリを取得
(setq DWGDir (strcat DENBURODIR SelectedDIR))
(setq dwglocal (vl-directory-files DWGDir "*.dwg" 1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルのみ
);defun
;------------------------------------------
;SLDファイルのリストを取得 GetSLDFileList
;------------------------------------------
(defun GetSLDFileList()
(setq SelectedDIR (nth (atoi ItemNum) DirList)) ;;ブロックのディレクトリを取得
(setq SLDDir (strcat DENBURODIR SelectedDIR))
(setq sldlocal (vl-directory-files SLDDir "*.sld" 1)) ;;-1 フォルダのみ 0 ファイル、フォルダ 1 ファイルの
);defun
;--------------------------------------
;DWG,SLDファイルの数を取得 GetFileNum
;--------------------------------------
(defun GetFileNum()
(setq dwgamu (length dwglocal)) ;;dwgファイルの数を取得
(setq sldamu (length sldlocal)) ;;sldファイルの数を取得
(cond
((and (= sldamu 0) (= dwgamu 0))
(alert "SLD,DWGファイルがありません。フォルダを変更して下さい。") ;;sld,dwgファイルが両方ともない場合
(setq fFileName 77)
)
((= sldamu 0)
(alert "SLDファイルがありません。SLDファイルを作成します。") ;;sldファイルがない場合
(setq fFileNum 88)
)
((= dwgamu 0)
(alert "DWGファイルがありません。フォルダを変更して下さい。") ;;dwgファイルがない場合
(setq fFileNum 77)
)
((/= dwgamu sldamu)
(alert "SLDファイルとDWGファイルの数がちがいます。終了します。") ;;dwgファイルとsldファイルの数がちがう場合
(setq fFileNum 99)
)
((= dwgamu sldamu) ;;dwgファイルとsldファイルの数が同じ場合
(alert "すでにSLDファイルがあります。フォルダを変更して下さい。")
(setq fFileNum 1)
)
);cond
);defun
;---------------------------
;SLDファイルの作成 MakeSLD
;---------------------------
(defun MakeSLD()
(GetItem)
(GetDWGFileList)
(GetSLDFileList)
(setq fFileNum NIL)
(GetFileNum)
(if (= fFileNum 99) ;;dwgファイルとsldファイルの数がちがう場合
(exit)
);if
(if (= fFileNum 88) ;;sldファイルがない場合
(progn
(setq dnum 0)
(setq dmax dwgamu)
(princ "dmax= ")(princ dmax)(terpri)
(princ "dwgamu= ")(princ dwgamu)(terpri)
(while (<dnum dmax)
(princ "dnum= ")(princ dnum)(terpri)
(setq DWGFName (strcat DWGDir "\\" (nth dnum dwglocal)))
(princ "DWGFName= ")(princ DWGFName)(terpri)
(setq SLDFName DWGFName)
(setq SLDFName (vl-string-subst ".sld" ".dwg" SLDFName))
(command "_open" DWGFName "")
(command "_mslide" SLDFName "")
(command "_close" "")
(setq dnum (+ dnum 1))
);while
(alert "SLDファイルの作成が終わりました。")
);progn
);;if
);defun
;----------------------------
;終了 QuitLisp
;----------------------------
(defun QuitLisp()
(exit)
);defun
;-----------------------------
;ダイアログの表示 ShowDialog
;-----------------------------
(defun ShowDialog()
(setq DclId (load_dialog "MakeSlide.dcl"))
(new_dialog "MakeSlide" DclId)
(set_tile "Title" "MakeSlide")
(start_list "DirList" 3) ;;ディレクトリリストの項目
(mapcar 'add_list DirList)
(end_list)
(action_tile "OK#" "(MakeSLD)(done_dialog)")
(action_tile "Cancel#" "(done_dialog)")
(action_tile "Quit#" "(QuitLisp)(done_dialog)")
(start_dialog) ;;Start Dialog
(unload_dialog DclId) ;; Unload Dialog
);defun
;-----------------------------
;メイン command name mls
;-----------------------------
(defun C:mls()
(InitSet) ;;初期設定
(SetPopList) ;;ポップアップリストの設定
(while (> QUITFLAG 1) ;;ダイアログの表示
(ShowDialog)
);while
);defun
;-----End of File-----
※コメント投稿者のブログIDはブログ作成者のみに通知されます