RevitAPIも亀の歩行の速さでたまに勉強してます。
RevitAPIのFilteredElementCollector Classについて、Dynamo教本の中に例が載っていたのだが、去年はずーーっと意味が分からずにいた。それが、久しぶりに見てみたら何となく意味が分かってきた。
まず下記の記述。
all_furniture = FilteredElementCollector(doc)
そもそもこれ何?(doc)って何?引数?ってことはメソッドなの?
でも〇〇.メソッド名みたいな書き方じゃないけど、これ何?
って風に意味不明でした。
まず、API DOCSのFilteredElementCollector Classを見ると、Constructorというページがある。このコンストラクターというのは、オブジェクトが生成されるときのメソッド、
つまり__init__の処理を意味しているらしい。
__init__とは、オブジェクトが生成されたタイミングで行われる初期化の処理の事。
例えば、下記のようにYamadaクラスを作成した時に、__init__にprint関数で"hello"と出力するようにしておくと、OkadaというYamadaクラスのオブジェクトを作成した時に、
自動的に"hello"を出力する。
class Yamada():
def __init__(self):
print("hello")
Okada=Yamada()
あと、__inti__は引数を取ることもできる。
class Yamada():
def __init__(self,Name):
self.Name=Name
print(Self.Name)
で、Docsに戻ってコンストラクターの中の一つのページを見ると、引数にDocumentを取るようにと書かれている。
要はこれが(doc)だっというわけ。
なので、
all_furniture = FilteredElementCollector(doc)
というのは、all_furnitureという変数に、FIlterdElementCollectorクラスを適用して、
FIlterdElementCollectorクラスのオブジェクトにしましたというだけのことだった。
そして、__init__の引数として、Documentが必要だったと。それだけのことでした。
やっぱりPythonの理解を進めないと、そもそも理解できない事がまだ色々あるみたい。