Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Polyline - Polilinha

Como criar polylines no AutoCAD usando a AutoCAD C# .NET API, a classe Polyline e a função AddVertexAt()

Quantidade de visualizações: 197 vezes
Em algumas situações nós gostaríamos de criar polylines no AutoCAD a partir de um arquivo texto ou um arquivo do Excel. Para isso nós podemos usar o construtor Polyline e a função AddVertexAt() da AutoCAD C# .NET API.

A polyline é criada a partir de um objeto da classe Polyline e os seus vértices são criados usando-se chamadas à função AddVertexAt().

Veja o código AutoCAD C# .NET API completo para o exemplo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using System.Collections.Generic;
using System;
using Autodesk.AutoCAD.Geometry;

[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 criar um tipo função para validar os objetos que
      // queremos listar
      Func<Type, RXClass> getClass = RXObject.GetClass;
      // um set dos tipos aceitáveis
      var tipos_aceitaveis = new HashSet<RXClass>{
        getClass(typeof(Line))
      };

      // iniciamos uma transação
      using (Transaction trans = db.TransactionManager.StartTransaction()) {
        // vamos abrir a tabela de blocos para leitura
        BlockTable tabela_blocos = trans.GetObject(db.BlockTableId,
          OpenMode.ForRead) as BlockTable;

        // agora abrimos o registro da tabela de blocos do model space
        // para escrita
        BlockTableRecord reg_tabela_blocos = trans.GetObject(
          tabela_blocos[BlockTableRecord.ModelSpace],
          OpenMode.ForWrite) as BlockTableRecord;

        // vamos criar uma polyline com dois segmentos, ou seja,
        // três pontos
        Polyline polilinha = new Polyline();
        // vamos adicionar os vértices
        polilinha.AddVertexAt(0, new Point2d(2, 4), 0, 0, 0);
        polilinha.AddVertexAt(1, new Point2d(4, 2), 0, 0, 0);
        polilinha.AddVertexAt(2, new Point2d(6, 4), 0, 0, 0);

        // adicionamos o novo objeto no registro da tabela de
        // blocos e na transação
        reg_tabela_blocos.AppendEntity(polilinha);
        trans.AddNewlyCreatedDBObject(polilinha, true);

        // e mostramos o resultado
        doc.Editor.WriteMessage("\nA polilinha foi criada com o ID: " +
          polilinha.Id + "\n");

        // fechamos a transação
        trans.Commit();
      }
    }
  }
}

Ao executar este código AutoCAD C# .NET nós teremos o seguinte resultado:

A polilinha foi criada com o ID: (1407715560928)

Link para compartilhar na Internet ou com seus amigos:

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# API

Quantidade de visualizações: 308 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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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.


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# API

Quantidade de visualizações: 289 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:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

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


Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira

Estrutura e propriedade dos materiais

A compreensão de muitas propriedades físicas dos materiais baseia-se no entendimento das forças existentes entre as moléculas.

Em relação às ligações atômicas, assinale a alternativa correta.

A) Cada ligação tem por objetivo fazer com que os átomos adquiram ligações metálicas.

B) As ligações não costumam ocorrer concomitantemente em um mesmo material.

C) Há três tipos de ligações diferentes: iônica, covalente e a força de Van der Waals.

D) As ligações atômicas em alguns materiais podem ser puramente iônicas ou covalentes.

E) A ligação metálica se dá por meio de uma aproximação muito intensa dos elementos.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

Cálculo da vazão de dimensionamento de uma galeria de águas pluviais

FEMPERJ-2012-TCE-RJ: A vazão de dimensionamento de uma galeria de águas pluviais que drena uma área densamente urbanizada de 10 hectares, considerando-se uma chuva de projeto com intensidade de 60 mm/hora, duração igual ao tempo de concentração da bacia e coeficiente de escoamento superficial igual a 0,90, através do Método Racional, é:

A) 150 m3/s

B) 0,150 l/s

C) 1,5 m3/s

D) 150 l/s

E) 15 m3/s
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

Os ecossistemas de água doce podem ser classificados em lênticos e lóticos. É correto afirmar que

A) ecossistemas lênticos são ambientes aquáticos de água corrente como rios e riachos.

B) ecossistemas lóticos são ambientes aquáticos de água parada como lagos e lagoas.

C) em lagos e lagoas, termoclina é a zona de transição entre a camada superficial e a camada profunda, sendo uma camada fina de rápida variação de temperatura.

D) um reservatório pode apresentar compartimentos com características semelhantes a rios, e outro semelhantes ao ambiente de lagos, sendo que quanto maior o tempo de residência do reservatório, maior a tendência do reservatório de se comportar como rio.

E) a solubilidade do oxigênio na água está associada à temperatura e à pressão. Com a diminuição da temperatura e o aumento da pressão, ocorre redução da solubilidade do oxigênio na água.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

O código de ética profissional: Concorrência

As empresas, como instituições jurídicas, também têm importante papel junto à sociedade. O cumprimento desse papel social ocorre quando a organização, sendo uma atividade econômica devidamente regulamentada e organizada, ___________________.

Marque a alternativa que completa a frase corretamente.

A) gera empregos, distribui renda, efetua o recolhimento dos tributos conforme os resultados obtidos.

B) terceiriza suas atividades, distribui renda, efetua o recolhimento dos tributos conforme a exigência legal.

C) gera empregos, distribui renda, efetua o recolhimento dos tributos conforme a exigência legal.

D) gera empregos, distribui igualitariamente a renda, efetua o recolhimento dos tributos conforme a exigência legal.

E) garante o emprego para a mão de obra desqualificada, distribui renda, efetua o recolhimento dos tributos conforme a exigência legal.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Responsabilidade civil dos prepostos e preponentes

Com relação as definições do preposto, assinale a alternativa correta.

A) O preposto pode negociar por conta própria ou de terceiro, e participar indiretamente de operação idêntica a que lhe foi cometida.

B) O preposto não pode, sem autorização escrita, fazer-se substituir no desempenho da preposição, sob pena de responder pessoalmente pelos atos do substituto e pelas obrigações por ele contraídas.

C) Considera-se inválida a entrega de papéis, bens ou valores ao preposto, encarregado pelo preponente, se este os recebeu sem protesto.

D) As limitações contidas na outorga de poderes podem ser opostas a terceiros, dependem do arquivamento e averbação do instrumento no Registro Público de Empresas Mercantis.

E) No exercício de suas funções, os prepostos são pessoalmente responsáveis, perante terceiros, pelos atos culposos e atos dolosos.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de AutoCAD .NET API C#

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

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



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