Você está aqui: Cards de Engenharia Civil - Fundações |
||
|
||
|
|
||
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Eof para verificar se estamos no último registro do TClientDataSet do DelphiQuantidade de visualizações: 14561 vezes |
|
Em algumas situações gostaríamos de verificar se já estamos no último registro do TClientDataSet, ou seja, estamos percorrendo todos os registros do dataset e queremos saber se já estamos no último. Para isso podemos usar a propriedade Eof da classe TClientDataSet. Esta propriedade retorna true se estivermos no último registro e false em caso contrário. Veja um trecho de código no qual usamos um laço while para percorrer todos os registros de um TClientDataSet. Note o uso da propriedade Eof para finalizar as iterações do laço:
procedure TForm3.Button4Click(Sender: TObject);
begin
// vamos percorrer todos os registros do TClientDataSet
ClientDataSet1.First; // vamos para o primeiro registro
// e agora disparamos um laço While
while not ClientDataSet1.Eof do
begin
// vamos mostrar em um TMemo os valores do
// campo id de cada registro
Memo1.Lines.Add(ClientDataSet1.FieldByName('id').AsString);
// vamos mover para o próximo registro
ClientDataSet1.Next;
end;
end;
A propriedade Eof é verdadeira quando: a) Abrimos um dataset vazio. b) Efetuamos uma chamada ao método Last do dataset. c) Chamamos o método Next do dataset e a chamada falha porque o registro atual já é o último registro no dataset. d) Efetuamos uma chamada ao método SetRange em uma faixa de dados ou dataset vazio. Esta dica foi escrita e testada no Delphi 2009. |
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como rotacionar colunas e pilares no Revit via programação usando a função RotateElement() da classe ElementTransformUtils da Revit C# APIQuantidade de visualizações: 519 vezes |
|
Nesta dica mostrarei como podemos usar a função RotateElement() da classe ElementTransformUtils da Revit C# API para rotacionar uma coluna ou pilar no Revit, tudo isso via programação. Essa dica é muito útil para programadores Revit C#, pois traz as técnicas necessárias para selecionar um único elemento na área de desenho do Revit, assim como obter sua caixa delimitadora (BoundingBox), seu ponto geométrico central e, o mais importante, fazer a rotação do elemento em seus eixos. O primeiro passo é pedir para o usuário selecionar o pilar ou a coluna usando a função PickObject() da classe Selection, que retorna uma Reference. Após a seleção do elemento nós usamos a função GetElement() da classe Document para retornar o elemento como uma variável FamilyInstance, ou seja, uma instância de família do Revit. De posse da instância de família nós usamos a função get_BoundingBox() para obter e retornar um objeto da classe BoundingBoxXYZ. É esse objeto que usamos para obter o ponto máximo, o ponto mínimo e o ponto geométrico central da coluna ou pilar. O passo final é usar a função RotateElement() da classe ElementTransformUtils para rotacionar a coluna ou pilar de acordo com o ângulo de rotação desejado. Note que fiz a conversão de ângulos em graus para ângulos em radianos antes de efetuar a rotação. Veja o código Revit C# API completo para o exemplo:
using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.DB.Structure;
using Autodesk.Revit.UI.Selection;
using System.Collections.Generic;
using Autodesk.Revit.DB.Architecture;
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 Document ativo
Document doc = this.ActiveUIDocument.Document;
UIDocument uidoc = this.ActiveUIDocument;
// agora mostramos uma mensagem para o usuário selecionar uma
// coluna ou pilar
TaskDialog.Show("Aviso", "Selecione uma coluna ou pilar");
// obtemos uma referência ao objeto Selection do
// UIDocument ativo
Selection selecao = uidoc.Selection;
// e finalmente esperamos que o usuário selecione o elemento
Reference selecionado = selecao.PickObject(ObjectType.Element,
"Selecione uma coluna ou pilar");
// agora testamos se o usuário realmente selecionou um
// elemento
if (selecionado != null) {
// vamos obter o elemento selecionado a partir da
// referência
FamilyInstance coluna = uidoc.Document.GetElement(selecionado)
as FamilyInstance;
// vamos obter o elemento BoundingBoxXYZ
BoundingBoxXYZ bounding = coluna.get_BoundingBox(null);
// vamos obter as informações da BoundingBoxXYZ
// primeiro o ponto mínimo (canto esquerdo inferior e
// a parte de trás da caixa delimitadora)
XYZ pontoMinimo = bounding.Min;
// agora o ponto máximo (canto direito superior e
// a parte da frente da caixa delimitadora)
XYZ pontoMaximo = bounding.Max;
// agora obtemos o ponto central da coluna
XYZ centro = (pontoMaximo + pontoMinimo) * 0.5;
// construímos a linha que servirá de eixo de rotação
Line eixos = Line.CreateBound(centro, centro + XYZ.BasisZ);
// definimos o ângulo de rotação em graus
double angulo_rotacao_graus = 45;
// convertemos para radianos
double angulo_rotacao_radianos = angulo_rotacao_graus * (Math.PI / 180);
// iniciamos a transação
Transaction transacao = new Transaction(doc);
transacao.Start("Como rotacionar colunas e pilares no Revit");
// rotacionamos a coluna ou pilar
ElementTransformUtils.RotateElement(doc, coluna.Id, eixos,
angulo_rotacao_radianos);
// fazemos o commit da transação
transacao.Commit();
// e mostramos o resultado
TaskDialog.Show("Aviso", "A coluna foi rotacionada com sucesso.");
}
}
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
}
}
|
Java ::: Coleções (Collections) ::: Set (Conjunto) |
Como usar objetos da interface Set do Java para representar a interseção (ou intersecção) de dois ou mais conjuntosQuantidade de visualizações: 5049 vezes |
|
Na teoria dos conjuntos, a interseção (português brasileiro) ou intersecção (português europeu) de dois ou mais conjuntos é o conjunto dos elementos que, simultaneamente, pertencem a dois ou mais destes conjuntos. Assim, seja A = {2, 5, 8, 19, 30} e B = {2, 3, 1, 30}. A interseção desses dois conjuntos é C = {2, 30}. Na programação Java podemos representar a interseção de dois conjuntos usando objetos da interface Set e qualquer uma de suas implementações. Para este exemplo vou usar a classe TreeSet, que permite a ordenação dos elementos. Veja o código:
package estudos;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Estudos{
public static void main(String[] args) {
// primeiro conjunto
Set<Integer> conjuntoA = new TreeSet<>();
conjuntoA.add(2);
conjuntoA.add(5);
conjuntoA.add(8);
conjuntoA.add(19);
conjuntoA.add(30);
// segundo conjunto
Set<Integer> conjuntoB = new TreeSet<>();
conjuntoB.add(2);
conjuntoB.add(3);
conjuntoB.add(1);
conjuntoB.add(30);
// vamos obter a interseção dos dois conjuntos
Set<Integer> conjuntoC = intersecao(conjuntoA, conjuntoB);
// vamos exibir os elementos no conjunto C
Iterator iterator = conjuntoC.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
// método genérico que permite obter a interseção de dois conjuntos
public static <T> Set<T> intersecao(Set<T> conjA, Set<T> conjB){
Set<T> conjC = new TreeSet<>();
// percorremos todos os elementos do conjunto A
for(T elemento: conjA){
// e verificamos se o elemento está contido no conjunto B
if(conjB.contains(elemento)){
conjC.add(elemento); // se estiver contido nós o adicionamos no conjunto C
}
}
return conjC; // e retornamos o conjunto C
}
}
Ao executarmos este código teremos o seguinte resultado: 2 30 |
VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercício Resolvido de VisuAlg - Um programa que lê três números inteiros e mostra o maiorQuantidade de visualizações: 1646 vezes |
|
Pergunta/Tarefa: Faça um algoritmo VisuAlg que solicita três números inteiros e mostra o maior deles. Exiba uma mensagem caso os três números não forem diferentes. Sua saída deverá ser parecida com: Informe o primeiro número: 34 Informe o segundo número: 83 Informe o terceiro número: 72 O segundo número é o maior Veja a resolução comentada deste exercício usando VisuAlg:
Algoritmo "Um programa que lê três números inteiros e mostra o maior"
Var
// variáveis usadas na resolução do problema
num1, num2, num3: inteiro
Inicio
// vamos solicitar os três números inteiros
escreva("Informe o primeiro número: ")
leia(num1)
escreva("Informe o segundo número: ")
leia(num2)
escreva("Informe o terceiro número: ")
leia(num3)
// o primeiro número é o maior?
se (num1 > num2) e (num1 > num3) entao
escreva("O primeiro número é o maior")
senao
// o segundo número é o maior?
se (num2 > num1) e (num2 > num3) entao
escreva("O segundo número é o maior")
senao
// o terceiro número é o maior?
se (num3 > num1) e (num3 > num2) entao
escreva("O terceiro número é o maior")
senao
// os números não são diferentes
escreva("Os três números não são diferentes")
fimse
fimse
fimse
Fimalgoritmo
|
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como usar a propriedade PickList para definir ou obter a lista de escolhas para uma determinada coluna do TDBGrid do DelphiQuantidade de visualizações: 12191 vezes |
|
A propriedade PickList, do tipo TStrings, é usada quando queremos fornecer uma lista de itens da qual um poderá ser escolhido como conteúdo da célula pertencente a uma determinada coluna. Em tempo de design podemos definir os itens da lista clicando no DBGrid e escolhendo a opção Columns Editor. Em seguida escolha a coluna desejada e dê duplo-clique na propriedade PickList. Imediatamente o String List Editor será exibido. Neste editor podemos inserir os itens, cada um em sua linha. Em tempo de execução a lista de itens será exibida quando a célula estiver em edição. Note que, isso só acontecerá se o valor cbsAuto estiver definido para a propriedade ButtonStyle da coluna. Em tempo de execução podemos adicionar itens na propriedade PickList usando o seguinte trecho de código:
procedure TForm3.Button3Click(Sender: TObject);
begin
// vamos adicionar um novo item na PickList da primeira coluna
DBGrid1.Columns[0].PickList.Add('40');
end;
Veja agora um trecho de código no qual acessamos a propriedade PickList da coluna e exibimos seu conteúdo em um TMemo:
procedure TForm3.Button3Click(Sender: TObject);
var
i: Integer;
begin
// vamos adicionar o conteúdo da PickList da primeira coluna
// a um TMemo
for i := 0 to DBGrid1.Columns[0].PickList.Count - 1 do
begin
Memo1.Lines.Add(DBGrid1.Columns[0].PickList[i]);
end;
end;
Como a propriedade PickList da classe TColumn é do tipo TStrings, podemos efetuar várias operações na lista de itens, tais como, adicionar novos itens, excluir, ordenar os itens, etc. Esta dica foi escrita e testada no Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
|
Java - Estruturas de dados em Java - Como obter a quantidade de nós em uma árvore binária usando Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





