Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira |
||
|
||
|
|
||
AutoCAD .NET API C# ::: Dicas & Truques ::: Linha, Linhas, Comando LINE |
Como selecionar uma linha no AutoCAD e mostrar a equação da reta correspondente usando AutoCAD .NET C# APIQuantidade de visualizações: 726 vezes |
|
Em algumas situações nós queremos posicionar pontos ou outros desenhos em cima de uma linha, ou seja, em cima de uma reta. Uma das melhores formas de fazer isso é obtendo a equação reduzida da reta e usar as coordenadas x e y correspondentes. Nesta dica eu mostro como isso pode ser feito usando a AutoCAD .NET C# API. O primeiro passo é pedir para o usuário selecionar a linha na área de desenho do AutoCAD usando doc.Editor.GetEntity(). Em seguida nós obtemos as coordenadas iniciais e finais da linha usando as propriedades StartPoint e EndPoint do objeto AcadLine. Para finalizar nós calculamos a equação reduzida da reta e exibimos o resultado. Fique atento ao código que calcula o coeficiente angular e linear da reta. Considere o caso em que o coeficiente angular ou linear é igual a 0. Veja o código AutoCAD .NET API C# completo para o exemplo:
using System;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(PluginEstudos.Class1))]
namespace PluginEstudos {
public class Class1 {
[CommandMethod("estudos")]
public void Estudos() {
// vamos obter o documento atual
Document doc = Application.DocumentManager.MdiActiveDocument;
// vamos obter a base de dados
Database db = doc.Database;
// opções da seleção
PromptEntityOptions opcoes = new
PromptEntityOptions("\nSelecione uma linha: ");
// obtemos o resultado da seleção
PromptEntityResult resultado = doc.Editor.GetEntity(opcoes);
// a seleção foi feita com sucesso
if (resultado.Status != PromptStatus.OK) {
Application.ShowAlertDialog("Nenhum elemento selecionado.");
return;
}
// obtemos o id do objeto selecionado
ObjectId id_objeto = resultado.ObjectId;
// iniciamos uma transação
using (Transaction trans = db.TransactionManager.StartTransaction()) {
BlockTable tabela_blocos;
BlockTableRecord reg_tabela_blocos;
// obtemos a entidade selecionada
Entity ent = trans.GetObject(id_objeto, OpenMode.ForWrite) as Entity;
// a entidade selecionada é uma linha
if (ent is Line) {
Line linha = ent as Line;
// vamos obter o ponto inicial da linha
Point3d ponto_inicial = linha.StartPoint;
// vamos obter o ponto final da linha
Point3d ponto_final = linha.EndPoint;
string sinal = "+";
// vamos calcular o coeficiente angular da reta
Double m = (ponto_final.Y - ponto_inicial.Y) / (ponto_final.X - ponto_inicial.X);
// vamos calcular o coeficiente linear
double n = ponto_inicial.Y - (m * ponto_inicial.X);
// coeficiente linear menor que zero? O sinal será negativo
if (n < 0) {
sinal = "-";
n = n * -1;
}
// abre o model space para escrita
tabela_blocos = trans.GetObject(db.BlockTableId,
OpenMode.ForRead) as BlockTable;
reg_tabela_blocos = trans.GetObject(tabela_blocos[BlockTableRecord.ModelSpace],
OpenMode.ForWrite) as BlockTableRecord;
// vamos calcular as coordenadas x e y do ponto médio que
// será usado para posicionar o texto
double x = (ponto_inicial.X + ponto_final.X) / 2;
double y = (ponto_inicial.Y + ponto_final.Y) / 2;
// criamos um novo texto
DBText texto = new DBText();
texto.TextString = "y = " + m.ToString("0.00") + "x"
+ " " + sinal + " " + n.ToString("0.00");
texto.SetDatabaseDefaults();
texto.Height = 5;
texto.Position = new Point3d(x, y - texto.Height, 0);
// adicionamos o texto no desenho
reg_tabela_blocos.AppendEntity(texto);
trans.AddNewlyCreatedDBObject(texto, true);
}
else {
Application.ShowAlertDialog("Você não selecionou uma linha.");
}
// salvamos a transação
trans.Commit();
}
}
}
}
Ao executar este código AutoCAD .NET C# API e selecionar uma linha nós teremos um resultado parecido com: Selecione uma linha [Usuário seleciona a linha] [Mostra a equação reduzida da reta como um texto posicionado no ponto médio da linha] Como forma de testar ainda mais o código, defina um valor para o x e experimente plotar um ponto na área de desenho do AutoCAD. Você verá que o ponto cai exatamente em cima da linha, ou seja, da reta que a representa. |
Java ::: Classes e Componentes ::: JComponent |
Java Swing - Como usar a classe JComponent em suas aplicações Java SwingQuantidade de visualizações: 13115 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. |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se todos os elementos de um array satisfazem uma condição em JavaScript usando a função every()Quantidade de visualizações: 1716 vezes |
|
Em algumas situações nós gostaríamos de testar todos os elementos de um vetor e verificar se todos eles passam em um determinado teste. Para isso podemos usar a função every(), adicionada à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5). Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método every() é um valor true se todos os elementos passarem no teste e false em caso contrário. Veja um exemplo no qual testamos se TODOS os elementos de um vetor são maiores que 10:
<script type="text/javascript">
function testarTodos(valor, indice, vetor){
if(valor > 10){
return true;
}
}
var valores = new Array(21, 50, 30, 70, 12, 3);
// vamos verificar se TODOS os valores são
// maiores que 10
var res = valores.every(testarTodos);
window.alert("Todos passaram no teste: " + res);
</script>
Aqui o resultado será false, pois o valor 3 não passou no teste. É importante observar que, assim que a função de callback retorna false pela primeira vez, o método every() já abandona sua execução. Uma função passada para o método every() pode conter os seguintes argumentos (nessa mesma ordem): a) O valor do item; b) O índice do item (opcional); c) O vetor a partir do qual o método every() está sendo chamado (opcional). Como última observação, o método every() não modifica o array original. |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico |
Exercícios Resolvidos de Python - Como calcular o peso de uma pessoa na Lua usando PythonQuantidade de visualizações: 896 vezes |
|
Pergunta/Tarefa: Escreva um programa Python que leia o peso de uma pessoa na Terra e retorne o seu peso na Lua. Lembre-se da seguinte fórmula: \[\text{Peso na Lua} = \frac{\text{Peso na Terra}}{9,81} \times 1,622 \] Aqui nós estamos definindo a força da gravidade na Terra como 9,81 m/s2 e a força da gravidade na Lua como 1,622 m/s2. Se você quiser calcular o peso de uma pessoa em Marte, por exemplo, basta trocar a força da gravidade na Lua pela força da gravidade em Marte. Sua saída deverá ser parecida com: Peso na terra (kg): 70 O peso da pessoa na Lua é: 11.57 kg Veja a resolução comentada deste exercício usando Python:
# função principal do programa
def main():
# vamos ler o peso da pessoa na Terra
peso_terra = float(input("Peso na terra (kg): "))
# vamos calcular o peso da pessoa na Lua
peso_lua = (peso_terra / 9.81) * 1.622
# arredonda para duas casas decimais
peso_lua = round(peso_lua, 2)
# vamos mostrar o resultado
print("O peso da pessoa na Lua é: {0} kg".format(peso_lua))
if __name__== "__main__":
main()
|
Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Números Aleatórios, Números Randômicos, Amostras Aleatórias, Amostras Randômicas |
Como gerar números aleatórios em Python usando o método random.randint() da biblioteca NumPyQuantidade de visualizações: 2984 vezes |
|
Nesta dica mostrarei como podemos gerar números inteiros randômicos usando random.randint() da biblioteca NumPy. Note que a geração de números aleatórias é uma parte importante para o desenvolvimento de modelos de teste (test models) em Inteligência Artificial (IA), Machine Learning e outras áreas de estudo que envolvem Data Science. Veja um exemplo da forma mais simples do uso da função random.randint():
# importamos o módulo random da bibliteca NumPy
from numpy import random
def main():
# vamos gerar um número inteiro aleatório de 0 (incluído) à
# 10 (não incluído)
valor = random.randint(10)
print("O número sorteado foi: ", valor)
if __name__== "__main__":
main()
Ao executar este código teremos um resultado parecido com: O número sorteado foi: 3 Aqui nós informamos o limite alto do valor aleatório a ser gerado (mas ele não é incluído). Se quisermos limitar a faixa inferior, podemos tirar proveito dos parâmetros low e high da função randint(). Veja:
# importamos o módulo random da bibliteca NumPy
from numpy import random
def main():
# vamos gerar um número inteiro aleatório de 5 (incluído)
# à 10 (não incluído)
valor = random.randint(5, 10)
print("O número sorteado foi: ", valor)
if __name__== "__main__":
main()
A partir da versão 1.19 da NumPy, os desenvolvedores da biblioteca recomendam o uso do método integers() do módulo default_rng(). |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
|
Java - Como testar se uma determinada chave está contida no HashMap do Java usando o método containsKey() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





