Revit C# ::: Dicas & Truques ::: Selection, Seleção |
Como pedir para o usuário selecionar um ou mais elementos no Revit usando a função PickElementsByRectangle() do objeto Selection da Revit C# APIQuantidade de visualizações: 881 vezes |
|
A Seleção por Retângulo (ou Retângulo de Seleção) do Revit funciona da seguinte forma: a) Desenhe uma caixa de seleção ao colocar o cursor em um dos lados do elemento a ser selecionado e arraste-o na diagonal para formar um limite retangular. b) Para selecionar somente os elementos que estejam completamente dentro do limite da caixa de seleção, arraste o cursor da esquerda para a direita. c) Para selecionar quaisquer elementos que estejam completamente ou parcialmente dentro do limite da caixa de seleção, arraste o cursor da direita para a esquerda. Via código C# usando a API do Revit, nós podemos pedir para o usuário selecionar elementos usando o retângulo de seleção por meio da função PickElementsByRectangle() do objeto Selection e retornar os elementos selecionados em uma IList. O primeiro passo é obter uma referência ao documento atual UIDocument a partir de uma chamada a this.ActiveUIDocument. Em seguida nós obtemos o objeto Selection a partir do UIDocument e chamamos a sua função PickElementsByRectangle(). Finalmente, de posse da lista IList de elementos selecionados nós só precisamos acessar sua propriedade Count para verificar a quantidade de elementos que o usuário selecionou. Veja o código Revit C# completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
namespace Estudos {
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.
TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")]
public partial class ThisApplication {
private void Module_Startup(object sender, EventArgs e) {
// vamos obter uma referência ao UIDocument ativo
UIDocument uidoc = this.ActiveUIDocument;
// agora mostramos uma mensagem para o usuário selecionar um
// elemento
TaskDialog.Show("Aviso", "Selecione um ou mais elementos");
// obtemos uma referência ao objeto Selection do
// UIDocument ativo
Selection selecao = uidoc.Selection;
// e finalmente esperamos que o usuário selecione um ou
// mais elementos usando a seleção de retângulo e os
// guardamos em uma lista
IList<Element> selecionados = selecao.PickElementsByRectangle(
"Selecione os elementos");
// agora mostramos a quantidade de elementos selecionados
TaskDialog.Show("Aviso", "Você selecionou " + selecionados.Count +
" elementos.");
}
private void Module_Shutdown(object sender, EventArgs e) {
// para fazer alguma limpeza de memória ou algo assim
}
#region Revit Macros generated code
private void InternalStartup() {
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
#endregion
}
}
Ao executar esta macro você verá uma mensagem TaskDialog com o seguinte aviso: Você selecionou 4 elementos. |
C++ ::: Win32 API (Windows API) ::: Processos |
Como usar a função EnumProcesses() da WinAPI em seus códigos C++ para obter os identificadores de cada processo ativo no WindowsQuantidade de visualizações: 9002 vezes |
A função EnumProcesses() pode ser usada quando queremos obter os ids de todos os processos sendo executados no momento no Windows. Veja o protótipo desta função:BOOL WINAPI EnumProcesses( DWORD* pProcessIds, DWORD cb, DWORD* pBytesReturned ); Esta função possui três parâmetros: a) DWORD* pProcessIds - Um ponteiro para uma matriz que receberá a lista de identificadores dos processos. É importante definir uma matriz um pouco grande, visto que não sabemos de antemão quantos processos serão retornados. b) DWORD cb - O tamanho da matriz pProcessIds em bytes. c) DWORD* pBytesReturned - O números de bytes retornados na matriz pProcessIds. Podemos facilmente saber quantos processos foram encontrados simplesmente dividindo o número de bytes retornados pela quantidade de bytes em um DWORD. Veja um trecho de código no qual listamos os ids de todos os processos sendo executados atualmente.
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <psapi.h>
/*
Este exemplo usa o header <psapi.h>
É necessário fazer uma referência à psapi.lib
*/
using namespace std;
int main(int argc, char *argv[]){
DWORD processos[1024]; // vamos listar até 1024 processos
DWORD pBytesReturned; // bytes retornados pela função EnumProcesses()
// vamos listar os processos
EnumProcesses(processos, sizeof(processos), &pBytesReturned);
// quantidade de processos retornados
int retornados = pBytesReturned / sizeof(DWORD);
// agora vamos listar os ids dos processos retornados
for(int i = 0; i < retornados; i++){
if(!processos[i] == 0){
cout << "Processo " << (i + 1) << ": " << processos[i] << endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
O id de um processo pode ser fornecido para muitas funções úteis do Windows, entre elas OpenProcess(). Veja um trecho de código no qual fechamos (forçadamente) um processo mediante o fornecimento de seu id:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]){
// vamos fechar o processo com o id 3040
// CUIDADO: Verifique o id do processo antes de fechá-lo
// pode ser que você esteja fechando processos essenciais
// para o bom funcionamento do Windows
// vamos abrir o processo desejado
// vai retornar ERROR_INVALID_HANDLE se o processo não
// puder ser aberto
HANDLE hProcesso = OpenProcess(PROCESS_TERMINATE, 0, 3040);
// vamos fechar o processo
if(TerminateProcess(hProcesso, 0)){
cout << "Processo finalizado com sucesso." << endl;
}
else{
cout << "Erro ao finalizar o processo: " <<
GetLastError() << endl;
}
// vamos fechar o handle do processo
CloseHandle(hProcesso);
system("PAUSE");
return EXIT_SUCCESS;
}
|
Python ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular porcentagem em Python - Como efetuar cálculos de porcentagem em PythonQuantidade de visualizações: 27147 vezes |
|
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em Python. Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas. Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 178.00 # valor original
percentual = 15.0 / 100.0 # 15%
valor_final = valor + (percentual * valor)
# mostra o resultado
print("O valor final do produto é: {0}".format(valor_final))
# O resultado será 204,70
if __name__== "__main__":
main()
Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 250.00 # valor original
percentual = 8.0 / 100.0 # 8%
valor_final = valor - (percentual * valor)
# mostra o resultado
print("O valor final do produto é: {0}".format(valor_final))
# O resultado será 230,00
if __name__== "__main__":
main()
Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
perguntas = 90.0
acertos = 72.0
# mostra a porcentagem de acertos
print("Porcentagem de acertos: {0}%".format((acertos / perguntas) * 100))
# mostra a porcentagem de erros
print("Porcentagem de erros: {0}%".format(((perguntas - acertos) / perguntas) * 100))
# Os resultados serão 80% e 20%
if __name__== "__main__":
main()
Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor_anterior = 300.0 # valor anterior
novo_valor = 340.0 # valor novo
# calcula a porcentagem de lucro
# efetua o cálculo
porcentagem_lucro = ((novo_valor * 100) / valor_anterior) - 100
print("A porcentagem de lucro foi de: {0}%".format(porcentagem_lucro))
# O resultado será 13,33
if __name__== "__main__":
main()
Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em Python:
# Algoritmo que calcula porcentagem em Python
def main():
valor = 70.0 # valor do produto
percentual = 5.0 / 100.0 # 5%
# calcula a comissão
comissao = percentual * valor
# mostra o resultado
print("O valor repassado ao vendedor é: {0}".format(comissao))
# O resultado será 3,5
if __name__== "__main__":
main()
|
Java ::: Pacote java.net ::: HttpURLConnection |
Como usar o método GET da classe HttpURLConnection do Java para enviar dados a uma página PHP, JSP, ASP.NET, etcQuantidade de visualizações: 7393 vezes |
|
Em algumas situações gostaríamos de enviar uma solicitação HTTP do tipo GET a uma página PHP, JSP, ASP.NET, etc, a partir de nossos programas Java. Para isso podemos usar um objeto da classe HttpURLConnection. Para este exemplo eu mostrarei como enviar uma requisição GET para uma página PHP e retornar o resultado da soma de dois números. Comece analisando o código para o documento somar.php: <?php // obtém o primeiro valor $a = (int)$_GET["a"]; // obtém o primeiro valor $b = (int)$_GET["b"]; // vamos somar e mostrar o resultado $soma = $a + $b; echo "A soma dos dois números é: " . $soma; ?> Este código PHP não apresenta muitos segredos: obtemos dois números passados via GET, efetuamos a soma dos dois e escrevemos o resultado na página. Veja agora o código completo para a aplicação Java:
package arquivodecodigos;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Principal {
public static void main(String[] args) {
int n1 = 10, n2 = 25;
URL url;
HttpURLConnection connection = null;
BufferedReader in = null;
try {
url = new URL("http://www.arquivodecodigos.com.br/somar.php?a=" + n1
+ "&b=" + n2);
// vamos efetuar a conexão à URL especificada
connection = (HttpURLConnection)url.openConnection();
// em alguns servidores nós precisamos adicionar o User-Agent para evitar
// o erro 403 Forbidden
// HttpURLConnection : Server return HTTP 403 Forbidden
connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; "
+ "WOW64; rv:221.0) Gecko/20100101 Firefox/31.0");
// vamos obter o retorno da conexão
String linha;
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((linha = in.readLine()) != null) {
System.out.println(linha);
}
}
catch (MalformedURLException ex) {
System.out.println("A URL está mal formada: " + ex.getMessage());
}
catch (IOException ex) {
System.out.println("Não foi possível efetuar a conexão: " +
ex.getMessage());
}
finally {
if(in != null) {
try {
in.close();
}
catch (IOException ex) {
System.out.println("Não consegui fechar o stream de saída: " +
ex.getMessage());
}
}
connection.disconnect();
}
}
}
Ao executar o programa, teremos uma mensagem no console parecida com: A soma dos dois números é: 35 |
Nossas 20 dicas & truques de programação mais populares |
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 |






