Chào mừng các bác đã ghé thăm blog của mình.😄


Các bác sử dụng Python Scripts này để lấy về tất cả các View có trong Revit nhé !

Bước 1 : Khai báo thư viện

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

# Import ToDSType(bool) extension method
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

Bước 2 : Khai báo giá trị truyền vào để làm mới lại danh sách view

Refresh = IN[0]

Bước 3 : Lấy về Tất cả các View có trong mô hình với FilteredElementCollector

doc = DocumentManager.Instance.CurrentDBDocument
collector = FilteredElementCollector(doc)
views = collector.OfClass(View).OfCategory(BuiltInCategory.OST_Views).ToElements()

Bước 4 : Cho List vào vòng lặp và lấy ra từng view một với điều kiện

OUT = list(view.ToDSType(True) for view in views if not view.IsTemplate)

Cuối cùng mình sẽ có một Scripts hoàn chỉnh như thế này,Phía trước truyền vào Boolean chính là Làm mới hoặc cập nhật lại :

Mở rộng

Ngoài những cách làm bên trên:

Mình có thể dùng một gói của archi-lab

Mình có thể dùng GetViewsByType của gói Modelical.Tiền thân của gói này là từ archi-lab nhưng không được để lại ở những phiên bản đời cao.

Tổng kết

Vậy là mình đã kể cho các bác nghe xong hết câu chuyện rồi đó , hôm nào rảnh rỗi lại tiếp tục kể cho các bác nghe về một diễn biến chiến trường khác, cám ơn các bác đã ghé thăm blog !

Tham khảo :

Dynamo Forum

Dynamo Github