top of page

​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;

bottom of page