2017-03-06 13 views
0

すべての汎用モデル、つまりパネルとパーツの寸法を合わせたいと思います。私はこれを達成する方法を選んだ。しかし、私が見ることができる唯一の問題は、壁を再ペタル化するとき、ディメンションを上書きしないということです。 (トランザクションを使用してパーツまたは汎用モデルに添付されている寸法Revit

プライベートの静的な無効CreateDimension(オフセットダブルXYZ開始、XYZの終わり、ビュービュー、文字列テキスト、XYZのDIR) { (!start.IsEqual(終了))場合 { を試してみてください { t =新しいトランザクション(AppMain.Settings.ActiveDoc、 "ディメンションの追加")) { t.Start();

    Curve c = Line.CreateBound(start, end); 

        XYZ normal = dir.Multiply(offset); 

        Line tranformed = c.CreateTransformed(Transform.CreateTranslation(normal)) as Line; 

        if (null != tranformed) 
        { 
         XYZ ai = start; 
         XYZ ao = tranformed.GetEndPoint(0); 
         Line lineA = Line.CreateBound(ai, ao); 
         DetailCurve modelcurveA = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineA); 

         XYZ bi = end; 
         XYZ bo = tranformed.GetEndPoint(1); 
         Line lineB = Autodesk.Revit.DB.Line.CreateBound(bi, bo); 
         DetailCurve modelcurveB = AppMain.Settings.ActiveDoc.Create.NewDetailCurve(view, lineB); 

         ReferenceArray ra = new ReferenceArray(); 
         ra.Append(modelcurveA.GeometryCurve.Reference); 
         ra.Append(modelcurveB.GeometryCurve.Reference); 

         Line lineAB = Line.CreateBound(ao, bo); 
         Dimension dimension = AppMain.Settings.ActiveDoc.Create.NewDimension(view, lineAB, ra); 
         dimension.Below = text; 
        } 


        t.Commit(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      AppMain.Settings.LogErrorMessage(ex.Message); 
     } 
    } 

他の方法はありますか?

おかげで、 ロブ

答えて

0

は、ユーザー・インタフェースを介して手動でこの問題に対処する方法を発見しましたか?これは主に、Revit APIタスクに取り組むときに開始するのに最適な場所です。あなたがUIを介してそれを解決することができれば、チャンスは自動化することもできます。 UIソリューションが見つからない場合は、自動化もほとんど不可能です。

マニュアル変更を実行することで、関連する要素とそのパラメータのRevitデータベースで発生した正確な違いを分析します。手動のUIインタラクションによって変更された内容を正確に見つけたら、おそらく同じ変更をプログラムによってAPIを介して複製できます。ここでは、Revit APIのプログラミングタスクに対処する方法をさらに詳しく説明します。

http://thebuildingcoder.typepad.com/blog/2017/01/virtues-of-reproduction-research-mep-settings-ontology.html#3

関連する問題