パーツは、次のような階層構造を持つ要素からも生成できます。
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); } } } } |
選択したパーツの面のオフセット前とオフセット後