祝大家聖誕快樂~  不知道大家有沒有注意到Dynamo Primer裡面的文章: Python 樣板,我發現跟著文章內的指引操作會發生一些小錯誤,甚至會讓Dynamo裡面本來的Python Script節點沒有反應,因此研究了一下,提供我的修改成果給大家參考,首先,我們要先找到"DynamoSettings.xml"的位置,Primer文內說這個檔案"通常"放在"(%appdata%/Dynamo/Core/{version}/)",不知道我的電腦是不是特例,我這個檔案卻是在"%appdata%\Dynamo\Dynamo Revit\2.0",如下圖顯示位置:

接著第二步,編輯DynamoSettings.xml(按右鍵選擇用記事本編輯就可以了),找到<PythonTemplateFilePath />,然後改成

<PythonTemplateFilePath></PythonTemplateFilePath>

第三步,開啟空白記事本,將要作為樣板的程式碼貼進去(可以參考Dynamo Primer),然後將檔名儲存成"PythonTemplate.py",放在跟DynamoSettings.xml同一個資料夾,接著在把PythonTemplate.py的路徑複製出來,應該會長得像這樣:C:\Users\lu\AppData\Roaming\Dynamo\Dynamo Revit\2.0\PythonTemplate.py。lu是我的使用名稱,大家也可以試看看打這樣:%appdata%\Dynamo\Dynamo Revit\2.0\PythonTemplate.py,這樣應該也可以,所以最後一步,就是修改DynamoSettings.xml,將路徑加進去,像是這樣:

  <PythonTemplateFilePath>
  <string>%appdata%\Dynamo\Dynamo Revit\2.0\PythonTemplate.py</string>
  </PythonTemplateFilePath>

存檔之後就OK了,以後開啟Python Script就可以少打很多東西了~FYI~

 

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

#Preparing input from dynamo to revit
element = UnwrapElement(IN[0])

#Do some action in a Transaction
TransactionManager.Instance.EnsureInTransaction(doc)

TransactionManager.Instance.TransactionTaskDone()

OUT = element

 

完成~謝謝收看。

創作者介紹
創作者 BIM BIM BANG BANG! 學習筆記! 的頭像
ChiMing

BIM BIM BANG BANG! 學習筆記!

ChiMing 發表在 痞客邦 留言(0) 人氣( 478 )