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: 394 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:
# 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
|
C ::: Desafios e Lista de Exercícios Resolvidos ::: Data e Hora |
Exercícios Resolvidos de C - Escreva um programa C que peça para o usuário informar um ano e informe o dia da semana que o ano começou (domingo, segunda-feiraQuantidade de visualizações: 599 vezes |
|
Pergunta/Tarefa: Escreva um programa C que pede para o usuário informar um ano e então mostre em qual dia da semana o ano começou, por exemplo, domingo, segunda-feira, terça-feira, quarta-feira, etc. Sua saída deverá ser parecida com: Informe um ano: 2022 O ano informado começou em um(a) Sábado Informe um ano: 2023 O ano informado começou em um(a) Domingo Informe um ano: 2024 O ano informado começou em um(a) Segunda-feira Informe um ano: 2025 O ano informado começou em um(a) Quarta-feira Veja a resolução comentada deste exercício usando C:
#include <stdio.h>
#include <stdlib.h>
// função principal do programa
int main(int argc, char *argv[]) {
// variáveis usadas na resolução do problema
char dias_semana[][20] = {"Domingo", "Segunda-feira", "Terça-feira",
"Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"};
int ano, dia_inicial;
// vamos pedir para o usuário informar o ano
printf("Informe um ano: ");
scanf("%d", &ano);
// vamos calcular o número equivalente ao dia da semana que o
// ano iniciou: 0:Domingo, 1:Segunda-feira, 2:Terça-feira, etc
// note que as divisões abaixo são divisões por inteiro, ou seja,
// sem a parte fracionária
dia_inicial = (ano + (ano - 1) / 4) - ((ano - 1) / 100) +
((ano - 1) / 400);
dia_inicial = dia_inicial % 7;
// e mostramos o resultado
printf("O ano informado começou em um(a) %s", dias_semana[dia_inicial]);
printf("\n\n");
system("PAUSE");
return 0;
}
|
Ruby ::: Dicas & Truques ::: Data e Hora |
Como usar a classe DateTime da linguagem RubyQuantidade de visualizações: 7440 vezes |
|
A classe DateTime da linguagem Ruby extende a classe Date e inclui horas, minutos, segundos e frações de segundo. Além disso, esta classe fornece suporte básico a fuso horários. Fuso horários são representados como uma diferença do UTC (Universal Coordinated Time) em fração de um dia. Esta diferença é quanto a hora local é mais cedo ou mais tarde que o UTC. Uma diferença de UTC 0 está centralizada na Inglaterra (também conhecido como GMT). À medida que viajamos para o leste, a diferença aumenta até que alcancemos a linha de separação de data no meio do Oceano Pacífico. Quando viajamos para o oeste, a diferença diminui. Esta diferença é abreviada como "of" na classe Date. Veja um trecho de código no qual usamos a classe DateTime para obter a data e hora atual:
# importa o módulo date
require "date"
# obtém a data e hora atual
agora = DateTime::now
# exibe o resultado
puts "Agora é " + agora.strftime("%e/%m/%Y - %H:%M:%S")
Ao executar este código Ruby nós teremos o seguinte resultado: Agora é 5/04/2022 - 11:51:06 |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar o método FindField para pesquisar um campo no TClientDataSet do Delphi e retornar um objeto da classe TFieldQuantidade de visualizações: 14373 vezes |
O método FindField pode ser usado quando queremos pesquisar um campo no TClientDataSet e retornar um objeto da classe TField. Este método possui a seguinte assinatura:function FindField(const FieldName: string): TField; Veja um trecho de código no qual eu mostro como encontrar um campo chamado "autor" em um ClientDataSet e retornar seu valor no registro atual:
procedure TForm3.Button3Click(Sender: TObject);
var
campo: TField;
begin
// vamos obter o campo com o nome "autor" no ClientDataSet
campo := ClientDataSet1.FindField('autor');
// este campo existe no dataset?
if campo <> nil then
ShowMessage('O campo existe e seu valor no registro atual é: ' +
campo.AsString)
else // o campo não existe no dataset
ShowMessage('O campo não existe no dataset');
end;
Se o campo existir no dataset, veremos uma mensagem parecida com: "O campo existe e seu valor no registro atual é: M. D. Deitel". Em geral usamos o método FindField para determinar se um determinado componente field existe no dataset. O argumento para o método é o nome do campo que queremos pesquisar. Este nome pode ser o nome de um campo simples, o nome de um sub-campo de um objeto field que tenha sido qualificado pelo nome do campo pai ou o nome de um campo agregado. O comportamento do método FindField é o mesmo do método FieldByName. A diferença é que FindField retorna o valor nil se o campo não existir, enquanto FieldByName lança uma exceção do tipo EDatabaseError com a mensagem "Field not found". Esta dica foi escrita e testada no Delphi 2009. |
Nossas 20 dicas & truques de programação mais populares |
|
Delphi - Como usar a propriedade Eof para verificar se estamos no último registro do TClientDataSet do Delphi |
Você também poderá gostar das dicas e truques de programação abaixo |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





