Guia Rápido – Programação no Revit com Python
(Dynamo)
1■■ Estrutura Básica
import clr
# Acessar serviços do Revit
[Link]("RevitServices")
from [Link] import DocumentManager
doc = [Link]
# Acessar API do Revit
[Link]("RevitAPI")
from [Link] import *
# Receber dados do Dynamo
elementos = UnwrapElement(IN[0])
# Criar transação para modificar o modelo
t = Transaction(doc, "Minha Automação")
[Link]()
# ... código que altera o Revit ...
[Link]()
# Saída para o Dynamo
OUT = "Concluído"
2■■ Selecionar elementos por categoria
colecao = FilteredElementCollector(doc) \
.OfCategory(BuiltInCategory.OST_Doors) \
.WhereElementIsNotElementType() \
.ToElements()
3■■ Acessar e alterar parâmetros
# Ler parâmetro
valor = [Link]("Mark").AsString()
# Alterar parâmetro
[Link]("Mark").Set("NovoValor")
4■■ Criar elementos
nivel = FilteredElementCollector(doc).OfClass(Level).FirstElement()
tipo_parede = FilteredElementCollector(doc).OfClass(WallType).FirstElement()
nova_parede = [Link](doc, [Link](XYZ(0,0,0), XYZ(10,0,0)), tipo_parede.Id, nivel.
5■■ Trabalhar com coordenadas
ponto = XYZ(5, 10, 0) # X, Y, Z
linha = [Link](XYZ(0,0,0), XYZ(10,0,0))
6■■ Filtrar por nome
portas_filtro = [p for p in colecao if "Madeira" in [Link]]
7■■ Dicas importantes
- Sempre use Transaction para modificar o modelo. - Unidades internas do Revit → pés (1 metro ≈
3.28084 pés). - No Dynamo, você pode misturar Python com nós visuais. - Use UnwrapElement()
para converter entradas do Dynamo em objetos da API. - Ao criar listas de elementos para saída,
use OUT = minha_lista.