CSVファイルの内容から参照した値を、GDLで作成したオブジェクトのパラメータに入力するには、下記の手順で記述します。CSVの他にもテキスト形式であれば、読み込むことが可能です。
CSVファイルを準備する
はじめに、参照するCSVファイルを準備します。今回は、下記のような内容のCSVファイルを例に作成していきます。3行4列の項目があります。
メモ帳などのテキストエディタでCSVファイルを開いた場合、下記のように表示されます。
オブジェクトを作成する
Archicadを起動し、新規オブジェクトを作成します。
ファイル>ライブラリとオブジェクト>新規オブジェクト
「パラメータ」を追加します。CSVファイルを指定するパラメータと参照した値を入力するパラメータを作成します。
- 参照するファイルを指定するパラメータ: stFilename
タイプ- 文字列
値 - sample.csv (参照に使用するファイル名を入力) - 取得した値を入力するパラメータ(1列目): RefNote1
タイプ - 文字列、配列を有効にする
次に、「マスタスクリプト」を開きます。まずは、1列目の文字列を取得してみましょう。下記のように記述します。参照ファイルから、各行の1列目の項目を取得して、作成したパラメータに入力しています。
! 参照ファイル
_filename = stFilename
!!変数を定義
var1 = ""
! 配列を定義
DIM sarray1[]
! ファイルを開く
ch1 = open ("TEXT", _filename,"SEPARATOR = ',', mode = ro, LIBRARY")
i = 1
j = 1
sarray1[1] = ""
! 全ての文字列を収集
DO
nr1 = INPUT (ch1, i, 1, var1)
IF nr1 > 0 AND VARTYPE (var1) = 2 THEN
sarray1[j] = var1
j = j + 1
ENDIF
i = i + 1
WHILE nr1 > 0
close ch1
! 配列をパラメータに入力
RefNote1 = sarray1
parameters RefNote1 = RefNote1
「パラメータ」に戻ると、取得した値が入力されているのが確認できます。
同じ様に、2列目、3列目、4列目の値も取得するパラメータを作成します。1列目と違い、数値として取得する場合は、パラメータのタイプを文字列から、「長さ」に変更し、「マスタスクリプト」にも数値として記述します。
パラメータに追加
- 取得した値を入力するパラメータ(2列目): RefNote2
タイプ - 長さ、配列を有効にする - 取得した値を入力するパラメータ(3列目): RefNote3
タイプ - 長さ、配列を有効にする - 取得した値を入力するパラメータ(4列目): RefNote4
タイプ - 長さ、配列を有効にする
マスタスクリプト記述内容
! 参照ファイル
_filename = stFilename
!!変数を定義
var1 = ""
var2 = 0
var3 = 0
var4 = 0
! 配列を定義
DIM sarray1[]
DIM sarray2[]
DIM sarray3[]
DIM sarray4[]
! ファイルを開く
ch1 = open ("TEXT", _filename,"SEPARATOR = ',', mode = ro, LIBRARY")
i = 1
j = 1
sarray1[1] = ""
sarray2[1] = 0
sarray3[1] = 0
sarray4[1] = 0
! 全ての文字列を収集
DO
nr1 = INPUT (ch1, i, 1, var1, var2, var3, var4)
IF nr1 > 0 AND VARTYPE (var1) = 2 THEN
sarray1[j] = var1
sarray2[j] = var2
sarray3[j] = var3
sarray4[j] = var4
j = j + 1
ENDIF
i = i + 1
WHILE nr1 > 0
close ch1
! 配列をパラメータに入力
RefNote1 = sarray1
parameters RefNote1 = RefNote1
RefNote2 = sarray2
parameters RefNote2 = RefNote2
RefNote3 = sarray3
parameters RefNote3 = RefNote3
RefNote4 = sarray4
parameters RefNote4 = RefNote4
取得した行番号をオブジェクト内で指定できるようにするためには、行を指定するパラメータを追加すればできますが、何行目の値かで指定するよりは、行頭の文字列で指定したい場合は、Values{2}を使用します。下記のパラメータを追記します。
- 取得した値を入力するパラメータ(2列目): iObjectID
タイプ - 整数、配列を有効にする
マスタスクリプト
! 参照ファイル
_filename = stFilename
!!変数を定義
var1 = ""
var2 = 0
var3 = 0
var4 = 0
! 配列を定義
DIM sarray1[]
DIM sarray2[]
DIM sarray3[]
DIM sarray4[]
DIM sarray5[]
! ファイルを開く
ch1 = open ("TEXT", _filename,"SEPARATOR = ',', mode = ro, LIBRARY")
i = 1
j = 1
sarray1[1] = ""
sarray2[1] = 0
sarray3[1] = 0
sarray4[1] = 0
sarray5[1] = 0
! 全ての文字列を収集
DO
nr1 = INPUT (ch1, i, 1, var1, var2, var3, var4)
IF nr1 > 0 AND VARTYPE (var1) = 2 THEN
sarray1[j] = var1
sarray2[j] = var2
sarray3[j] = var3
sarray4[j] = var4
sarray5[j] = i
j = j + 1
ENDIF
i = i + 1
WHILE nr1 > 0
close ch1
! 配列をパラメータに入力
RefNote1 = sarray1
parameters RefNote1 = RefNote1
RefNote2 = sarray2
parameters RefNote2 = RefNote2
RefNote3 = sarray3
parameters RefNote3 = RefNote3
RefNote4 = sarray4
parameters RefNote4 = RefNote4
!行番号を1列目の文字列で指定
values{2} "iObjectID" sarray5, RefNote1
最後に選択した結果が確認できるように、2Dスクリプトに以下を記述します。
_yy = 0
text2 0, _yy, RefNote1[iObjectID] : _yy = _yy-1
text2 0, _yy, RefNote2[iObjectID] : _yy = _yy-1
text2 0, _yy, RefNote3[iObjectID] : _yy = _yy-1
text2 0, _yy, RefNote4[iObjectID] : _yy = _yy-1
「スクリプトの確認」を行て、マスタスクリプト、2Dスクリプトともにエラーがないか確認し、名前を付けて保存します。保存場所は、参照するCSVファイルと同じフォルダに保存します。
Archicadにライブラリとしてロードして使用する
オブジェクトが保存出来たら、CSVファイルとオブジェクトをライブラリとしてロードします。1つのフォルダ内にまとめておくと、ロード時に選択しやすくなります。
ファイル>ライブラリとオブジェクト>ライブラリマネージャー
オブジェクトの設定から作成したオブジェクトを選択し、パラメータを変更すると、平面図で表示される内容が変更されるのが確認できます。
コメント
0件のコメント
記事コメントは受け付けていません。