経路指定基本設定は、RoutingPreferenceManager クラスからアクセスできます。このクラスのインスタンスは、MEPCurveType クラスのプロパティから使用できます。現在は、PipeType と DuctType のみが 経路指定基本設定をサポートしています。
RoutingPreferenceManager はセグメント タイプとサイズのすべての規則およびユーザ選択基準に基づいた継手タイプを管理します。RoutingPreferenceRule クラスは 1 つのセグメントまたは継手基本設定を管理し、このクラスのインスタンスを RoutingPreferenceManager に追加することができます。各経路指定基本設定の規則は、どのようなタイプの経路項目を管理しているかによってグループ化されます。タイプは RoutingPreferenceRuleGroupType で表され、これらのオプションが含まれます。
メンバー名 | 説明 |
未定義 | 未定義のグループ タイプ(既定の初期値) |
セグメント | セグメント タイプ(例: パイプストック) |
エルボ | エルボ タイプ |
接合部 | 接合タイプ(拾い出し、T 型、Y 型、タップなど) |
クロス | クロス タイプ |
置換 | 置換タイプ(複数形状置換には独自のグループがある場合があることに注意してください) |
ユニオン | 2 つのセグメントを接続するユニオンのタイプ |
MechanicalJoints | 継手と継手、セグメントと継手、またはセグメントとセグメントを接続する機械継手タイプ |
TransitionsRectangularToRound | 長方形プロファイルから円形プロファイルへの複数形状置換 |
TransitionsRectangularToOval | 長方形プロファイルから楕円形プロファイルへの複数形状置換 |
TransitionsOvalToRound | 楕円形プロファイルから円形プロファイルへの複数形状置換 |
各経路指定基本設定規則には、1 つまたは複数の選択基準があり、RoutingCriterionBase クラス、および作成元タイプ PrimarySizeCriterion によって表されます。PrimarySizeCriterion は、最小および最大サイズの拘束に基づいて継手とセグメントを選択します。
RoutingConditions クラスは、RoutingCondition インスタンスの集合を保持します。RoutingCondition クラスは、最小径または最大径などの経路基準を満たしているかどうかを判断する場合に入力として使用される経路情報を表します。RoutingPreferencesManager.GetMEPPartId()メソッドは、RoutingPreferenceRuleGroupType および RoutingConditions に基づいて継手またはセグメント ID を取得します。
次の例では、ドキュメントのすべてのパイプ タイプを取得し、それぞれに経路指定基本設定マネージャを取得し、経路指定基本設定マネージャの規則に基づいて、各セグメントのサイズを取得します。
コードの領域: 経路指定基本設定を使用 |
private List<double> GetAvailablePipeSegmentSizesFromDocument(Document document) { System.Collections.Generic.HashSet<double> sizes = new HashSet<double>(); FilteredElementCollector collectorPipeType = new FilteredElementCollector(document); collectorPipeType.OfClass(typeof(PipeType)); IEnumerable<PipeType> pipeTypes = collectorPipeType.ToElements().Cast<PipeType>(); foreach (PipeType pipeType in pipeTypes) { RoutingPreferenceManager rpm = pipeType.RoutingPreferenceManager; int segmentCount = rpm.GetNumberOfRules(RoutingPreferenceRuleGroupType.Segments); for (int index = 0; index != segmentCount; ++index) { RoutingPreferenceRule segmentRule = rpm.GetRule(RoutingPreferenceRuleGroupType.Segments, index); Segment segment = document.GetElement(segmentRule.MEPPartId) as Segment; foreach (MEPSize size in segment.GetSizes()) { sizes.Add(size.NominalDiameter); //Use a hash-set to remove duplicate sizes among Segments and PipeTypes. } } } List<double> sizesSorted = sizes.ToList(); sizesSorted.Sort(); return sizesSorted; } |