コード領域 29-1: 柱、梁、ブレースを区別 |
public void GetStructuralType(FamilyInstance familyInstance) { string message = ""; switch (familyInstance.StructuralType) { case StructuralType.Beam: message = "FamilyInstance is a beam."; break; case StructuralType.Brace: message = "FamilyInstance is a brace."; break; case StructuralType.Column: message = "FamilyInstance is a column."; break; case StructuralType.Footing: message = "FamilyInstance is a footing."; break; default: message = "FamilyInstance is non-structural or unknown framing."; break; } TaskDialog.Show("Revit",message); } |
カテゴリを使用すれば、構造柱、梁、ブレースに対応する FamilySymbol オブジェクトをフィルタすることができます。構造梁とブレースのカテゴリは BuiltInCategory.OST_StructuralFraming です。構造柱のカテゴリは BuiltInCategory.OST_StructuralColumns です。
コード領域 29-2: BuiltInCategory.OST_StructuralFraming を使用 |
public void GetBeamAndColumnSymbols(Document document) { FamilySymbolSet columnTypes = new FamilySymbolSet(); FamilySymbolSet framingTypes = new FamilySymbolSet(); FilteredElementCollector collector = new FilteredElementCollector(document); ICollection<Element> elements = collector.OfClass(typeof(Family)).ToElements(); foreach(Element element in elements) { Family family = element as Family; Category category = family.FamilyCategory; if (null != category) { ISet<ElementId> familySymbolIds = family.GetFamilySymbolIds(); if ((int)BuiltInCategory.OST_StructuralColumns == category.Id.IntegerValue) { foreach (ElementId id in familySymbolIds) { FamilySymbol symbol = family.Document.GetElement(id) as FamilySymbol; columnTypes.Insert(symbol); } } else if ((int)BuiltInCategory.OST_StructuralFraming == category.Id.IntegerValue) { foreach (ElementId id in familySymbolIds) { FamilySymbol symbol = family.Document.GetElement(id) as FamilySymbol; framingTypes.Insert(symbol); } } } } string message = "Column Types: "; FamilySymbolSetIterator fsItor = columnTypes.ForwardIterator(); fsItor.Reset(); while (fsItor.MoveNext()) { FamilySymbol familySybmol = fsItor.Current as FamilySymbol; message += "\n" + familySybmol.Name; } TaskDialog.Show("Revit",message); } |
FamilyInstance.ExtensionUtility プロパティを使用して、梁のセットバックのプロパティを取得、設定できます。このプロパティが null を返す場合は、梁のセット バックを修正できません。
BeamSystem を使用すると、Revit Structure の梁システムにフル アクセス、編集することができます。BeamSystemType、BeamType、Direction、Level など、すべてのプロパティを取得、設定できます。BeamSystem.Direction は、エッジの 1 線分に限定されません。これは、BeamSystem を使用して同じ平面上の任意の XYZ 座標に設定することができます。
図 156: BeamSystem の高さを変更