Revitは、ビルディングインフォメーションモデリングの原理を実装するソフトウェアパッケージです。 当初、このプログラムは建築家向けでした。 現在、より多くの企業が求人に応募する際に、エンジニアがRevitで働く必要があります。 Autodesk Revitには、さまざまな問題を解決する独自のアプリケーションを開発できる強力な.NET APIが用意されています。 この記事では、Revitで単一行回路を作成した経験を共有したいと思います。
エンジニアにとってのRevitの主な利点は次のとおりです。
-現在のレイアウトで動作します。
-1つのファイルで複数のエンジニアの共同作業;
-ユーティリティの交差点の制御。
-タスクの交換。
-自動更新された仕様の作成。
Revitでは、電源システムを設計し、表形式で負荷計算を実行することもできます。 欠点は、ロシア連邦で施行されている規制文書に従って計算を行い、機器を選択し、スキームを作成することができないことです。 単一回線回線の作成は、かなり手間がかかる手順であり、多くの時間がかかります。
Autocadで働いていたとき、Excelスプレッドシートを使用して計算しました:接続された機器の電力、名前、場所、タイプ、長さ、およびその他の多くのパラメーターを入力し、計算を実行してから、Autocadのプラグインを使用して図を描きました。
現在、Revitで作業する場合、このすべてのデータはBIMモデルから取得できます。 たとえば、このプラグインは次の情報を受け取ります。
-スイッチ番号。
-電気負荷;
-電圧;
-極の数。
-力率;
-ケーブルの種類。
-電気負荷の分類;
-中性線の断面;
-ケーブルラインの長さ。
残りの情報は、ユーザーが受け取って入力したパラメーターに基づいて計算されます。
プラグイン操作は3つの段階で構成されます。
1)BIMモデルから必要なデータを取得し、編集のためにフォームにロードします。
2)ユーザーパラメータの編集。
3)スキームの作成。
プラグインはリンクからダウンロードできます。
電気システムのパラメーターを抽出するために、アクティブドキュメントにアクセスします。
UIApplication uiapp = commandData.Application; UIDocument uidoc = uiapp.ActiveUIDocument; Application app = uiapp.Application; Document doc = doc.Document;
次に、BIMモデルから必要なパラメーターを抽出します。 この例では、回路パラメータ(数、力率、ケーブルタイプ)、およびケーブルラインの設定からケーブルコアの材料を取得する方法を検討します。 必須パラメーターの検索は、 BuiltInParametersリストを使用してIDで実行されます。 パラメータを見つけるこの方法は、Revitのローカライズに依存しません。
// , "" ParameterValueProvider provider = new ParameterValueProvider(new ElementId((int)BuiltInParameter.RBS_ELEC_CIRCUIT_PANEL_PARAM)); FilterStringRule rule = new FilterStringRule(provider, new FilterStringEquals(), "", true); ElementParameterFilter filter = new ElementParameterFilter(rule); ICollection<Element> docCircuits = (new FilteredElementCollector(doc)) .OfCategory(BuiltInCategory.OST_ElectricalCircuit) .WherePasses(filter) .ToArray(); foreach (Element docCircuit in docCircuits) { // num = docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_NUMBER)? .Element.Name; // powerFactor = docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_POWER_FACTOR)? .AsValueString(); // cableType = docCircuit.get_Parameter(BuiltInParameter.RBS_ELEC_CIRCUIT_WIRE_TYPE_PARAM)? .AsValueString(); // Element wireType = new FilteredElementCollector(doc) .OfClass(typeof(WireType)) .FirstOrDefault<Element>( e => e.Name.Equals(cableType)); string coreMaterial = wireType.get_Parameter(BuiltInParameter.RBS_WIRE_MATERIAL_PARAM) .AsValueString(); }
必要なパラメータを取得したら、回線の作成を開始できます。 トランザクションを作成し、スキームの要素をファイルに挿入します。 ちなみに、単位はフィートなので、要素を挿入するときはこれを覚えておく必要があります。
using (Transaction tx = new Transaction(doc)) { tx.Start(" "); double xCoord = 0; // foreach (Circuit circuit in panel.circuits) { // . FamilySymbol lineSymbol = FilteredElementCollector(doc) .OfClass(typeof(FamilySymbol)) .Where(q => q.Name == "SLD_") .First() as FamilySymbol; // XYZ coords = new XYZ(xCoord, 0, 0).ToFeets(); // SLD_ FamilyInstance line = doc.Create.NewFamilyInstance(coords, lineSymbol, uidoc.ActiveView); // ParameterSet parametersLineOut = line.Parameters; // foreach (Parameter param in parametersLineOut) { switch (param.Definition.Name) { case " ": param.Set(circuit.number); break; case " ": param.Set(circuit.cableType); break; case " ": param.Set(circuit.powerFactor); break; } } xCoord = xCoord + 25; } tx.Commit(); }
すべて、スキームの準備ができました!