Dúvidas, comentários e doaçoes: +55 62 9 8513 2505

Planilha de Dimensionamento de Tubulações Hidráulicas Água Fria e Água Quente Completa
Nossa 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.

Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira
Card 0 de 0
O filtro aplicado não retornou nenhum resultado. Clique o botão Remover Filtro ou experimente um filtro diferente.

Filtrar Cards
Use esta opção para filtrar os cards pelos tópicos que mais lhe interessam.
Termos:
Aviso Importante: Nos esforçamos muito para que o conteúdo dos cards e dos testes e conhecimento seja o mais correto possível. No entanto, entendemos que erros podem ocorrer. Caso isso aconteça, pedimos desculpas e estamos à disposição para as devidas correções. Além disso, o conteúdo aqui apresentado é fruto de conhecimento nosso e de pesquisas na internet e livros. Caso você encontre algum conteúdo que não deveria estar aqui, por favor, nos comunique pelos e-mails exibidos nas opções de contato.
Link para compartilhar na Internet ou com seus amigos:

C# ::: Windows Forms ::: DataGridView

Como retornar a quantidade de linhas em um DataGridView do C# Windows Forms

Quantidade de visualizações: 15475 vezes
A quantidade de linhas em um DataGridView do C# Windows Forms pode ser obtida por meio da propriedade RowCount. Veja:

private void button2_Click(object sender, EventArgs e){
  // vamos adicionar três colunas no DataGridView
  dataGridView1.Columns.Add("cidade", "Cidade");
  dataGridView1.Columns.Add("estado", "Estado");
  dataGridView1.Columns.Add("populacao", "População");

  // vamos adicionar três linhas
  dataGridView1.Rows.Add("Goiânia", "GO", "3.453,39");
  dataGridView1.Rows.Add("Cuiabá", "MT", "1.876,12");
  dataGridView1.Rows.Add("Curitiba", "PR", "5.346,98");

  // não vamos permitir que o usuário adicione novas
  // linhas (o que daria uma linha a mais na nossa
  // contagem
  dataGridView1.AllowUserToAddRows = false;

  // vamos obter a quantidade de linhas no DataGridView
  int quant_linhas = dataGridView1.RowCount;

  // exibe o resultado
  MessageBox.Show("O DataGridView contém " + 
    quant_linhas + " linhas");
}

É possível também usar a propriedade RowCount para definir a quantidade de linhas em um DataGridView:

dataGridView1.RowCount = 6;

Há algumas considerações importantes sobre a propriedade RowCount:

1) Se seu valor for definido como 0, todas as linhas do DataGridView serão removidas;
2) Se o novo valor for menor que o valor atual, as linhas excedentes serão removidas no final da coleção Rows;
3) Se o novo valor for maior que o valor atual, as novas linhas serão adicionadas no final da coleção Rows;
4) Se tentarmos alterar o valor desta propriedade após a definição da propriedade DataSource, uma exceção InvalidOperationException será lançada.


Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata)

Java MySQL - Como obter os tipos de dados suportados pelo MySQL e seus correspondentes JDBC usando o método getTypeInfo() da interface DatabaseMetaData

Quantidade de visualizações: 6609 vezes
Em algumas situações precisamos obter os tipos de dados suportados pelo MySQL e mapeá-los para seus correspondentes JDBC. Esta não é uma tarefa fácil, mas que, com uma pequena ajuda dos recursos de reflexão do Java, pode ser realizada depois de algumas xícaras de café.

O primeiro passo é obter os tipos de dados suportados pelo MySQL com uma chamada ao método getTypeInfo() da interface DatabaseMetaData. Os campos do ResultSet que nos interessam são TYPE_NAME e DATA_TYPE. TYPE_NAME traz o nome do tipo de dados no MySQL enquanto DATA_TYPE traz o tipo JDBC correspondente como um inteiro. Assim, o que temos que fazer é usar reflexão para obter todos os campos da classe java.sql.Types e efetuar um mapeamento entre os tipos.

Veja o código completo para o exemplo:

package estudosbancodados;

import java.lang.reflect.Field;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class EstudosBancoDados{
  static Map mapa; // usado para mapear os tipos JDBC
  
  public static void main(String[] args) {
    // strings de conexão
    String databaseURL = "jdbc:mysql://localhost/estudos";
    String usuario = "root";
    String senha = "osmar1234";
    String driverName = "com.mysql.jdbc.Driver";

    try {
      Class.forName(driverName).newInstance();
      Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);

      // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
      DatabaseMetaData dbmd = conn.getMetaData();

      // vamos obter os tipos de dados suportados por esta versão do MySQL
      // e seus correspondentes JDBC
      ResultSet tiposDados = dbmd.getTypeInfo();
      while(tiposDados.next()){
        System.out.println("MySQL: " + tiposDados.getString("TYPE_NAME") + " - JDBC: " 
          + getJdbcTypeName(Integer.parseInt(tiposDados.getString("DATA_TYPE"))));
      }
      
      // vamos fechar o ResultSet
      tiposDados.close();
    }
    catch (SQLException ex) {
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    catch (Exception e) {
      System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
    }
  }

  // Este método retorna o nome de um tipo JDBC
  // O retorno é null se o tipo JDBC não puder ser reconhecido
  public static String getJdbcTypeName(int jdbcType){
    // vamos usar reflection para mapear valores inteiros a seus nomes
    if(mapa == null) {
      mapa = new HashMap();

      // vamos obter todos os campos da classe java.sql.Types
      Field[] campos = java.sql.Types.class.getFields();
      
      // vamos percorrer os campos
      for(int i = 0; i < campos.length; i++){
        try{
          // vamos obter o nome do campo
          String nome = campos[i].getName();

          // vamos obter o valor do campo
          Integer valor = (Integer)campos[i].get(null);

          // vamos adicionar ao mapa
          mapa.put(valor, nome);
        }
        catch(IllegalAccessException e){
          System.out.println("Ops: " + e.getMessage());
        }
      }
    }

    // vamos retornar o nome do tipo JDBC
    return (String)mapa.get(new Integer(jdbcType));
  }
}

O resultado da execução deste código foi:

MySQL: BIT - JDBC: BIT
MySQL: BOOL - JDBC: BIT
MySQL: TINYINT - JDBC: TINYINT
MySQL: TINYINT UNSIGNED - JDBC: TINYINT
MySQL: BIGINT - JDBC: BIGINT
MySQL: BIGINT UNSIGNED - JDBC: BIGINT
MySQL: LONG VARBINARY - JDBC: LONGVARBINARY
MySQL: MEDIUMBLOB - JDBC: LONGVARBINARY
MySQL: LONGBLOB - JDBC: LONGVARBINARY
MySQL: BLOB - JDBC: LONGVARBINARY
MySQL: TINYBLOB - JDBC: LONGVARBINARY
MySQL: VARBINARY - JDBC: VARBINARY
MySQL: BINARY - JDBC: BINARY
MySQL: LONG VARCHAR - JDBC: LONGVARCHAR
MySQL: MEDIUMTEXT - JDBC: LONGVARCHAR
MySQL: LONGTEXT - JDBC: LONGVARCHAR
MySQL: TEXT - JDBC: LONGVARCHAR
MySQL: TINYTEXT - JDBC: LONGVARCHAR
MySQL: CHAR - JDBC: CHAR
MySQL: NUMERIC - JDBC: NUMERIC
MySQL: DECIMAL - JDBC: DECIMAL
MySQL: INTEGER - JDBC: INTEGER
MySQL: INTEGER UNSIGNED - JDBC: INTEGER
MySQL: INT - JDBC: INTEGER
MySQL: INT UNSIGNED - JDBC: INTEGER
MySQL: MEDIUMINT - JDBC: INTEGER
MySQL: MEDIUMINT UNSIGNED - JDBC: INTEGER
MySQL: SMALLINT - JDBC: SMALLINT
MySQL: SMALLINT UNSIGNED - JDBC: SMALLINT
MySQL: FLOAT - JDBC: REAL
MySQL: DOUBLE - JDBC: DOUBLE
MySQL: DOUBLE PRECISION - JDBC: DOUBLE
MySQL: REAL - JDBC: DOUBLE
MySQL: VARCHAR - JDBC: VARCHAR
MySQL: ENUM - JDBC: VARCHAR
MySQL: SET - JDBC: VARCHAR
MySQL: DATE - JDBC: DATE
MySQL: TIME - JDBC: TIME
MySQL: DATETIME - JDBC: TIMESTAMP
MySQL: TIMESTAMP - JDBC: TIMESTAMP


Python ::: Dicas & Truques ::: Sistema

Como obter o diretório do seu programa Python usando sys.path[0]

Quantidade de visualizações: 10451 vezes
Nesta dica eu mostrarei como é possível usar a primeira posição da lista de strings contida na propriedade path do módulo sys da linguagem Python. Lembre-se de que sys.path contém uma lista de strings especificando os caminhos de busca para os módulos Python.

Veja o código completo para o exemplo:

import sys

# função principal do programa
def main():
  print("O diretório do programa é: ", sys.path[0])
 
if __name__== "__main__":
  main()

Ao executarmos este código nós teremos o seguinte resultado:

O diretório do programa é: c:\estudos_python


C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercícios Resolvidos de C - Ler um número de três dígitos, separá-lo e invertê-lo, escrevendo o número lido e sua forma inversa

Quantidade de visualizações: 1815 vezes
Algorítmo Resolvido de C - Ler um número de três dígitos, separá-lo e invertê-lo, escrevendo o número lido e sua forma inversa

Pergunta/Tarefa:

Escreva um programa C que leia um número de 3 dígitos e o inverta, escrevendo o número lido e o invertido. Por exemplo, se o usuário informar o valor 753, seu programa deverá invertê-lo, resultando em 357. Seu programa deverá exibir a seguinte saída:

Observação: Seu código deverá usar apenas os operadores matemáticos disponíveis, por padrão, na linguagem C.

Informe um valor inteiro de três dígitos: 753
O valor original é: 753
O valor invertido é: 357
Resposta/Solução:

Veja a resolução comentada deste exercício usando C console (modo texto):

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>  
   
int main(int argc, char *argv[])
{
  int numero, temp, inverso;
	
  setlocale(LC_ALL,""); // para acentos do português
  
  // vamos solicitar ao usuário que informe um valor inteiro
  // na faixa 100 a 999 (incluindo)
  printf("Informe um valor inteiro de três dígitos: ");
  // vamos ler o valor informado
  scanf("%d", &numero);

  // vamos verificar se o valor está na faixa permitida
  if(numero < 100 || numero > 999){
    printf("Valor fora da faixa permitida");
  }
  else{
    // vamos criar uma variável temporária para 
    // manter intacto o valor lido
    temp = numero;
    inverso = 0; // guardará o valor invertido

    // vamos inverter o valor agora
    while(temp != 0){
      inverso = (inverso * 10) + (temp % 10);
      temp = temp / 10;
    }

    // vamos mostrar o resultado
    printf("O valor original é: %d\n", numero);
    printf("O valor invertido é: %d", inverso);
  }  
  
  printf("\n\n");
  system("pause");
  return 0;
}



Revit C# ::: Dicas & Truques ::: Eixos - Grids

Como criar eixos no Revit via programação usando a função Create() da classe Grid da Revit C# API

Quantidade de visualizações: 714 vezes
Os eixos, ou grids, são linhas que auxiliam na construção de um projeto, ou seja, uma espécie de malha de linhas. Eles são mais utilizados quando se trabalha com elementos estruturais, para a locação de colunas e pilares.

No Revit, os eixos podem ser verticais, horizontais, inclinados e até em forma de arcos. Para criá-los, vá na aba Arquitetura, seção Dados e localize o item Eixo (ou digite GR).

Via programação nós podemos criar um eixo no Revit usando a função Create() da classe Grid da Revit C# API. Neste exemplo mostrarei, em detalhes, como isso pode ser feito.

O primeiro passo é obter uma referência ao documento UI atual usando this.ActiveUIDocument. Após isso acessar o documento usando uidoc.Document. As coordenadas geométricas de início e fim do eixo são criadas como objetos da classe XYZ. Então, de posse das coordenadas, nós criamos um objeto Line usando a função Line.CreateBound().

Para finalizar nós usamos a função Grid.Create() para desenhar o eixo na área de desenho do Revit. Note como passamos o objeto Line e uma referência ao documento atual para esta função. Veja ainda o uso de uma Transaction para abrir uma transação do Revit, criar o elemento e fechá-la em seguida.

Este exemplo criará um eixo com o LevelId -1, ou seja, no primeiro nível do documento. Em outras dicas dessa seção eu mostro como definir o nível para o grid recém-criado.

Veja o código Revit C# API completo para o exemplo:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Architecture;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI;
using Autodesk.Revit.UI.Selection;

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) {
      // primeiro obtemos uma referência ao documento atual
      UIDocument uidoc = this.ActiveUIDocument;
      Document doc = uidoc.Document;
             
      // criamos a linha geométrica para posicionar o eixo
      // não se esqueça de converter metros para pés      
      XYZ inicio = new XYZ(0, -100, 0);
      XYZ final = new XYZ(0, 100, 0);
      
      // 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");
        // e criamos o novo eixo
        Grid eixo = Grid.Create(doc, linhaGeometrica);
        t.Commit();
        // e mostramos o resultado
        TaskDialog.Show("Aviso", "O novo eixo foi criado com o ID: " +
          eixo.Id);
      }
    }
      
    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 este código Revit C# API teremos o seguinte resultado:

O novo eixo foi criado com o ID: 49827


Veja mais Dicas e truques de Revit C#

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby


E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser. Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book Apenas R$ 19,90


© 2026 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 14 usuários muito felizes estudando em nosso site.