|
コード領域 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 の高さを変更