Você está aqui: Revit Python Shell ::: Dicas & Truques ::: Selection, Seleção |
Como criar um filtro de seleção de elementos no Revit usando Revit Python Shell e a interface ISelectionFilter da API do RevitQuantidade de visualizações: 260 vezes |
Quando estamos escrevendo macros ou plug-ins Revit usando Revit Python Shell e que pedem para o usuário selecionar um ou mais elementos, é sempre uma boa idéia fornecer um filtro de elementos, ou seja, quais tipos de elementos serão permitidos na seleção. Isso faz sentido. Imagine, por exemplo, que o seu código está esperando que o usuário selecione uma parede e, sem perceber, o usuário seleciona uma porta. Sua macro ou add-in vai prosseguir com a execução e, caso não provoque um erro imediato, estará trabalhando com o elemento errado. As funções de seleção PickElementsByRectangle(), PickObject() e PickObjects() da classe Selection aceitam um argumento do tipo ISelectionFilter, que é uma interface que nos permite definir um filtro para os elementos que poderão ser selecionados pelo usuário. Tudo que temos a fazer é criar uma classe Python que implementa esta interface e fornecer nossa própria implementação para os métodos AllowElement() e AllowReference(). Veja um trecho de código Revit Python Shell completo no qual pedimos para o usuário selecionar uma parede. O usuário pode até passar o mouse por cima de outros elementos, mas somente paredes serão destacadas e poderão ser selecionadas: # faz os imports necessários from Autodesk.Revit.UI.Selection import * from Autodesk.Revit import DB, UI # classe personalizada que permite definir o tipo de elemento que # pode ser selecionado class FiltroSelecao(ISelectionFilter): # método construtor def __init__(self, nome_categoria): self.nome_categoria = nome_categoria # método que verifica se o elemento é permitido def AllowElement(self, e): if e.Category.Name == self.nome_categoria: return True else: return False # em geral este método retorna false para não permitir referências def AllowReference(self, ref, point): return False # precisamos ocultar a janela do Revit Python Shell __window__.Hide() try: # vamos criar o filtro de seleção de elementos filtro = FiltroSelecao("Paredes") # agora fazemos uma chamada à função PickObject() do objeto Selection e retornamos Ao executar este código Revit Python Shell nós teremos um resultado parecido com: O id da parede selecionada é: 360294 |
![]() |
Veja mais Dicas e truques de Revit Python Shell |
Dicas e truques de outras linguagens |
C# - Como retornar a quantidade de itens em uma ListBox do C# Windows Forms usando a propriedade Count |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |