アセンブリ グループを使用する

Assembly オブジェクト内のサブアセンブリを、グループに編成します。これらの AssemblyGroup オブジェクトには、Assembly.Groups プロパティを使用してアクセスしますが、オフセット AssemblyGroup オブジェクトにアクセスするには OffsetAssembly.Groups プロパティを使用します。 AssemblyGroup またはオフセット AssemblyGroup 内のすべての Subassembly オブジェクトは、親 AssemblyGroup またはオフセット AssemblyGroup オブジェクトの GetSubassemblyIds() メソッドによってアクセスされ、AssemblyGroup またはオフセット AssemblyGroup 内のすべての Subassembly オブジェクトの ObjectIds を含む ObjectIdCollection を返します。

この例では、それぞれの AssemblyGroup 内の AssemblyGroupSubassembly が、 指定された Assembly に対して、エディタに一覧表示されます。

// Assembly
// Get an Assembly by name:
ObjectId assemblyId2 = _civilDoc.AssemblyCollection["Assembly - (1)"];
Assembly assembly2 = ts.GetObject(assemblyId2, OpenMode.ForRead) as Assembly;
_editor.WriteMessage("Assembly name: {0}\n", assembly2.Name);
foreach (AssemblyGroup assemblyGroup2 in assembly2.Groups)
{
    _editor.WriteMessage("Subassemblies in Group {0}:\n", assemblyGroup2.Name);
    foreach (ObjectId subassemblyid2 in assemblyGroup2.GetSubassemblyIds())
    {
        Subassembly subassembly2 = ts.GetObject(subassemblyid2, OpenMode.ForRead) as Subassembly;
        _editor.WriteMessage("Subassembly: {0}\n", subassembly2.Name);
    }
}

// OffsetAssembly
OffsetAssemblyCollection OffsetAssemblies = assembly2.OffsetAssemblies;
OffsetAssembly offsetAssembly = OffsetAssemblies[0];
_editor.WriteMessage("Offset assembly name: {0}\n", offsetAssembly.Name);
foreach (AssemblyGroup offsetAssemblyGroup in offsetAssembly.Groups)
{
    _editor.WriteMessage("Subassemblies in Offset Group {0}:\n", offsetAssembly.Name);
    foreach (ObjectId subassemblyid in offsetAssemblyGroup.GetSubassemblyIds())
    {
        Subassembly subassembly = ts.GetObject(subassemblyid, OpenMode.ForRead) as Subassembly;
        _editor.WriteMessage("Subassembly: {0}\n", subassembly.Name);
    }
}