なぜ次のコードはRevitPythonシェルでスクリプトとして動作しますが、モジュールに追加するとマクロとしてエラーを投げますか?アイデアは、ドアを収集し、火災評価とフレームの詳細のためのホストオブジェクトを照会し、それらをドアにasignすることです。revit pythonマクロ対スクリプト
エラーは「タイプに属性が設定されていません()」です。だから、このエラーを投げるドア要素でなければなりません。しかし、なぜ、非常に同じコード(docがどのように定義されているかだけを変更する)はスクリプトとして実行されますが、マクロでは実行されないのはなぜですか?
def updateDoors(self):
doc = self.Document
doors = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Doors).WhereElementIsNotElementType().ToElements()
t = Transaction(doc, 'Door Update')
t.Start()
for d in doors:
wallRating = "---"
doorRating = "---"
doorNumber = "---"
wallFr = "---"
wallH = "---"
wallJ = "---"
if d.Host is not None and d is not None:
wallTypeId = d.Host.GetTypeId()
wall = doc.GetElement(wallTypeId)
if wall.LookupParameter('Fire Rating') is not None:
wallFr = wall.LookupParameter('Fire Rating').AsString()
# Get Door Jamb from the wall
if wall.LookupParameter('Frame Jamb') is not None:
wallJ = wall.LookupParameter('Frame Jamb').AsString()
# Get Door Head from the wall
if wall.LookupParameter('Frame Head') is not None:
wallH = wall.LookupParameter('Frame Head').AsString()
if str(wallFr) == '':
d.LookupParameter('Fire Rating-Instance').Set('--')
if str(wallFr) == '0':
d.LookupParameter('Fire Rating-Instance').Set('--')
if str(wallFr) == '1':
d.LookupParameter('Fire Rating-Instance').Set('45')
if str(wallFr) == '2':
d.LookupParameter('Fire Rating-Instance').Set('90')
if str(wallFr) == '3':
d.LookupParameter('Fire Rating-Instance').Set('120')
if d.LookupParameter('Over ride wall assigned details').AsValueString() == 'No':
d.LookupParameter('Jamb').Set(wallJ)
d.LookupParameter('Head').Set(wallH)
t.Commit()
ありがとうございます。そうです、壁ファミリから「タイプ」パラメータを収集し、それらをドアの「インスタンス」パラメータに割り当てることが目的です。実行時にデバッガでエラーが発生するため、マシンを再起動しました。今、スクリプトは動作します...デバッグ101? –
'jamb'と 'head'パラメータを設定する以外は、すべてうまく動作します。エラーは "複数のターゲットが一致する可能性があります"です。私は、ドアの家族やインスタンスの複数のパラメータがあると信じるように導く "ヘッド"と "jamb" - 要素を精練するが、私はそれであるとは思わない。私はデバッガをクラッシュさせることなく動かすのに苦労しています。病気はこれを調べる必要があります。 –
おめでとうございます。はい、表示名でパラメータを選択すると(推奨しません!)、同じ名前の複数の値を取得できます。その詳細とその対処方法についてはこちらをご覧ください:http://thebuildingcoder.typepad.com/blog/2015/06/cnc-direct-export-wall-parts-to-dxf-and-sat.html#2015.2 –