Você está aqui: Revit Python Shell ::: Dicas & Truques ::: Paredes - Walls

Como listar os tipos de paredes disponíveis no Revit usando Revit Python Shell

Quantidade de visualizações: 231 vezes
Quando estamos criando paredes no Revit via programação, em geral usamos o construtor Create() da classe Wall que pede o id do tipo da parede, além do id do nível. É nessa hora que a programação Revit Python Shell fica interessante, pois temos que oferecer uma forma de o usuário escolher o tipo de parede que ele deseja. Uma sugestão é uma janela gráfica com uma lista de opções.

No código a seguir eu mostro como listar todos os tipos de paredes disponíveis na sua instalação do Revit, incluindo o nome do elemento, seu id o seu tipo.

O primeiro passo é obter um FilteredElementCollector a partir do documento atual do Revit uidoc.Document. Note a condição WhereElementIsElementType() para retornar apenas os elementos que são tipos de elementos, e não tipos de famílias. A segunda condição BuiltInCategory.OST_Walls trará apenas os elementos relacionados a paredes.

Veja o código Revit Python Shell completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# faz os imports necessários
from Autodesk.Revit import DB, UI
 
# vamos obter uma referência ao Document ativo
doc = uidoc.Document
          
# criamos um novo objeto FilteredElementCollector
collector = FilteredElementCollector(doc)
                 
# vamos obter um FilteredElementCollector contendo apenas
# elementos que sejam ElementType e pertençam à categoria
# OST_Walls
paredes = FilteredElementCollector(doc).WhereElementIsElementType(). \
  OfCategory(BuiltInCategory.OST_Walls)
  
# vamos percorrer os elementos retornados
for parede in paredes:
   print("Id: {0}; Nome: {1}; Tipo: {2}".format(parede.Id.IntegerValue, \
     parede.Name, parede.Kind.ToString()))  

Ao executar este código Revit Python Shell nós teremos o seguinte resultado:

Id: 334; Nome: Curtain Wall; Tipo: Curtain
Id: 396; Nome: Interior - 138mm Partition (1-hr); Tipo: Basic
Id: 397; Nome: Exterior - Brick on Mtl. Stud; Tipo: Basic
Id: 398; Nome: Generic - 200mm; Tipo: Basic
Id: 399; Nome: Generic - 225mm Masonry; Tipo: Basic
Id: 400; Nome: Generic - 140mm Masonry; Tipo: Basic
Id: 401; Nome: Generic - 90mm Brick; Tipo: Basic
Id: 402; Nome: Interior - 79mm Partition (1-hr); Tipo: Basic
Id: 403; Nome: Interior - Blockwork 100; Tipo: Basic
Id: 404; Nome: Interior - 135mm Partition (2-hr); Tipo: Basic
Id: 408; Nome: CW 102-50-100p; Tipo: Basic
Id: 410; Nome: CW 102-85-140p; Tipo: Basic
Id: 411; Nome: CW 102-50-140p; Tipo: Basic
Id: 412; Nome: CW 102-50-215p; Tipo: Basic
Id: 413; Nome: CW 102-85-215p; Tipo: Basic
Id: 5476; Nome: CW 102-85-100p; Tipo: Basic
Id: 5533; Nome: Interior - Blockwork 140; Tipo: Basic
Id: 5541; Nome: Interior - Blockwork 190; Tipo: Basic
Id: 6291; Nome: Generic - 300mm; Tipo: Basic
Id: 9426; Nome: Foundation - 300mm Concrete; Tipo: Basic
Id: 9427; Nome: Retaining - 300mm Concrete; Tipo: Basic
Id: 18921; Nome: Generic - 200mm - Filled; Tipo: Basic
Id: 22694; Nome: Exterior - Render on Brick on Block; Tipo: Basic
Id: 29096; Nome: Exterior Glazing; Tipo: Curtain
Id: 29097; Nome: Storefront; Tipo: Curtain
Id: 54538; Nome: Exterior - Block on Mtl. Stud; Tipo: Basic

Link para compartilhar na Internet ou com seus amigos:

Revit Python Shell ::: Dicas & Truques ::: Grupos - Groups

Como copiar grupos no Revit usando a função Create.PlaceGroup() e o Revit Python Shell

Quantidade de visualizações: 215 vezes
O código que apresento nesta dica mostra como podemos pedir para o usuário selecionar um grupo na área de desenho do Revit e, em seguida, usando a API do Revit e o Revit Python Shell, criar uma cópia do grupo escolhido e posicioná-la em um ponto escolhido pelo usuário.

Em realidade, este código é o mesmo apresentado no tutorial "Como criar seu primeiro plug-in no Revit usando a Revit C# API" da documentação oficial fornecida pela Autodesk. O que fiz foi modificar o código para usar Revit Python Shell em vez de C#, como mostrado no tutorial.

O primeiro passo é importar o objeto ObjectType a partir do módulo Autodesk.Revit.UI.Selection. Em seguida nós usamos __window__.Hide() para que o foco vá para a janela do Revit. Isso é necessário para que o usuário possa selecionar um grupo usando uidoc.Selection.PickObject. Note que coloquei uma mensagem TaskDialog.Show() chamando a atenção do usuário para esta tarefa.

Como a função PickObject() retorna um objeto Reference, nós precisamos fornecer essa referência para a função doc.GetElement() e assim obter o elemento real que queremos manipular. Então, o passo seguinte é pedir para o usuário indicar um ponto na tela de desenho do Revit usando a função uidoc.Selection.PickPoint(). Esta função vai nos retornar um objeto da classe XYZ da API do Revit.

Depois que o usuário selecionar o grupo e o ponto, nós criamos uma nova transação usando Transaction(doc, "Copiar grupo") e a iniciamos com uma chamada à sua função Start(). Então, para concluir, basta uma chamada à doc.Create.PlaceGroup(ponto, grupo.GroupType) e verificar o resultado na tela de desenho do Revit.

Veja o código Revit Python Shell completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# faz o import necessário
from Autodesk.Revit.UI.Selection import ObjectType

# precisamos ocultar a janela do Revit Python Shell
__window__.Hide()

# agora fazemos uma chamada à função PickObject() do objeto Selection e retornamos
# uma Reference
TaskDialog.Show("Aviso", "Selecione um grupo")
selecionado = uidoc.Selection.PickObject(ObjectType.Element, "Selecione um grupo")
# obtemos o grupo a partir de sua referência usando a função
# GetElement() do objeto Document
grupo = doc.GetElement(selecionado)
# vamos pedir para o usuário selecionar um ponto na área de
# desenho do Revit
TaskDialog.Show("Aviso", "Selecione um ponto")
ponto = uidoc.Selection.PickPoint("Selecione um ponto para posicionar o grupo")
 
# criamos uma nova transação e posicionamos a cópia do
# grupo nas coordenadas indicadas pelo usuário
transacao = Transaction(doc, "Copiar grupo")
# iniciamos a transação
transacao.Start()
# copiamos o grupo selecionado pelo usuário e o colocamos no
# ponto indicado
doc.Create.PlaceGroup(ponto, grupo.GroupType)
# fechamos a transação
transacao.Commit()
 
# e mostramos o resultado
TaskDialog.Show("Aviso", "O grupo foi copiado com sucesso") 
  
# depois que o usuário fizer a seleção nós mostramos a janela do
# Revit Python Shell novamente 
__window__.Show() 
__window__.Topmost = True



Revit Python Shell ::: Dicas & Truques ::: Selection, Seleção

Como pedir para o usuário selecionar somente um elemento no Revit usando a função PickObject() do objeto Selection do Revit Python Shell

Quantidade de visualizações: 238 vezes
Nesta dica mostrarei como podemos usar a função PickObject() do objeto Selection do Revit Python Shell para pedir para o usuário selecionar somente um elemento na área de desenho do Revit. Note que o objeto Selection é obtido a partir do objeto uidoc, carregado automaticamente pelo Revit Python Shell.

Depois que o usuário seleciona o elemento, nós usamos a função doc.GetElement() para receber a referência ao elemento e convertê-la para um elemento real. Então, para finalizar, nós acessamos a propriedade Id do elemento e a exibimos na tela.

Veja o código Revit Python Shell completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# faz o import necessário
from Autodesk.Revit.UI.Selection import ObjectType

# precisamos ocultar a janela do Revit Python Shell
__window__.Hide()
 
# agora fazemos uma chamada à função PickObject() do objeto Selection e retornamos
# uma Reference
selecionado = uidoc.Selection.PickObject(ObjectType.Element, "Selecione um elemento")
 
# depois que o usuário fizer a seleção nós mostramos a janela do
# Revit Python Shell novamente
__window__.Show()
__window__.Topmost = True
 
# obtemos o elemento a partir de sua referência usando a função
# GetElement() do objeto Document
elemento = doc.GetElement(selecionado)
 
# e mostramos o resultado
print("O id do elemento selecionado é: {0}".format(elemento.Id))

Ao executar este código Revit Python Shell nós teremos o seguinte resultado:

O id do elemento selecionado é: 359410

Veja como usei as funções __window__.Hide(), __window__.Show() e __window__.Topmost = True para ocultar a janela do Revit Python Shell e exibí-la novamente depois que o usuário fizer a seleção do elemento. Sem essas funções essa operação não pode ser realizada.


Veja mais Dicas e truques de Revit Python Shell

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 34 usuários muito felizes estudando em nosso site.