Você está aqui: Revit Python Shell ::: Dicas & Truques ::: Paredes - Walls |
Como listar os tipos de paredes disponíveis no Revit usando Revit Python ShellQuantidade 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 |
![]() |
Revit Python Shell ::: Dicas & Truques ::: Grupos - Groups |
Como copiar grupos no Revit usando a função Create.PlaceGroup() e o Revit Python ShellQuantidade 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 ShellQuantidade 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 |
![]() 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 |
![]() 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 |