Você está aqui: Cards de Hidrostática |
||
|
||
|
|
||
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: 810 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. |
LISP ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como declarar variáveis globais em Lisp usando as funções defvar e defparameterQuantidade de visualizações: 1352 vezes |
|
Em algumas situações nós precisamos declarar variáveis globais em Lisp, ou melhor, em Common Lisp, que é a padronização da Lisp que adotamos para estas dicas. Variáveis globais em Common Lisp se comportam de forma idêntica àquelas de outras linguagens de programação, ou seja, possuem valores permanentes por todo o sistema Lisp e mantém seus valores até que novos valores são especificados. Se quisermos, por exemplo, a partir do corpo de uma função acessar uma variável fora dela, então esta variável deverá ser declarada globalmente. Em Common List nós podemos declarar variáveis globais usando as funções defvar e defparameter. Vamos ver exemplos envolvendo as duas e no final desta dica eu mostro a diferença. Veja um trecho de código Common Lisp na qual declaramos uma variável global chamada valor e a acessamos de dentro de uma função: ; vamos declarar uma variável global (defvar valor 10) ; vamos mostrar o valor atual da variável global (format t "O valor da variável global é ~D" valor) ; agora vamos acessar a variável global ; de dentro de uma função (defun ModificaValor() ; vamos alterar o valor da variável global (setq valor 50) ) ; chamamos a função ModificaValor (ModificaValor) ; e checamos se o valor da variável global foi ; mesmo alterado (terpri) (format t "O valor da variável global é ~D" valor) Ao executar este código Common List nós teremos o seguinte resultado: O valor da variável global é 10 O valor da variável global é 50 Veja agora um trecho de código Common Lisp no qual usamos a função defparameter para declarar e inicializar as variáveis globais: ; vamos declarar três variáveis globais (defparameter *a* 5) (defparameter *b* 3) (defparameter *soma* 0) ; agora vamos acessar as variáveis globais ; de dentro de uma função (defun Somar() ; vamos somar as duas variáveis globais ; e guardar o resultado em uma terceira ; variáveis global (setq *soma* (+ *a* *b*)) ) ; chamamos a função Somar (Somar) ; e mostramos o resultado da soma (format t "A soma das variáveis globais é ~D" *soma*) Ao executar este novo código Common Lisp nós teremos o seguinte resultado: A soma das variáveis globais é 8 Note que coloquei asteríscos (*) ao redor dos nomes das variáveis globais. Esta é uma prática comum entre programadores Lisp e altamente recomendado pelo comunidade, pois facilita a distinção entre variáveis globais e locais. Então, qual é a diferença entre defvar e defparameter? A primeira delas é que a função defparameter nos obriga a informar o valor inicial para a variável global, enquanto a função defvar não o faz. A segunda diferença é que, ao redefinirmos o valor de uma variável global usando defparameter, o valor armazenado anteriormente será sobreposto, enquanto a função defvar não altera o valor anterior. |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como remover os espaços no final de uma string em JavaScript usando uma função trim_final() personalizadaQuantidade de visualizações: 2 vezes |
|
Há muitos anos eu precisava remover espaços no final de uma string em JavaScript e percebi que o objeto String, na época, não oferecia a função trim(). Não me restou opção a não ser sentar e escrever o código na mão mesmo. Hoje em dia não precisamos mais dele, mas fica aí para que você entenda a lógica empregada na resolução do problema. Veja a página HTML completa com o exemplo:
<!doctype html>
<html>
<head>
<title>Strings em JavaScript</title>
</head>
<body>
<script type="text/javascript">
// função personalizada que remove os espaços
// no final de uma string
function trim_final(string){
// primeiro definimos o código do espaço
var espaco = String.fromCharCode(32);
// obtemos o tamanho da string
var tamanho = string.length;
// e criamos uma string temporária
var temp = "";
// a string está vazia?
if(tamanho < 0){
return "";
}
// uma variável temporária para percorrermos
// a string de trás para frente
var temp2 = tamanho - 1;
while(temp2 > -1){
if(string.charAt(temp2) == espaco){
// não faz nada
}
else{
temp = string.substring(0, temp2 + 1);
break;
}
// decrementamos a variável temp2
temp2--;
}
return temp;
}
// vamos testar a função trim_final()
var frase = "Gosto muito de JavaScript ";
document.write("Com espaços no final: " +
frase + "#" + "<br>");
// vamos remover os espaços no final da string
frase = trim_final(frase);
document.write("Sem espaços no final: " +
frase + "#" + "<br>");
</script>
</body>
</html>
Ao executar este código JavaScript nós teremos o seguinte resultado: Com espaços no final: Gosto muito de JavaScript # Sem espaços no final: Gosto muito de JavaScript# |
VB.NET ::: VB.NET para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular vetor unitário em VB.NET - VB.NET para Física e EngenhariaQuantidade de visualizações: 763 vezes |
|
Um vetor unitário ou versor num espaço vetorial normado é um vetor (mais comumente um vetor espacial) cujo comprimento ou magnitude é 1. Em geral um vetor unitário é representado por um "circunflexo", assim: __$\hat{i}__$. O vetor normalizado __$\hat{u}__$ de um vetor não zero __$\vec{u}__$ é o vetor unitário codirecional com __$\vec{u}__$. O termo vetor normalizado é algumas vezes utilizado simplesmente como sinônimo para vetor unitário. Dessa forma, o vetor unitário de um vetor __$\vec{u}__$ possui a mesma direção e sentido, mas magnitude 1. Por magnitude entendemos o módulo, a norma ou comprimento do vetor. Então, vejamos a fórmula para a obtenção do vetor unitário: \[\hat{u} = \dfrac{\vec{v}}{\left|\vec{v}\right|}\] Note que nós temos que dividir as componentes do vetor pelo seu módulo de forma a obter o seu vetor unitário. Por essa razão o vetor nulo não possui vetor unitário, pois o seu módulo é zero, e, como sabemos, uma divisão por zero não é possível. Veja agora o código VB.NET que pede as coordenadas x e y de um vetor 2D ou R2 e retorna o seu vetor unitário:
Imports System
Module Program
Sub Main(args As String())
' vamos ler os valores x e y
Console.Write("Informe o valor de x: ")
Dim x = Double.Parse(Console.ReadLine())
Console.Write("Informe o valor de y: ")
Dim y = Double.Parse(Console.ReadLine())
' o primeiro passo é calcular a norma do vetor
Dim norma = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2))
' agora obtemos as componentes x e y do vetor unitário
Dim u_x = x / norma
Dim u_y = y / norma
' mostra o resultado
Console.WriteLine("O vetor unitário é: (x = " &
u_x & "; y = " & u_y)
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executar este código VB.NET nós teremos o seguinte resultado: Informe o valor de x: -4 Informe o valor de y: 6 O vetor unitário é: (x = -0.5547001962252291; y = 0.8320502943378437 Veja agora uma modificação deste código para retornarmos o vetor unitário de um vetor 3D ou R3, ou seja, um vetor no espaço:
Imports System
Module Program
Sub Main(args As String())
' vamos ler os valores x, y e z
Console.Write("Informe o valor de x: ")
Dim x = Double.Parse(Console.ReadLine())
Console.Write("Informe o valor de y: ")
Dim y = Double.Parse(Console.ReadLine())
Console.Write("Informe o valor de z: ")
Dim z = Double.Parse(Console.ReadLine())
' o primeiro passo é calcular a norma do vetor
Dim norma = Math.Sqrt(Math.Pow(x, 2) + Math.Pow(y, 2) +
Math.Pow(z, 2))
' agora obtemos as componentes x, y e z do vetor unitário
Dim u_x = x / norma
Dim u_y = y / norma
Dim u_z = z / norma
' mostra o resultado
Console.WriteLine("O vetor unitário é: (x = " &
u_x & "; y = " & u_y & "; z = " & u_z)
Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
' pausa o programa
Console.ReadKey()
End Sub
End Module
Ao executarmos este novo código nós teremos o seguinte resultado: Informe o valor de x: 3 Informe o valor de y: 7 Informe o valor de z: 5 O vetor unitário é: (x = 0.329292779969071; y = 0.7683498199278324; z = 0.5488212999484517 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Declarar e construir um vetor de inteiros e usar um laço for para inicializar seus elementos com os valores de 1 até 10 em JavaQuantidade de visualizações: 17805 vezes |
|
Pergunta/Tarefa: Escreva um programa Java que declara e constrói um array de 10 elementos do tipo int. Em seguida use um laço for para inicializar os elementos com os valores de 1 até 10. Para finalizar exiba os valores dos elementos do vetor na vertical. Seu programa deverá exibir a seguinte saída: 1 2 3 4 5 6 7 8 9 10 A resolução desta tarefa passa pela declaração e construção do array. Aqui eu demonstro como isso pode ser feito em dois passos. Primeiro a declaração e depois a construção: // vamos declarar um vetor de 10 ints int valores[]; // vamos construir o vetor...neste momento seus elementos // terão, todos, o valor 0 valores = new int[10]; Veja a resolução completa do exercício:
public static void main(String[] args){
// vamos declarar um array de 10 ints
int valores[];
// vamos construir o array...neste momento seus elementos
// terão, todos, o valor 0
valores = new int[10];
// vamos usar o laço for para inicializar seus elementos
// com os valores de 1 até 10
for(int i = 0; i < valores.length; i++){
// aqui nós usamos o valor da variável i para acessar o
// elemento do array e também para atribuir o valor de i + 1
// ao elemento sendo acessado
valores[i] = (i + 1);
}
// só nos resta exibir os valores de todos os elementos
for(int i = 0; i < valores.length; i++){
System.out.println(valores[i]);
}
}
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




