Revitの単一ライン回路

画像

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(); }
      
      





すべて、スキームの準備ができました!



All Articles