Help us understand the problem. What is going on with this article?

PyRevit + Python Revit Wrapper で覚えておいたほうがよい書き方①

Revit API でFamilyのTypeの情報を取りたいときは、FamilySymbolのクラスを使うことになります。

そこでは、少しPython特有の書き方が必要になります。
何度かハマって忘れてを繰り返しているので忘備録として残しておくことにします。

まず、Furnitureのカテゴリーのタイプだけをとります。ここでis_not_type=Trueにすると逆にインスタンスだけがとれます。

collector_sample.py
from rpw import db
symbols = db.Collector(of_category="OST_Furniture", is_type=True)

この集めたコレクターのFamilyName、FamilyTypeName,Parameter(value), Parameter(string)の取り方を紹介します。

collector_sample.py
from rpw import db
symbols = db.Collector(of_category="OST_Furniture", is_type=True)

for symbol in symbols:
    famName = symbol.FamilyName
    typeName = Element.Name.GetValue(symbol)
    parameter_value = Element.GetParameters(symbol, "Height")[0].AsValueString()
    parameter = Element.GetParameters(symbol, "Manufacturer")[0].AsString()

FamilyNameはシンプルにとれますが、タイプ名は、Element.Name.GetValue(symbol)という特殊な方法で取ります。同様にParameterの値もとれるのですが注意しないといけないのが、StringとValueを区別しているため、パラメータによって最後のAs~を変えないといけないところです。

またインスタンスを選択して、情報を得る場合の例も載せておきます。
まず、revit.pick_rectangle()でインスタンスを取得した後にその選択したIdrevit.get_selection()にappendします。こうすることで、selection_rpw = ui.Selection() が使用できるようになります。

selection_sample.py
from rpw import ui
from pyrevit import revit
selection = revit.get_selection()
selection_list = revit.pick_rectangle()

for sel in selection_list:
    sel_id = sel.Id
    selection.append(sel_id)

if(selection_list):
    selection_rpw = ui.Selection()

for sel in selection_rpw:
    symbol = sel .get_symbol()
    family = sel .get_family()
    params = symbol.parameters.all
    param = symbol.parameters["SeatCount"].value
    print(symbol)
    print(family)
    print(param)
    print(params)

Revit Python Wrapperで取得したエレメントは、簡単にシンボルやファミリ、パラメータ情報を取得できます。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away