![](https://static.wixstatic.com/media/ea798a_1e5d4aafb98d429cbcb7a33527d100de~mv2.jpg/v1/fill/w_1920,h_1080,al_c,q_90,enc_avif,quality_auto/ea798a_1e5d4aafb98d429cbcb7a33527d100de~mv2.jpg)
2. ブロックの取得
プログラムから他のブロックを制御するには、まず操作対象となるブロックを取得することから始めます。ブロックの取得は GridTerminalSystem の以下のメソッド・プロパティで行います。
GetBlockWithName
string型の引数に一致する名前のブロックを取得するメソッド
IMyTextPanel Target = GridTerminalSystem.GetBlockWithName("Text Panel 2") as IMyTextPanel;
GetBlocksOfType
一致するクラス型の全てのブロックを取得するメソッド
eg 1)
var solarPanels = new List<IMyTerminalBlock>();
GridTerminalSystem.GetBlocksOfType<IMySolarPanel>(solarPanels);
eg 2)
List<IMyInteriorLight> lights = new List<IMyInteriorLight>();
GridTerminalSystem.GetBlocksOfType(lights);
eg 3)
List<IMyInteriorLight> lights = new List<IMyInteriorLight>();
GridTerminalSystem.GetBlocksOfType(lights, light => light.Enabled);
GetBlockGroupWithName
string型の引数に一致する名前のグループを取得するメソッド
戻り値は IMyBlockGroup 型
eg 1) "group_name" という名前のグループに含まれるすべてのブロックを IMyTerminalBlock 型のリスト blocks に格納
IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("group_name");
List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
group.GetBlocks(blocks);
eg 2) "group_name" という名前のグループの中で、IMyInteriorLight 型のブロックのみを IMyInteriorLight 型リスト lights に格納
IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("group_name");
List<IMyInteriorLight> lights = new List<IMyInteriorLight>();
group.GetBlocksOfType(lights);
eg 3) "group_name" という名前のグループの中で、IMyInteriorLight 型のブロックのみを IMyTerminalBlock 型リスト lights に格納
IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("group_name");
List<IMyTerminalBlock> lights = new List<IMyTerminalBlock>();
group.GetBlocksOfType<IMyInteriorLight>(lights);
eg 4) "group_name" という名前のグループの中で、プロパティ Enabled が true のインテリアライトのみを抽出し、IMyInteriroLight 型の lights に格納
MyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("group_name");
List<IMyInteriorLight> lights = new List<IMyInteriorLight>();
group.GetBlocksOfType(lights, light => light.Enabled);
GetBlocks
すべてのブロックを取得するメソッド
List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
GridTerminalSystem.GetBlocks(blocks);
SearchBlocksOfName
引数で指定した string 型の文字列が名前に含まれるすべてのブロックを取得するメソッド
大文字と小文字を区別しない
List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>();
GridTerminalSystem.SearchBlocksOfName("Thruster", blocks);
Blocks
グリッドターミナルの全ブロックを取得するプロパティ
var blocks = GridTerminalSystem.Blocks;
BlockGroups
グリッドターミナルの全グループを取得するプロパティ
var blocks = GridTerminalSystem.BlockGroups;