パーツは、次のような階層構造を持つ要素から生成できます。
Revit API では、PartUtils クラスを使用して要素をパーツに分割できます。静的メソッド PartUtils.CreateParts()は 1 つまたは複数の要素からパーツを作成するために使用します。API の大部分の要素作成メソッドとは異なり、CreateParts()は実際にパーツを作成したり、パーツを返したりせず、PartMaker と呼ばれる要素をインスタンス化する点に注意してください。PartMaker はその埋め込まれた規則を使用して、再生成中に必要なパーツの作成を促進します。
また、API にはパーツを再分割するためのインタフェースも備わっています。PartUtils.DivideParts()には入力としてパーツ ID の集合、「交差する要素」の ID の集合(レイヤや通芯も可能)、曲線の集合を使用することができます。日常の作業では、交差する要素や曲線を境界として使用し、そこからパーツを分割したり、新しいパーツを生成します。
GetAssociatedParts()メソッドを呼び出すと、要素に関連付けられている一部またはすべてのパーツを見つけることができ、HasAssociatedParts()を使用すると要素がパーツを持っているかどうかを判別することができます。
API では、個々のパーツ要素を削除する方法または、パーツに関連付けられている PartMaker を削除する方法(この場合、次の再生成後に PartMaker によって生成されたすべてのパーツも削除されます)のいずれかでパーツを削除することができます。
Revit API では、Revit ユーザ インタフェースと同様にパーツを操作できます。たとえば、パーツの外側の境界は PartUtils.SetFaceOffset()を使用してオフセットすることができます。
次の例では、オフセット可能なパーツのすべての面をオフセットします。
|
コード領域: パーツの面をオフセット |
Part part = doc.GetElement(uidoc.Selection.PickObject(ObjectType.Element)) as Part;
Autodesk.Revit.DB.GeometryElement geomElem = part.get_Geometry(newOptions());
foreach(GeometryObject geomObject in geomElem)
{
if (geomObjectisSolid)
{
Solidsolid = geomObject as Solid;
FaceArray faceArray = solid.Faces;
foreach (FacefaceinfaceArray)
{
if (part.CanOffsetFace(face))
{
part.SetFaceOffset(face, 1);
}
}
}
}
|
選択したパーツの面のオフセット前とオフセット後