【小ネタ】GDLで特定のフォルダをスキャンする

2024年10月23日水曜日

File Manager GDL STRSTR STRSUB values 小ネタ

t f B! P L
仕事でGDLを作成していく中で、GDL FILE MANAGER I/Oアドオンという機能を使いたい場面が出てきたので記録として残しておこうと思います。

GDL File Manager In-Out

「GDL File Manager In-Out」アドオンを利用することで、GDLスクリプトから、指定したフォルダに含まれているファイルやサブフォルダをスキャンできるようになります。

スキャンの簡単な流れは以下です。
  1. 「OPEN」コマンドを使用して、スキャンしたいフォルダを指定します。 
  2. 「INPUT」コマンドを使用して、指定したフォルダで、ファイル名を取得します。 
  3. 「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つ格納しています。

Archicad LibraryをGDLでスキャンする
フォルダ内

STRSTRコマンド

抽出したファイル名は、少し文字列の操作を行った後、_GsmSelection 配列に格納しています。
STRSTRコマンドは、文字列の中から、指定の文字列が何番目に位置するのかを検索するコマンドです。上記の場合、スキャンしたファイル名(例えば、bbb.gsm)から "."の位置を検索しています。検索している理由は、文字列から.gsmを削除するためです。

STRSUBコマンド

文字列から.gsmを削除するためには、STRSUBコマンドを使用します。
STRSUBコマンドは、文字列に対して、はじまりと終わりの位置を指定して、文字列を抽出することができます。上記のスクリプトのように書くことで、ファイル名から.gsmを削除できます。

最後にVALUESコマンドを使用して、パラメータに抽出した文字列を格納します。
そうすると以下の写真のように、指定したフォルダ内のgsmファイルを、パラメータの選択肢として扱うことができるようになります。

.gsmの選択肢
valuesコマンドの利用


少しマニアックな機能かもしれませんが、このような仕組みにするのも面白いと思うので、是非試してみてください。


なお、基本的なGDLの学習はこちらの教材がおすすめです!
GDLリファレンスがgraphisoftが用意していますが、初見では理解しづらいので、
簡単にまとめられたやさしく学ぶArchiCAD GDLプログラミングという本で基礎をしっかり学びましょう!


また、ココナラでのサポートサービスも始めましたので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へ


【お知らせ】
Xのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore

世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。

検索

GDLオブジェクト

UI (4) ユニーク (1) ラベル (2) 仮囲い (6) 多角形 (3) 小ネタ (4) (7) 椅子 (4) 法規 (1) 無償DL (4) 足場 (15) 足場計画 (4)

ブログ アーカイブ

自己紹介

自分の写真
GDL作成などBIM活用のお仕事の相談お待ちしております。 #中堅ゼネコン出身 #施工管理職 #生産設計部 #BIM開発部門
ArchiCADのGDLをコスパよく作成します ArchiCADユーザーでGDL作成を外部委託されている方へ

QooQ