![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment |
Como retornar a quantidade de estacas de um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET APIQuantidade de visualizações: 883 vezes |
|
Nesta dica vou mostrar como podemos obter a quantidade de estacas em um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API. Para este exemplo eu usei um alinhamento com o nome "EIXO DA RODOVIA". O primeiro passo é obter uma referência ao documento atual do AutoCAD Civil 3D usando CivilApplication.ActiveDocument. En seguida nós pesquisamos um alinhamento usando uma função personalizada GetAlignmentByName(), que recebe o documento atual e o nome do alinhamento que queremos pesquisar. O retorno desta função é um objeto da classe Alignment. Agora que já temos o alinhamento, nós usamos a função GetStationSet() para retornar um vetor de objetos Station, que significa estaca no Civil 3D. Note que passei como parâmetro o valor StationTypes.Major e usei alinhamento.StationIndexIncrement como o intervalo entre as estacas. Uma vez que já temos o vetor de objetos Station, ou seja, um vetor contendo todas as estacas do alinhamento, só precisamos obter a quantidade de itens usando a propriedade Length. Veja o código AutoCAD Civil 3D .NET C# completo para o exemplo:
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.Civil.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.Civil.DatabaseServices;
namespace Estudos {
public class Class1 : IExtensionApplication {
[CommandMethod("Alinhamento")]
public void Alinhamento() {
// vamos obter uma referência ao documento atual do Civil 3D
CivilDocument doc = CivilApplication.ActiveDocument;
// obtemos o editor
Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;
// vamos pesquisar o alinhamento chamado "EIXO DA RODOVIA"
string nome = "EIXO DA RODOVIA";
// vamos iniciar um nova transação
using (Transaction ts = Application.DocumentManager.MdiActiveDocument.
Database.TransactionManager.StartTransaction()) {
try {
// efetuamos uma chamada ao método GetAlignmentByName() passando
// o documento atual do AutoCAD Civil 3D e o nome do alinhamento
// que queremos encontrar
Alignment alinhamento = GetAlignmentByName(doc, nome);
// ops, o alinhamento não foi encontrado
if (alinhamento == null) {
editor.WriteMessage("\nO alinhamento não foi encontrado.");
}
else {
// encontramos o alinhamento. Vamos mostrar a quantidade de estacas
// que ele possui
Station[] estacas = alinhamento.GetStationSet(StationTypes.Major,
alinhamento.StationIndexIncrement);
int quant_estacas = estacas.Length;
// e mostramos o resultado
editor.WriteMessage("\nO alinhamento possui " + quant_estacas +
" estacas.\n");
}
}
catch (System.Exception e) {
// vamos tratar o erro
editor.WriteMessage("Erro: {0}", e.Message);
}
}
}
// função C# que retorna um alinhamento por nome, ou null em
// caso de não encontrar o alinhamento desejado
public Alignment GetAlignmentByName(CivilDocument doc, string nome) {
// vamos declarar um objeto da classe Alignment
Alignment alinhamento = null;
// agora vamos obter os ids de todos os alinhamentos
ObjectIdCollection alinhamentos = doc.GetAlignmentIds();
// vamos percorrer todos os ids de alinhamentos retornados
foreach (ObjectId idAlinhamento in alinhamentos) {
alinhamento = idAlinhamento.GetObject(OpenMode.ForRead) as Alignment;
// encontramos o alinhamento
if (alinhamento.Name.Equals(nome)) {
return alinhamento;
}
}
// retorna null se o alinhamento não for encontrado
return null;
}
public void Initialize() {
// pode deixar em branco
}
public void Terminate() {
// pode deixar em branco
}
}
}
Ao executar este código AutoCAD Civil 3D C# .NET nós teremos o seguinte resultado: O alinhamento possui 152 estacas. |
Python ::: Pygame ::: Animação, Animações, Técnicas de Animação |
Como criar um relógio analógico no Pygame - Código completo com variáveis e comentários em portuguêsQuantidade de visualizações: 1706 vezes |
Nesta dica mostrarei um código para a criação de um relógio analógico completo em Python, com comentários detalhados e fácil de entender. Veja a imagem:![]() Por simplicidade, eu mantive a mesma cor para todos os elementos da animação e deixei somente o básico mesmo, para que você possa se concentrar nas partes mais importantes. Neste código você aprenderá como definir o tamanho, título e cor de fundo para uma janela do Pygame do Python. Aprenderá também como definir a quantidade de frames por segundo para a animação, assim como controlar os disparos do timer pygame.time.Clock(). Por fim, o código mostra como calcular o ângulo dos ponteiros das horas, minutos e segundos e efetuar o desenho das retas saindo do centro do círculo. Você sabia, por exemplo, que o ângulo de 45 graus corresponde exatamente à hora 1:30hs? Em vários exemplos de relógios analógicos na internet, o ponteiro das horas fica preso à uma determinada hora, aguardando o ponteiro dos segundos completar um giro completo. No código que apresento aqui, eu obtive a hora atual como um decimal, o que faz com que o ponteiro das horas mostre a posição real da hora, como um relógio analógico do mundo real. Para estudantes de matemática, engenharia e física, este código é uma boa aplicação da técnica de se converter coordenadas polares para coordenadas cartesianas. Eis o código completo para o relógio analógico. Boa diversão.
# vamos importar as bibliotecas necessárias
import pygame, sys
from pygame.locals import *
import math
from datetime import datetime
# função que faz a correção dos ângulos
def corrigir_angulo(angulo):
return abs(angulo % 360)
# inicializa a biblioteca
pygame.init()
# quantidade de frames por segundo
FPS = 30
# construímos o timer
timer = pygame.time.Clock()
# obtém a superfície do jogo e define o tamanho da tela
janela = pygame.display.set_mode((600, 400))
# vamos definir o título da janela do jogo
pygame.display.set_caption('Relógio Analógico no Pygame')
# vamos definir alguns parâmetros
fonte = pygame.font.Font(None, 36)
VERMELHO = (200, 0, 0)
BRANCO = (255, 255, 255)
raio = 150
x_inicial = 300
y_inicial = 200
distancia_aro = 20
# e aqui nós entramos no loop do game
while True:
# vamos pintar a tela toda de branco
janela.fill(BRANCO)
# monitoramos os eventos
for evento in pygame.event.get():
# se o evento foi um pedido para sair
if evento.type == QUIT:
# fechamos a tela do jogo
pygame.quit()
# e saimos do programa
sys.exit()
# vamos desenhar um circulo não preenchido (maior)
pygame.draw.circle(janela, VERMELHO, (x_inicial, y_inicial), raio, 2)
# vamos desenhar um circulo não preenchido (menor)
pygame.draw.circle(janela, VERMELHO, (x_inicial + 1, y_inicial + 1), 5, 0)
# vamos desenhar os números do relório (1-12)
for n in range(1, 13):
# calcula o ângulo dessa hora
angulo = math.radians((n * (360 / 12)) - 90)
# agora convertemos o ângulo e o raio para coordenadas cartesianas
if len(str(n)) > 1:
x = math.cos(angulo) * (raio - distancia_aro) - 18
else:
x = math.cos(angulo) * (raio - distancia_aro) - 10
y = math.sin(angulo) * (raio - distancia_aro) - 10
texto_numero = fonte.render(str(n), True, VERMELHO)
janela.blit(texto_numero, (x_inicial + x, y_inicial + y))
# vamos obter as horas, minutos e segundos atuais
hoje = datetime.today()
horas = hoje.hour % 12
minutos = hoje.minute
segundos = hoje.second
# ajustamos as horas para tratar a hora decimal (com frações de horas)
horas = horas + (minutos * (1 / 60)) + (segundos * (1 / 3600))
# desenha o ponteiro das horas
angulo_horas = corrigir_angulo(horas * (360 / 12) - 90)
angulo_horas = math.radians(angulo_horas)
hora_x = math.cos(angulo_horas) * (raio - 60)
hora_y = math.sin(angulo_horas) * (raio - 60)
coord_finais = (x_inicial + hora_x, y_inicial + hora_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 4)
# desenha o ponteiro dos minutos
angulo_minutos = corrigir_angulo(minutos * (360 / 60) - 90)
angulo_minutos = math.radians(angulo_minutos)
minutos_x = math.cos(angulo_minutos) * (raio - 40)
minutos_y = math.sin(angulo_minutos) * (raio - 40)
coord_finais = (x_inicial + minutos_x, y_inicial + minutos_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 3)
# desenha o ponteiro dos segundos
angulo_segundos = corrigir_angulo(segundos * (360 / 60) - 90)
angulo_segundos = math.radians(angulo_segundos)
segundos_x = math.cos(angulo_segundos) * (raio - 30)
segundos_y = math.sin(angulo_segundos) * (raio - 30)
coord_finais = (x_inicial + segundos_x, y_inicial + segundos_y)
pygame.draw.line(janela, VERMELHO, (x_inicial, y_inicial), coord_finais, 1)
# redesenha a tela continuamente
pygame.display.update()
# aciona o disparo do timer
timer.tick(FPS)
|
Java ::: Classes e Componentes ::: JComponent |
Java Swing - Como usar a classe JComponent em suas aplicações Java SwingQuantidade de visualizações: 13254 vezes |
|
A classe JComponent serve como classe base abstrata a partir da qual todos os componentes Swing herdam suas funcionalidades. Esta classe herda da Classe Container, que por sua vez herda de Component, que herda de Object. Várias classes do Java Swing herdam de JComponent, direta ou indiretamente. Por exemplo, a classe JButton herda de javax.swing.AbstractButton, que, por sua vez, herda de javax.swing.JComponent. Entender o papel da classe JComponent é muito importante, pois nos permite o uso de polimorfismo e também de vários design patterns. Sendo assim, analise o seguinte código Java Swing:
package arquivodecodigos;
import java.awt.*;
import javax.swing.*;
public class Estudos extends JFrame{
public Estudos() {
super("Minha primeira aplicação GUI");
// vamos declarar um objeto da classe JComponent
// e atribuir a ele um JButton
JComponent btn = new JButton("Clique Aqui");
getContentPane().add(btn, BorderLayout.SOUTH);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Veja que declaramos uma variável do tipo JComponent e atribuímos a ela um objeto da classe JButton. Isso é perfeitamente possível, já que JButton herda de JComponent, ainda que indiretamente. Entre as classes que herdam de JComponent estão: AbstractButton, BasicInternalFrameTitlePane, Box, Box.Filler, JColorChooser, JComboBox, JFileChooser, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenuBar, JOptionPane, JPanel, JPopupMenu, JProgressBar, JRootPane, JScrollBar, JScrollPane, JSeparator, JSlider, JSpinner, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextComponent, JToolBar, JToolTip, JTree, JViewport. |
PHP ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o comprimento da hipotenusa em PHP dadas as medidas do cateto oposto e do cateto adjascenteQuantidade de visualizações: 1875 vezes |
Nesta dica mostrarei como é possível usar a linguagem PHP para retornar o comprimento da hipotenusa dadas as medidas do cateto oposto e do cateto adjascente. Vamos começar analisando a imagem a seguir:![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos a fazer a converter esta fórmula para código PHP. Veja: <?php $a = 20; // medida do cateto oposto $b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da hipotenusa $c = sqrt(pow($a, 2) + pow($b, 2)); // e mostramos o resultado echo "O comprimento da hipotenusa é: " . $c; ?> Ao executar este código PHP nós teremos o seguinte resultado: O comprimento da hipotenusa é: 36.05551275464 Como podemos ver, o resultado retornado com o código PHP confere com os valores da imagem apresentada. |
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 |






