![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
PHP ::: Dicas & Truques ::: Matemática e Estatística |
Como usar a função min() do PHP para obter o menor entre dois ou mais valoresQuantidade de visualizações: 7694 vezes |
A função min() do PHP é útil quando precisamos obter o menor entre dois ou mais valores. Veja um exemplo de seu uso:<? // vamos usar a função min() para obter o menor // entre três valores inteiros $menor = min(5, 12, 4); // vamos exibir o resultado echo "O menor valor é: " . $menor; ?> Quando executamos este exemplo temos o seguinte resultado: O menor valor é: 4 Veja que é possível também fornecer uma matriz para a função min(). Neste caso a função retornará o elemento com o menor valor na matriz. Veja: <? // vamos usar a função min() para obter o elemento // com menor valor em uma matriz // vamos criar uma matriz com cinco elementos $valores = array(9, 3, 21, 49, 2); // vamos obter o menor elemento $menor = min($valores); // vamos exibir o resultado echo "O menor valor é: " . $menor; ?> Ao executar este exemplo você terá o seguinte resultado: O menor valor é: 2 |
Python ::: Python para Engenharia ::: Engenharia Civil - Cálculo Estrutural |
Como calcular o peso que um pilar aguenta usando Python - Python para Engenharia CivilQuantidade de visualizações: 295 vezes |
![]() O sonho de todo estudante de Engenharia Civil é poder responder, com segurança, a uma das perguntas mais recorrentes no nosso dia-a-dia: Quanto de peso um pilar aguenta? Para responder, basta nos lembrarmos de que o concreto é muito resistente à compressão, e, no caso dos pilares, a armadura é usada, em sua maior parte, para combater a flambagem, que é quando o pilar tende a fletir para os lados, parecendo-se com um arco ou com uma barriga de chope. Então, uma vez que o pilar recebe sua carga em seu eixo (carga axial) e o concreto é muito resistente à compressão, só precisamos nos concentrar na resistência característica do concreto à compressão e na área da seção transversal do pilar. Sempre que falamos de resistência do concreto, nós estamos falando de FCK C15, C20, C25, C30, etc, que são os termos usados para designar sua resistência. Assim, um concreto C25 é o mesmo que 25 MPa, ou seja, esse concreto resiste a 250Kg/cm2. Os concretos usinados, em geral, vêm com resistência de 25 MPa para cima, enquanto aquele concreto que fazemos na obra, na betoneira, usando a combinação de 3x1, chega no máximo a 15 MPa. Além disso, é importante nos lembrarmos de que a norma NBR 6118/2014 exige que o concreto seja igual ou superior a 25 MPa. Há também o fator de segurança de 40%, também exigido pela norma NBR 6118/2014. Dessa forma, se o concreto for de 25 MPa, aplicado o fator de segurança, só podemos contar com 15 MPa mais ou menos, o que daria 150Kg/cm2. Vamos ver código agora? Veja o código Python completo que pede os lados b (base) e h (altura) do pilar e o FCK do concreto usado e retorna o peso que o pilar suporta (já aplicado o fator de segurança): # Algoritmo Python que calcula o peso suportado por um pilar # dados os seus lados e o FCK do concreto # função principal do programa def main(): # vamos ler o lado b do pilar base = float(input("Informe a base (b) do pilar em cm: ")) # vamos ler a altura h do pilar altura = float(input("Informe a altura (h) do pilar em cm: ")) # vamos calcular a área da seção transversal do pilar area = base * altura # agora vamos ler o FCK do concreto em MPa fck = float(input("Informe o FCK do concreto em MPa: ")) # vamos calcular o peso suportado pelo pilar peso_suportado = area * (fck * 10) # vamos aplicar o fator de segurança de 40% peso_suportado = peso_suportado / 1.4 # e mostramos o resultado print("A área da seção transversal é: {0} cm2".format(area)) print("Esse pilar suporta {0} kg".format(peso_suportado)) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe a base (b) do pilar em cm: 14 Informe a altura (h) do pilar em cm: 26 Informe o FCK do concreto em MPa: 20 A área da seção transversal é: 364.0 cm2 Esse pilar suporta 52000.0 kg Lembre-se de que a área mínima da seção de um pilar, de acordo com a NBR 6118/2014 é de 360 cm2. |
AutoLISP ::: Dicas & Truques ::: Passos Iniciais |
O que é AutoLISP e como escrever seu primeiro programa nessa linguagem de programaçãoQuantidade de visualizações: 1505 vezes |
O que é AutoLISP? Se você chegou até este artigo vindo de um mecanismo de busca, é bem provável que você já saiba o que é a AutoLISP e para que ela serve. No entanto, é sempre bom reforçar. A AutoLISP é um dialeto, ou seja, uma derivação, da linguagem de programação LISP. LISP vem de LISt Processing (Processamento de listas, vetores, matrizes, etc). Imagina-se que a LISP seja a linguagem de programação de alto nível mais antiga que se conhece, perdendo apenas para o FORTRAN. Embutida por padrão no AutoCAD, a LISP é a linguagem preferida para inteligência artificial em robótica. Para que serve a AutoLISP no AutoCAD? A AutoLISP, como mencionei acima, é linguagem de programação padrão do AutoCAD e já vem embutida nele, da mesma forma que a linguagem Python já vem embutida no FreeCAD. É claro que podemos manipular os objetos do AutoCAD usando VBA (Visual Basic for Applications), mas esta opção já não vem mais embutida por padrão na ferramenta. No AutoCAD, a AutoLISP é usada para automatizar tarefas e tornar menos tediosos os desenhos com detalhes muito repetitivos. Um programa AutoLISP nos permite, entre outras coisas, desenhar linhas, círculos, retângulos, polígonos, etc, selecionar objetos no GA (área de desenho do AutoCAD), solicitar entrada do usuário, exibir saída, ler e escrever em arquivos e muitas outras funcionalidades. Como escrever e executar um programa AutoLISP no AutoCAD Agora que já sabemos o que é a AutoLISP e seus objetivos, vamos escrever nosso primeiro programa. Abra o seu editor de código favorito (aqui eu usei o Notepad++) e digite a seguinte listagem: ; Este programa é usado para desenhar uma ; linha a partir de dois pontos indicados ; pelo usuário (defun desenharLinha() ; Vamos obter o primeiro ponto e guardar suas ; coordenadas na variável p (setq p (getpoint "Clique primeiro ponto na GA")) ; Vamos obter o segundo ponto e guardar suas ; coordenadas na variável q (setq q (getpoint "\nClique segundo ponto na GA")) ; Agora chamamos o comando LINE passando os ; dois pontos geométricos obtidos (command "LINE" p q "") ) Veja que, já no início do código, nós temos uma função chamada desenharLinha(). Dessa forma, salve o arquivo com o nome "desenharLinha.lsp" no diretório de sua preferência. Como carregar um programa AutoLISP no AutoCAD? Agora que já temos o arquivo .lsp pronto, vamos aprender como carregá-lo no AutoCAD. Para isso, vá até o menu Manage e escolha a opção Load Application. Selecione o arquivo desejado e clique o botão Load. Se tudo correu bem, você receberá uma mensagem "_appload desenharLinha.lsp successfully loaded". Agora já podemos usar nossa rotina para desenhar linhas no AutoCAD. Com a aba Model ativada, digite: (DESENHARLINHA) na janela de comandos do AutoCAD. Ao pressionar Enter você verá a mensagem "Clique primeiro ponto na GA". Lembrando que GA é a General Arrangement Drawing, ou seja, a área de desenho. Dessa forma, clique na área de desenho para que o código AutoLISP registre o primeiro ponto (coordenadas x, y, z). No mesmo momento uma mensagem "Clique segundo ponto na GA" será exibida. Clique na área de desenho para registrar o segundo ponto e pronto! Você verá uma linha ser desenhada entre os dois pontos geométricos que você informou. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Java - Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritméticaQuantidade de visualizações: 487 vezes |
Pergunta/Tarefa: Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritmética. Se a média for igual ou superior a 7,0 mostre uma mensagem indicando que o aluno foi aprovado. Se a média for igual ou maior que 3,5 e inferior a 7,0 seu programa deverá indicar que o aluno ficou de exame. Uma média menor que 3,5 indica reprovação direta. No caso do exame, leia uma nota entre 0 e 10. Agora a média do aluno deverá ser a média entre a média anterior e a nota do exame. Se a nova média for igual ou superior a 5,0 o aluno estará aprovado. Caso contrário o aluno será reprovado. Use validação para evitar que o usuário informe notas inválidas, ou seja, notas menores que 0 ou maiores que 10. Caso notas inválidas sejam fornecidas seu programa deverá solicitar a nota novamente até que o usuário forneça notas válidas. Sua saída deverá ser parecida com: Informe a nota N1: 9.4 Informe a nota N2: 11 Nota inválida. Informe a nota N2: 8.3 A média do aluno é: 8.85 O aluno foi aprovado Informe a nota N1: 4.2 Informe a nota N2: 1.8 A média do aluno é: 3.0 O aluno reprovou direto. Informe a nota N1: 5.7 Informe a nota N2: 6 A média do aluno é: 5.85 Informe a nota do exame: 7 A média do aluno com o exame é: 6.425 O aluno foi aprovado após o exame. Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // variáveis usadas na resolução do problema double n1, n2, media, exame; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos ler a primeira nota System.out.print("Informe a nota N1: "); n1 = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((n1 < 0) || (n1 > 10)) { System.out.print("Nota inválida. Informe a nota N1: "); n1 = Double.parseDouble(entrada.nextLine()); } // vamos ler a segunda nota System.out.print("Informe a nota N2: "); n2 = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((n2 < 0) || (n2 > 10)) { System.out.print("Nota inválida. Informe a nota N2: "); n2 = Double.parseDouble(entrada.nextLine()); } // vamos calcular a média do aluno media = (n1 + n2) / 2.0; System.out.println("A média do aluno é: " + media); // o aluno foi aprovado? if (media >= 7.0) { System.out.println("O aluno foi aprovado"); } // o aluno ficou de exame? else if ((media >= 3.5) && (media < 7.0)){ // vamos ler a nota do exame System.out.print("Informe a nota do exame: "); exame = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((exame < 0) || (exame > 10)) { System.out.print("Nota inválida. Informe a nota do exame: "); exame = Double.parseDouble(entrada.nextLine()); } // calcula a nota média media = (media + exame) / 2.0; System.out.println("A média do aluno com o exame é: " + media); // o aluno foi aprovado após o exame? if (media >= 5.0) { System.out.println("O aluno foi aprovado após o exame."); } else { System.out.println("O aluno foi reprovado após o exame."); } } // reprovou direto else { System.out.println("O aluno reprovou direto."); } } } |
C++ ::: Desafios e Lista de Exercícios Resolvidos ::: STL Vector C++ |
Exercícios Resolvidos de C++ - Escreva um programa C++ que retorna os elementos em um vector que são estritamente menores que seus vizinhos adjacentes da esquerda e da direitaQuantidade de visualizações: 236 vezes |
Pergunta/Tarefa: Escreva um programa C++ que retorna os elementos em um vector que são estritamente menores que seus vizinhos adjacentes da esquerda e da direita. Seu código deverá pedir para o usuário informar 10 valores inteiros, guardá-los em um vector e então calcular e exibir o resultado. Sua saída deverá ser parecida com: Informe o 1.o valor: 8 Informe o 2.o valor: 4 Informe o 3.o valor: 9 Informe o 4.o valor: 3 Informe o 5.o valor: 1 Informe o 6.o valor: 6 Informe o 7.o valor: 2 Informe o 8.o valor: 7 Informe o 9.o valor: 3 Informe o 10.o valor: 8 Conteúdo do vector: 8 4 9 3 1 6 2 7 3 8 Os elementos menores que seus vizinhos adjascentes são: 4 1 2 3 Veja a resolução comentada deste exercício usando C++: // vamos fazer os includes ncessários #include <algorithm> #include <iostream> #include <vector> using namespace std; // função para encontrar os elementos no vector que são menores // que seus vizinhos adjacentes vector<int> verificar(vector<int> valores) { // vamos inicializar um vector vazio para guardar os elementos // que passarem na condição vector<int> temp; // vamos percorrer o vector recebido como argumento for(int i = 1; i < valores.size() - 1; i++) { // o elemento atual é menor que o elemento anterior e posterior a ele? if(valores[i] < valores[i - 1] && valores[i] < valores[i + 1]) { // vamos adicionar no vector temporário temp.push_back(valores[i]); } } // retornamos o vector temporário return temp; } // função principal do programa int main(int argc, char *argv[]) { // vamos criar o vector que guardará os valores informados // pelo usuário vector<int> numeros; int valor; // vamos ler 10 números inteiros for (int i = 0; i < 10; i++) { cout << "Informe o " << (i + 1) << ".o valor: "; cin >> valor; numeros.push_back(valor); } // vamos mostrar o conteúdo do vector original cout << "\nConteúdo do vector: "; for (int n: numeros) { cout << n << " "; } // agora vamos testar os números que são menores que seus // vizinhos adjascentes vector<int> resultado = verificar(numeros); cout << "\n\nOs elementos menores que seus vizinhos adjascentes são:\n\n"; for (int n: resultado) { cout << n << " "; } cout << "\n\n"; return EXIT_SUCCESS; } |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o código ASCII ou Unicode associado a um caractere em JavaScript usando a função charCodeAt()Quantidade de visualizações: 479 vezes |
O método charCodeAt() é usado para obter o código ASCII ou Unicode de um caractere em uma determinada posição em uma string. Esta função está disponível no objeto String do JavaScript. Veja um página HTML completa demonstrando o seu uso: <!doctype html> <html> <head> <title>Strings em JavaScript</title> </head> <body> <script type="text/javascript"> var palavra = "Arquivo"; document.write("O código Unicode da letra \"A\" é " + palavra.charCodeAt(0)); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: O código ASCII ou Unicode da letra "A" é 65 |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um diretório em C++ usando a função rename()Quantidade de visualizações: 8419 vezes |
Em algumas situações nossos códigos C++ precisam renomear diretórios. Isso pode ser feito com o auxílio da função rename() ou _rename(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:int rename(const char *oldname, const char *newname); Se o diretório for renomeado com sucesso a função retornará o valor 0. O retorno será -1 se um erro ocorrer. Neste caso a variável global errno será definido como um dos seguintes valores: a) EINVAL - Invalid argument - Os nomes dos diretórios contém caracteres inválidos; b) ENOENT - No such file or directory - O caminho do diretório é inválido; c) EACCESS - Acesso negado - Algum outro programa está usando este diretório e mantém controle sobre o mesmo. Veja um trecho de código no qual renomeamos um diretório: #include <iostream> using namespace std; int main(int argc, char *argv[]){ // vamos renomear este diretório char dir_antigo[] = "C:\\Dev-Cpp\\estudos"; char dir_novo[] = "C:\\Dev-Cpp\\estudos2"; // vamos testar se o diretório for renomeado com sucesso if(rename(dir_antigo, dir_novo) != 0){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório renomeado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } É possível usar a versão Unicode de rename() ou _rename(). O método _wrename, também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo: #include <iostream> using namespace std; int main(int argc, char *argv[]){ // vamos renomear este diretório wchar_t dir_antigo[] = L"C:\\Dev-Cpp\\estudos"; wchar_t dir_novo[] = L"C:\\Dev-Cpp\\estudos2"; // vamos testar se o diretório for renomeado com sucesso if(_wrename(dir_antigo, dir_novo) != 0){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Diretório renomeado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Diretório renomeado com sucesso |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como obter o tamanho de um arquivo em PHP usando a função filesize()Quantidade de visualizações: 12857 vezes |
O tamanho de um arquivo pode ser obtido em PHP usando-se a função filesize(). Esta função recebe o caminho e nome do arquivo e retorna seu tamanho em bytes. Lembre-se de que um Kb contém 1024 bytes, caso você queira trabalhar com Kb em vez de bytes. Veja um exemplo de uso da função filesize(): <?php $arquivo = "testes.txt"; echo "O tamanho do arquivo é: " . filesize($arquivo) . " bytes"; ?> Ao executar este código PHP nós teremos o seguinte resultado: O tamanho do arquivo é: 940 bytes |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exercício Resolvido de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operaçõesQuantidade de visualizações: 6152 vezes |
Exercícios Resolvidos de Java - Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações Pergunta/Tarefa: Crie uma classe Agenda que pode armazenar 10 pessoas e que seja capaz de realizar as seguintes operações: void armazenaPessoa(String nome, int idade, float altura); void removePessoa(String nome); int buscaPessoa(String nome); // informa em que posição da agenda está a pessoa void imprimeAgenda(); // imprime os dados de todas as pessoas da agenda void imprimePessoa(int index); // imprime os dados da pessoa que está na posição "i" da agenda. O código deverá ser desenvolvido em Java console (modo texto) e usar um menu switch() para as operações. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: Código para a classe Pessoa (Pessoa.java): package arquivodecodigos; public class Pessoa { private String nome; private int idade; private double altura; // construtor cheio public Pessoa(String nome, int idade, double altura) { this.nome = nome; this.idade = idade; this.altura = altura; } // construtor vazio public Pessoa() { } // método que imprime todos os dados da pessoa public void imprimirDados(){ System.out.println("Nome: " + nome + "\nIdade: " + idade + "\nAltura: " + altura); } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } public double getAltura() { return altura; } public void setAltura(double altura) { this.altura = altura; } } Código para a classe Agenda (Agenda.java): package arquivodecodigos; public class Agenda { // vetor que guardará as pessoas private Pessoa pessoas[]; // construtor da classe Agenda public Agenda(int quantidade){ pessoas = new Pessoa[quantidade]; } public void armazenaPessoa(String nome, int idade, double altura){ // ainda temos posições disponíveis na agenda? boolean cadastrado = false; for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] == null){ // encontramos uma posição Pessoa p = new Pessoa(nome, idade, altura); // criamos uma nova pessoa // guardamos ela no vetor pessoas[i] = p; // e avisamos que o cadastro foi efetuado com sucesso cadastrado = true; break; // sai do laço } } if(cadastrado){ System.out.println("\nCadastro efetuado com sucesso"); } else{ System.out.println("\nNão foi possível cadastrar. Agenda cheia"); } } // método que permite pesquisar e excluir uma pessoa public void removePessoa(String nome){ // vamos verificar se a exclusão foi efetuada com sucesso boolean excluido = false; for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ // esta é a pessoa que estamos procurando? if(pessoas[i].getNome().equals(nome)){ pessoas[i] = null; // posição disponível novamente excluido = true; break; // sai do laço } } } if(excluido){ System.out.println("\nPessoa removida com sucesso"); } else{ System.out.println("\nNão foi possível remover. Pessoa não encontrada."); } } // informa em que posição da agenda está a pessoa public int buscaPessoa(String nome){ int resultado = -1; // vamos verificar se a pessoa existe na agenda for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ // esta é a pessoa que estamos procurando? if(pessoas[i].getNome().equals(nome)){ resultado = i; break; // sai do laço } } } return resultado; } // imprime os dados de todas as pessoas da agenda public void imprimeAgenda(){ // vamos percorrer o vetor de pessoas e imprimir cada uma for(int i = 0; i < pessoas.length; i++){ if(pessoas[i] != null){ Pessoa p = pessoas[i]; System.out.println("\nNome: " + p.getNome()); System.out.println("Idade: " + p.getIdade()); System.out.println("Altura: " + p.getAltura()); } } } // imprime os dados da pessoa que está na posição "i" da agenda public void imprimePessoa(int index){ // este índice é válido? if((index < 0) || (index > (pessoas.length - 1))){ System.out.println("\nÍndice inválido"); } else{ Pessoa p = pessoas[index]; if(p == null){ System.out.println("\nNão existe pessoa nesse índice ainda."); } else{ System.out.println("\nNome: " + p.getNome()); System.out.println("Idade: " + p.getIdade()); System.out.println("Altura: " + p.getAltura()); } } } } Código para a classe Principal (Principal.java): package arquivodecodigos; import java.util.Scanner; public class Principal { // para fazer a leitura da entrada do usuário static Scanner entrada = new Scanner(System.in); public static void main(String[] args) { // cria uma nova Agenda Agenda agenda = new Agenda(10); String nome; // nome da pessoa int idade; // idade da pessoa double altura; // altura da pessoa // cria o menu de opções while(true){ System.out.println("\n1. Nova Pessoa"); System.out.println("2. Excluir Pessoa"); System.out.println("3. Buscar Pessoa"); System.out.println("4. Imprimir Agenda"); System.out.println("5. Imprimir Pessoa (Índice)"); System.out.println("6. Sair"); System.out.print("Sua opção: "); int opcao = Integer.parseInt(entrada.nextLine()); switch(opcao){ case 1: System.out.print("\nInforme o nome: "); nome = entrada.nextLine(); System.out.print("Informe a idade: "); idade = Integer.parseInt(entrada.nextLine()); System.out.print("Informe a altura (use ponto em vez de vírgula): "); altura = Double.parseDouble(entrada.nextLine()); agenda.armazenaPessoa(nome, idade, altura); break; case 2: System.out.print("\nInforme o nome a ser removido: "); nome = entrada.nextLine(); agenda.removePessoa(nome); break; case 3: System.out.print("\nInforme o nome a ser pesquisado: "); nome = entrada.nextLine(); int indice = agenda.buscaPessoa(nome); if(indice < 0){ System.out.println("\nA pessoa não foi encontrada"); } else{ System.out.println("\nA pessoa foi encontrada no índice: " + indice); } break; case 4: agenda.imprimeAgenda(); break; case 5: System.out.print("\nInforme o índice desejado: "); int index = Integer.parseInt(entrada.nextLine()); agenda.imprimePessoa(index); break; case 6: System.exit(0); default: System.out.println("\nOpção inválida\n"); break; } } } } |
AutoCAD .NET API C# ::: Dicas & Truques ::: Polyline - Polilinha |
Como selecionar uma polilinha no AutoCAD e mostrar as coordenadas de suas vértices usando a AutoCAD .NET C# APIQuantidade de visualizações: 504 vezes |
Em várias situações nós precisamos efetuar cálculos usando os vértices de uma polilinha. Nesta dica eu mostro como podemos pedir para o usuário selecionar uma polilinha na área de desenho do AutoCAD e mostrar as coordenadas x e y de cada um dos vértices. No código abaixo eu trato duas formas de polilinhas no AutoCAD: a polilinha 2D Polyline e a polilinha 3D, representada pelo objeto Polyline3d. Note que as formas de se extrair os vértices desses dois objetos são completamente diferentes. Se a polilinha for 2D, seus vértices são extraído usando-se a função GetPoint2dAt(), que retorna um objeto Point2d. Se a polilinha for 3D, ela será representada por um objeto da classe Polyline3d, e seus vértices são retornados como objetos PolylineVertex3d a partir de uma chamada à função GetObject() da classe Transaction. Veja o código AutoCAD .NET C# API 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; // vamos pedir para o usuário selecionar uma polilinha PromptEntityResult resultado = doc.Editor.GetEntity( "Selecione uma polilinha: "); // a seleção foi feita com sucesso if (resultado.Status != PromptStatus.OK) { Application.ShowAlertDialog("Nenhum elemento selecionado."); return; } // iniciamos uma transação using (Transaction trans = db.TransactionManager.StartTransaction()) { // obtemos a polilinha selecionada DBObject objeto = trans.GetObject(resultado.ObjectId, OpenMode.ForRead); // vamos testar se a polilinha é do tipo leve ou otimizada Polyline polilinha2d = objeto as Polyline; if (polilinha2d != null) { // vamos percorrer todos os vértices, um de cada vez int numero_vertices = polilinha2d.NumberOfVertices; for (int i = 0; i < numero_vertices; i++) { // vamos obter um objeto Point2d ou Point3d Point2d ponto = polilinha2d.GetPoint2dAt(i); // e escrevemos na janela de comandos doc.Editor.WriteMessage("\nX = " + ponto.X.ToString("0.00") + "; Y = " + ponto.Y.ToString("0.00")); } } // é uma polilinha do tipo pesada, ou heavy else { Polyline3d polilinha3d = objeto as Polyline3d; if (polilinha3d != null) { // percorremos cada um dos vértices foreach (ObjectId id_vertice in polilinha3d) { PolylineVertex3d vertice3d = (PolylineVertex3d)trans.GetObject( id_vertice, OpenMode.ForRead); // e escrevemos na janela de comandos doc.Editor.WriteMessage("\nX = " + vertice3d.Position.X.ToString("0.00") + "; Y = " + vertice3d.Position.Y.ToString("0.00")); } } } // fechamos a transação trans.Commit(); } } } } Ao executar este código AutoCAD .NET C# API nós teremos o seguinte resultado: Command: Selecione uma polilinha: X = 168.91; Y = 159.91 X = 415.17; Y = 126.24 X = 317.08; Y = 24.18 X = 80.53; Y = 104.29 |
Você também poderá gostar das dicas e truques de programação abaixo |
C# - Como adicionar ou subtrair meses de uma data em C# usando o método AddMonths() da estrutura DateTime Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo JavaScript - Como usar a propriedade parentNode para obter o objeto pai de um elemento na hierarquia do DOM do JavaScript |
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 |