Hướng dẫn set parameter dynamo python - đặt tham số dynamo python

Có một vài cách khác nhau để thiết lập các tham số trong Revit và mỗi cách có một cách truy cập tương ứng khác nhau.

  • Các tham số được chia sẻ (được xác định trong tệp .txt)

  • Tham số dự án (được xác định trong tệp .rvt)

  • Tham số gia đình (được xác định trong tệp .rfa)

  • ConsilyInparameter (được nướng cứng vào phần mềm Revit)

Các tham số chia sẻ, dự án và gia đình được gọi là 'tham số tùy chỉnh' vì người dùng có thể định nghĩa chúng như họ muốn; Chúng ta sẽ xem xét các công cụ xây dựng riêng biệt. Mỗi loại tham số tùy chỉnh có một cách truy cập khác nhau trong một dự án.custom parameters' as users can define them as they wish; we'll look at BuiltInParameters separately. Each kind of custom parameter has a different way of being accessed within a project.

  • Các tham số toàn cầu (có thể truy cập ở mọi nơi trong toàn bộ tệp)

  • Ví dụ gia đình và các tham số loại gia đình (có thể truy cập thông qua loại gia đình hoặc một thể hiện gia đình)

  • Tham số thông tin dự án (được truy cập qua hộp thoại Thông tin dự án)

  • Tham số nhóm (được truy cập thông qua định nghĩa nhóm hoặc một thể hiện nhóm)

Cuối cùng, các tham số tùy chỉnh có thể được thực hiện theo danh mục cụ thể, vì vậy chúng chỉ có thể hợp lệ cho các danh mục Revit (ví dụ: một tham số chỉ áp dụng cho các tờ).

Xác định cái nào là

Để bắt đầu với việc truy cập một tham số bằng mã, trước tiên chúng tôi cần xác định loại tham số nào mà bạn muốn truy cập. Thực hiện theo các bước này để tìm ra những gì bạn đang làm việc với:

  1. 1.

    Tham số có xuất hiện trong cửa sổ Thuộc tính khi bạn nhấp vào phiên bản gia đình Revit không? Điều này có nghĩa là nó là một tham số thể hiện.instance parameter.

  2. 2.

    Nếu không hiển thị trong cửa sổ Thuộc tính, có xuất hiện khi bạn nhấp vào gia đình và mở cửa sổ 'Chỉnh sửa loại' không? Nếu vậy, thì đó là một tham số loại.type parameter.

  3. 3.

    Tham số có xuất hiện trong hộp thoại Quản lý> Toàn cầu không? Nếu vậy, đó là một tham số toàn cầu và có nhiều cách đặc biệt để truy cập này.special ways to access this.

  4. 5.

    Tham số có xuất hiện trong cửa sổ Thuộc tính khi bạn nhấp vào mô hình hoặc nhóm chi tiết không? Điều này có nghĩa là nó là một tham số thể hiện nhóm.group instance parameter.

  5. 6.

    Nếu không hiển thị trong cửa sổ Thuộc tính, có xuất hiện khi bạn nhấp vào nhóm và mở cửa sổ 'Chỉnh sửa loại' không? Sau đó, đó là một tham số loại nhóm.group type parameter.

Một cách tuyệt vời khác để hiểu loại tham số nào bạn đang xử lý là sử dụng RevitLookup miễn phí Addin cho Revit. Điều này cho phép bạn đọc (gần như) mọi giá trị có thể nhìn thấy và vô hình cho bất kỳ yếu tố Revit nào.RevitLookUp addin for Revit. This lets you read (almost) every visible and invisible value for any Revit element.

Nhập khẩu & nbsp; clr nhập & nbsp; sys # nhập revit api clr.addreference ('revitapi') từ & nbsp; autodesk.revit.db & nbsp; Nhập & NBSP; .DesignScript.Geometry & nbsp; Nhập & nbsp;* # Nhận tệp tài liệu hiện tại của Revit. DOC = documentManager.Instance.CurrentDBDocument # Nhận ứng dụng hiện tại Ứng dụng = documentManager.Instance.CurrentUiappLication.Application #get Ứng dụng giao diện người dùng UIAPP = documentManager.Instance.CienUIAPLICATION app
import sys
# import Revit API
clr.AddReference(‘RevitAPI’)
from Autodesk.Revit.DB import *
# import Revit API UI
clr.AddReference(‘RevitAPIUI’)
from Autodesk.Revit.UI import *
# import Revit Services
clr.AddReference(‘RevitServices’)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# import ProtoGeometry
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
# get Revit’s current Document file.
doc = DocumentManager.Instance.CurrentDBDocument
# get the current application
app = DocumentManager.Instance.CurrentUIApplication.Application
#get the user interface application
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

# Các phần tử đầu vào động = & nbsp; unwrapelement (trong [0]) parabartype = trong [1] đường kính
elements = UnwrapElement(IN[0])
ParaBarType = IN[1]
DiameterBarType = IN[2]
ParaSpacing = IN[3]
ValueSpacing = IN[4]
ParaHookType = IN[5]
ValueHookType = IN[6]

# Danh sách trống p1 = [] p2 = [] p3 = []
p1 = []
p2 = []
p3 = []

# Đặt mã của bạn bên dưới dòng này # Tra cứu Tham số cho & nbsp; i & nbsp; in & nbsp; phạm vi (0, len (phần tử), 1): p1.Append (yếu tố [i] .lookupparameter (parabartype)) ].
# look up parameter
for i in range(0,len(elements),1):
p1.append(elements[i].LookupParameter(ParaBarType))
p2.append(elements[i].LookupParameter(ParaSpacing))
#p3.append(elements[i].LookupParameter(“ParaHookType”))

# Bắt đầu Revit Giao dịch Transformanager.Instance.EnsureInTransaction (Doc)
TransactionManager.Instance.EnsureInTransaction(doc)

# Đặt tham số. cho & nbsp; j & nbsp; in & nbsp; phạm vi (0, len (phần tử), 1): p1 [j] .set (đường kính
for j in range(0,len(elements),1):
p1[j].Set(DiameterBarType)
p2[j].Set(ValueSpacing/304.8)
p3[j].Set(ValueHookType)

# Kết thúc Revit Giao dịch Transtermanager.Instance.TransactionTaskDone () out = các phần tử
TransactionManager.Instance.TransactionTaskDone()
OUT = elements

import clr
import sys
# import Revit API
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
# import Revit API UI
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *
# import Revit Services 
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager 
# import ProtoGeometry 
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# get Revit's current Document file.
doc = DocumentManager.Instance.CurrentDBDocument
# get the current application 
app = DocumentManager.Instance.CurrentUIApplication.Application
#get the user interface application 
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

# Dynamo input
elements = UnwrapElement(IN[0])
ParaBarType = IN[1]
DiameterBarType = IN[2]
ParaSpacing = IN[3]
ValueSpacing = IN[4]
ParaHookType = IN[5]
ValueHookType = IN[6]

# Empty list
p1 = []
p2 = []
p3 = []

# Place your code below this line
# look up parameter
for i in range(0,len(elements),1):
	p1.append(elements[i].LookupParameter(ParaBarType))
	p2.append(elements[i].LookupParameter(ParaSpacing))
	#p3.append(elements[i].LookupParameter("ParaHookType"))

# start Revit transaction
TransactionManager.Instance.EnsureInTransaction(doc)

# set parameter.
for j in range(0,len(elements),1):
	p1[j].Set(DiameterBarType)
	p2[j].Set(ValueSpacing/304.8)
	p3[j].Set(ValueHookType)

# end Revit transaction 
TransactionManager.Instance.TransactionTaskDone()
OUT = elements

ad xem giúp e ạ