![]() |
|
|
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. |
||
Revit C# ::: Dicas & Truques ::: Revit C# Windows Forms |
Como criar um formulário Windows Forms a partir do Revit C#Quantidade de visualizações: 1230 vezes |
|
Nesta dica mostrarei os passos necessários para se criar uma aplicação Revit C# contendo uma formulário Windows Forms. O objetivo é demonstrar como o usuário pode interagir com os elementos do formulário para acessar e manipular objetos do Revit a partir de códigos C#. Antes de continuarmos, veja a janela Windows Forms que criamos logo abaixo: ![]() Veja que temos um formulário contendo 6 Labels e 6 TextBox contendo as coordenadas inicias e finais de uma linha geométrica usada para criar um novo eixo na área de desenho do Revit. Ao informar as coordenadas e clicar o botão Desenhar Eixo, um novo objeto da classe Grid da Revit API é criado e desenhado no documento atual. Este código é muito útil para iniciantes em programação Revit C# porque mostra como acessar o documento ativo usando ActiveUIDocument e em seguida passar este objeto para uma outra classe C#. De posse deste objeto nós podemos realizar várias tarefas, entre elas criar uma nova linha geométrica usando Line.CreateBound() e, em seguida, criar um novo Grid usando Grid.Create(). Veja o código completo para uma macro chamada Estudos do tipo Aplicativo. Se tiver dificuldades para executar, chama a gente nos contatos na parte superior do site que teremos prazer em ajudá-lo. Eis a listagem do código C#:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
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) {
JanelaPrincipal janela = new JanelaPrincipal();
janela.uidoc = this.ActiveUIDocument;
janela.ShowDialog();
}
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
}
// classe para representar o formulário
public class JanelaPrincipal : System.Windows.Forms.Form {
public UIDocument uidoc;
public System.Windows.Forms.TextBox txtX0;
public System.Windows.Forms.TextBox txtY0;
public System.Windows.Forms.TextBox txtZ0;
public System.Windows.Forms.TextBox txtX1;
public System.Windows.Forms.TextBox txtY1;
public System.Windows.Forms.TextBox txtZ1;
// construtor da classe
public JanelaPrincipal() {
this.Text = "Meu Formulário Revit C# Windows Forms"; // título da janela
this.Width = 390; // largura da janela
this.Height = 240; // altura da janela
// define a posição atual da janela
this.StartPosition = FormStartPosition.CenterScreen;
// vamos criar quatro labels e quatro caixas de texto
Label label1 = new Label();
label1.Text = "X Inicial:";
label1.Location = new System.Drawing.Point(20, 20);
label1.Height = 15;
label1.Width = 80;
Label label2 = new Label();
label2.Text = "Y Inicial:";
label2.Location = new System.Drawing.Point(120, 20);
label2.Height = 15;
label2.Width = 80;
Label label3 = new Label();
label3.Text = "Z Inicial:";
label3.Location = new System.Drawing.Point(220, 20);
label3.Height = 15;
label3.Width = 80;
txtX0 = new System.Windows.Forms.TextBox();
txtX0.Location = new System.Drawing.Point(20, 40);
txtX0.Width = 80;
txtX0.Height = 15;
txtY0 = new System.Windows.Forms.TextBox();
txtY0.Location = new System.Drawing.Point(120, 40);
txtY0.Width = 80;
txtY0.Height = 15;
txtZ0 = new System.Windows.Forms.TextBox();
txtZ0.Location = new System.Drawing.Point(220, 40);
txtZ0.Width = 80;
txtZ0.Height = 15;
Label label4 = new Label();
label4.Text = "X Final:";
label4.Location = new System.Drawing.Point(20, 80);
label4.Height = 15;
label4.Width = 80;
Label label5 = new Label();
label5.Text = "Y Final:";
label5.Location = new System.Drawing.Point(120, 80);
label5.Height = 15;
label5.Width = 80;
Label label6 = new Label();
label6.Text = "Z Final:";
label6.Location = new System.Drawing.Point(220, 80);
label6.Height = 15;
label6.Width = 80;
txtX1 = new System.Windows.Forms.TextBox();
txtX1.Location = new System.Drawing.Point(20, 97);
txtX1.Width = 80;
txtX1.Height = 15;
txtY1 = new System.Windows.Forms.TextBox();
txtY1.Location = new System.Drawing.Point(120, 97);
txtY1.Width = 80;
txtY1.Height = 15;
txtZ1 = new System.Windows.Forms.TextBox();
txtZ1.Location = new System.Drawing.Point(220, 97);
txtZ1.Width = 80;
txtZ1.Height = 15;
// botão que desenha o eixo nas coordenadas indicadas
Button button1 = new Button();
button1.Text = "Desenhar Eixo";
button1.Location = new System.Drawing.Point(95, 160);
button1.Width = 150;
button1.Click += new System.EventHandler(DesenharEixo);
// botão que fecha a janela
Button button2 = new Button();
button2.Text = "Fechar";
button2.Location = new System.Drawing.Point(265, 160);
button2.Width = 80;
button2.Click += new System.EventHandler(FecharJanela);
// adiciona os controles à janela
this.Controls.Add(label1);
this.Controls.Add(label2);
this.Controls.Add(label3);
this.Controls.Add(label4);
this.Controls.Add(label5);
this.Controls.Add(label6);
this.Controls.Add(txtX0);
this.Controls.Add(txtY0);
this.Controls.Add(txtZ0);
this.Controls.Add(txtX1);
this.Controls.Add(txtY1);
this.Controls.Add(txtZ1);
this.Controls.Add(button1);
this.Controls.Add(button2);
}
// função usada para desenhar um novo eixo no documento atual
private void DesenharEixo(object sender, System.EventArgs e) {
// primeiro obtemos uma referência ao documento atual
Document doc = uidoc.Document;
// criamos a linha geométrica para posicionar o eixo
XYZ inicio = new XYZ(Double.Parse(txtX0.Text), Double.Parse(txtY0.Text),
Double.Parse(txtZ0.Text));
XYZ final = new XYZ(Double.Parse(txtX1.Text), Double.Parse(txtY1.Text),
Double.Parse(txtZ1.Text));
// construímos a linha
Line linhaGeometrica = Line.CreateBound(inicio, final);
// iniciamos uma nova transação
using(Transaction t= new Transaction(doc)) {
t.Start("Criar um novo Grid");
Grid grid = Grid.Create(doc, linhaGeometrica);
t.Commit();
}
}
// função usada para fechar a janela
private void FecharJanela(object sender, System.EventArgs e) {
this.Close();
}
}
}
Não se esqueça de adicionar referências a System.Windows.Forms e System.Drawing. Basta, dentro do SharpDevelop, ir no menu Projeto -> Adicionar Referência. |
C# ::: C# + MySQL ::: MySqlCommand |
Como gravar dados em uma tabela MySQL usando INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#Quantidade de visualizações: 1548 vezes |
|
Nesta dica mostrarei como inserir dados em uma tabela MySQL usando o comando SQL INSERT INTO e o comando ExecuteNonQuery() da classe MySqlCommand do C#. A tabela usada no exemplo contém os campos id, titulo, autor, paginas, data_cadastro. O campo id é auto-incremento e o campo data_cadastro é do tipo DATETIME. Por essa razão eu passei os valores NULL para o campo auto-incremento e o valor NOW() para o campo data_cadastro, de forma que a data e hora atual sejam gravadas. Como se trata de uma operação INSERT, o método ExecuteNonQuery() retorna a quantidade de registros afetados pelo comando. No exemplo eu mostro como obter e exibir este valor. Veja o código completo para o exemplo (incluindo a conexão com o banco de dados MySQL a partir do C#):
using System;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace EstudosMySQL {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
// objeto de conexão
MySqlConnection conn = null;
// string de conexão
string connStr = "server=localhost;user id=root; " +
"password=osmar1234; database=estudos; pooling=false";
try {
conn = new MySqlConnection(connStr);
conn.Open();
if (conn.State == ConnectionState.Open) {
// primeiro criamos um novo objeto MySqlCommand
MySqlCommand comando = new MySqlCommand();
// definimos a conexão para este comando
comando.Connection = conn;
// definimos o comando SQL a ser executado
comando.CommandText = "INSERT INTO livros (id, titulo, " +
autor, paginas, data_cadastro) " +
"VALUES(NULL, 'JAVA PARA INICIANTES', " +
"'OSMAR J. SILVA', 740, NOW())";
// e executamos o comando SQL
int res = comando.ExecuteNonQuery();
if (res > 0) {
MessageBox.Show("Operação realizada com sucesso. "
+ res + " linhas afetadas.");
}
else {
MessageBox.Show("Deve ter acontecido alguma coisa. "
+ res + " linhas afetadas.");
}
}
}
catch (MySqlException ex) {
MessageBox.Show("Erro: " +
ex.Message);
}
}
}
}
|
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Um método recursivo que recebe um valor inteiro e o exibe na ordem inversaQuantidade de visualizações: 5027 vezes |
|
Pergunta/Tarefa: Escreva um método recursivo que recebe um valor inteiro (com qualquer quantidade de dígitos) e o exibe na ordem inversa. Se o método receber o valor 467, o valor inverso será 764. Seu método deverá possuir a seguinte assinatura:
public static void exibirInverso(int valor){
// sua implementação aqui
}
Sua saída deverá ser parecida com: Informe um valor inteiro: 932 O valor invertido é: 239 Veja a resolução comentada deste exercício usando Java console:
package exercicio;
import java.util.Scanner;
public class Exercicio{
public static void main(String[] args) {
// cria um novo objeto da classe Scanner
Scanner entrada = new Scanner(System.in);
// solicita um valor inteiro ao usuário
System.out.print("Informe um valor inteiro: ");
// lê o valor informado
int numero = Integer.parseInt(entrada.nextLine());
// exibe o valor na ordem invertida
System.out.print("O valor invertido é: ");
exibirInverso(numero);
System.out.println("\n");
}
// método recursivo que recebe um valor inteiro e o exibe na ordem
// inversa
public static void exibirInverso(int valor){
// a parada da recursividade é o valor igual a 0
if(valor != 0){
System.out.print(valor % 10);
valor = valor / 10;
exibirInverso(valor); // efetua uma nova chamada recursiva
}
}
}
|
C# ::: Datas e Horas ::: DateTime |
Como construir uma data em C# usando o objeto DateTime e fornecendo o dia, mês e ano da data desejadaQuantidade de visualizações: 7570 vezes |
Aplicações que lidam com datas e horas geralmente precisam ser capazes de criar suas próprias datas. Isso pode ser feito com o auxílio de um dos vários construtores da estrutura DateTime. Para esta dica eu mostrarei como criar uma data no formato 23/05/2008. O construtor a ser usado é:DateTime(Int32, Int32, Int32) Este construtor pede valores inteiros representando o ano, mês e dia da data que queremos construir e retorna um objeto DateTime representando a data recém-construida. Veja um exemplo:
static void Main(string[] args){
// cria um objeto DateTime para a data 10/04/2008
DateTime data = new DateTime(2008, 4, 10);
// exibe o resultado
System.Console.WriteLine(data.ToString("dd/MM/yyyy"));
// pausa o programa
Console.ReadKey();
}
Note que, quando usamos este construtor, a parte do DateTime relativa às horas é inicializada como meia-noite. Tome cuidade. Este método pode lançar exceções dos tipos ArgumentOutOfRangeException e ArgumentException se os valores fornecidos para o ano, mês e dia estiverem fora das faixas permitidas. |
Nossas 20 dicas & truques de programação mais populares |
|
wxWidgets - Como baixar, compilar a biblioteca e criar um projeto C++ wxWidgets usando o Visual Studio 2017 |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Java - Programação orientada a objetos em Java - Como criar e usar interfaces em seus programas Java MySQL - Como usar joins no MySQL |
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 |






