GDL File Manager In-Out
「GDL File Manager In-Out」アドオンを利用することで、GDLスクリプトから、指定したフォルダに含まれているファイルやサブフォルダをスキャンできるようになります。
スキャンの簡単な流れは以下です。
- 「OPEN」コマンドを使用して、スキャンしたいフォルダを指定します。
- 「INPUT」コマンドを使用して、指定したフォルダで、ファイル名を取得します。
- 「CLOSE」コマンドを使用して、フォルダのスキャンを終了します。
マスタースクリプト
Folder = open ("FileMan", "C:\Program Files\Graphisoft\Archicad 27\Archicad Library 27\MyGDL", "files, dialog") n = input (Folder, 0, 0, fileName) print(n) dim _GsmSelection[] i = 1 while n = 1 do iDotPos = STRSTR (fileName, ".") _GsmSelection[i] = STRSUB (fileName, 1, iDotPos - 1) n = input (Folder, 0, 0, fileName) i = i + 1 endwhile close (Folder) values "GsmSelection" _GsmSelection
上記のスクリプトは、"C:\Program Files\Graphisoft\Archicad 27\Archicad Library 27\MyGDL"というパスの中にあるファイルを検索しています。while doコマンドで繰り返し処理を行うことで、MyGDLフォルダ内のファイルを順々にスキャンし、一つずつファイル名を抽出しています。
以下の写真が、サンプルで作成したフォルダです。サンプルのgsmファイルを3つ格納しています。
フォルダ内 |
STRSTRコマンド
抽出したファイル名は、少し文字列の操作を行った後、_GsmSelection 配列に格納しています。
STRSTRコマンドは、文字列の中から、指定の文字列が何番目に位置するのかを検索するコマンドです。上記の場合、スキャンしたファイル名(例えば、bbb.gsm)から "."の位置を検索しています。検索している理由は、文字列から.gsmを削除するためです。
STRSUBコマンド
文字列から.gsmを削除するためには、STRSUBコマンドを使用します。
STRSUBコマンドは、文字列に対して、はじまりと終わりの位置を指定して、文字列を抽出することができます。上記のスクリプトのように書くことで、ファイル名から.gsmを削除できます。
最後にVALUESコマンドを使用して、パラメータに抽出した文字列を格納します。
そうすると以下の写真のように、指定したフォルダ内のgsmファイルを、パラメータの選択肢として扱うことができるようになります。
少しマニアックな機能かもしれませんが、このような仕組みにするのも面白いと思うので、是非試してみてください。
なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!
また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。