0

I'm a little confused about how you get access to Revit's element data, such as an element's parameters, location, Id, etc.. If I have this code:

collector = FilteredElementCollector(doc)
collector.OfCategory(BuiltInCategory.OST_Walls)
walls = collector.OfClass(FamilySymbol)
return walls

It will print: Autodesk.Revit.DB.FilteredElementCollector object at 0x0000000000000038 [Auto...]. Where do I go from here? For instance, How do I get a return of the walls' location?

There might be a lot in here, and multiple steps for each item. I am mainly looking for a general concept of getting and/or setting new element data.

Any thoughts?

4

2 に答える 2

1

Python については詳しくありませんが、Revit の API + C# にはかなり精通しています。

コレクターを使用して、プロジェクト上のすべての壁を一覧表示しています。(位置を取得するために) 必要なのは、これらの壁の FamilyInstance オブジェクトです。

C# では次のようになります。

new FilteredElementCollector(uidoc.Document).OfClass(FamilyInstance).ToElements();

次に、結果をループして個々の要素を取得し、それを壁に変換する必要があります。

foreach (Wall i in instances)
{
   var location = i.Location as LocationCurve;

   // The Curve element is a Line - 2 points defining it's position
   var p0 = location.Curve.GetEndPoint(0);
   var p1 = location.Curve.GetEndPoint(1);
}

必要な情報のほとんどは、この FamilyInstance オブジェクトにあります -> http://wikihelp.autodesk.com/Revit/enu/2014/Help/3665-Developers/0074-Revit_Ge74/0083-Family_I83/0086-FamilyIn86

于 2014-02-07T02:57:10.153 に答える
0

Revit API ドキュメントでは、aFilteredElementCollectorIEnumerable<Element>. つまり、実際には壁オブジェクトのリストがあります。これらをPythonリストに追加して、それらを簡単に操作できるようにします。

walls = list(collector)

舞台裏では、次のlist(collector)ようなことを行います。

walls = []
for w in collector:
    walls.append(w)

(これは実際にどのように機能するかではなく、一種の説明であることに注意してください)。

これを行うことで、.NET の内部構造を使用して壁を列挙できますcollector

enumerator = collector.GetEnumerator()
walls = []
while not enumerator.IsDone():
    walls.append(enumerator.Current)
    enumerator.MoveNext()

行が正しいかどうかを確認する必要collector.OfClass(FamilySymbol)があります-私の例のドキュメントでは、空のリストが生成されました-しかし、おそらく壁がFamilySymbol...

次に、壁オブジェクトを操作します。だから、最初の壁を取る:

wall = walls[0]
interior_type_parameter = wall.Parameter['Interior Type']

次に、パラメータを操作します... Revit SDK をインストールすると、オブジェクトをスヌーピングし、そのパラメータと値を見つけるためのツールが見つかります。これを使って!探検!楽しむ!

于 2014-02-07T08:13:01.133 に答える