使用 Dynamo 2.0,我们可以指定在首次打开 Python 窗口时要使用的默认模板(.py 扩展名)。这是一个渴望已久的请求,因为这可加快 Dynamo 内 Python 的使用。通过使用模板,我们可以在计划开发自定义 Python 脚本时准备好默认导入。
此模板的位置位于 Dynamo 安装的 APPDATA 位置。
通常,这如下所示( %appdata%\Dynamo\Dynamo Core\{version}\ )
image.png

设置模板

为了利用此功能,我们需要在 DynamoSettings.xml 文件中添加以下行。
10.6 Python 模板 - 图2
在我们看到 <PythonTemplateFilePath /> 的位置,只需用以下内容替换它:

  1. <PythonTemplateFilePath>
  2. <string>C:\Users\CURRENTUSER\AppData\Roaming\Dynamo\Dynamo Core\2.0\PythonTemplate.py</string>
  3. </PythonTemplateFilePath>

注意:请将 CURRENTUSER 替换为您的用户名
接下来,我们需要使用要内置的功能构建模板。在本例中,我们在使用 Revit 时嵌入 Revit 相关的导入和一些其他典型项目。
您可以开始一个空白记事本文档,并在其中粘贴以下代码:

  1. import clr
  2. clr.AddReference('RevitAPI')
  3. from Autodesk.Revit.DB import *
  4. from Autodesk.Revit.DB.Structure import *
  5. clr.AddReference('RevitAPIUI')
  6. from Autodesk.Revit.UI import *
  7. clr.AddReference('System')
  8. from System.Collections.Generic import List
  9. clr.AddReference('RevitNodes')
  10. import Revit
  11. clr.ImportExtensions(Revit.GeometryConversion)
  12. clr.ImportExtensions(Revit.Elements)
  13. clr.AddReference('RevitServices')
  14. import RevitServices
  15. from RevitServices.Persistence import DocumentManager
  16. from RevitServices.Transactions import TransactionManager
  17. doc = DocumentManager.Instance.CurrentDBDocument
  18. uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
  19. #Preparing input from dynamo to revit
  20. element = UnwrapElement(IN[0])
  21. #Do some action in a Transaction
  22. TransactionManager.Instance.EnsureInTransaction(doc)
  23. TransactionManager.Instance.TransactionTaskDone()
  24. OUT = element

完成后,将此文件另存为 PythonTemplate.py,并保存在 APPDATA 位置。

Python 脚本行为

定义了 Python 模板后,在每次放置 Python 节点时,Dynamo 都会查找该模板。如果找不到,它将看起来像默认的 Python 窗口。
10.6 Python 模板 - 图3
如果找到 Python 模板(如我们的 Revit 模板),将看到您内置的所有默认项目。
10.6 Python 模板 - 图4
有关此出色附加功能(由 Radu Gidei 提供)的其他信息可以在此处找到:
https://github.com/DynamoDS/Dynamo/pull/8122