Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: AutoCAD .NET API C# ::: Dicas & Truques ::: Input e Output (Entrada e Saída)

Como ler a entrada do usuário no AutoCAD como uma string usando a função GetString() da AutoCAD .NET API

Quantidade de visualizações: 209 vezes
Em várias situações nós precisamos pedir para o usuário informar valores do tipo string, ou seja, uma palavra, frase ou texto. Para isso nós podemos usar a função GetString() do objeto Editor da classe Document.

A forma como os dados inseridos pelo usuário serão controlados é feita por meio de um objeto PromptStringOptions. Se a propriedade AllowSpaces desse objeto for definida como true, os espaços são permitidos, caso contrário, a entrada do usuário é interrompida ao pressionar a barra de espaços.

Nesta dica mostrarei como podemos usar a função GetString() da AutoCAD .NET API para pedir ao usuário que informe o nome do projeto e então vamos usar a string informada para escrever o nome do projeto na área de desenho.

O primeiro passo é obter uma referência ao documento atual do AutoCAD usando Application.DocumentManager.MdiActiveDocument. Em seguida nós obtemos uma referência à base de dados do AutoCAD usando doc.Database. O passo seguinte é definir as opções de entrada do usuário usando um objeto PromptStringOptions. Note o valor true para a propriedade AllowSpaces.

Em seguida fazemos a leitura do usuário usando doc.Editor.GetString e guardamos o resultado como um objeto PromptResult. Para verificar se o usuário não pressionou ESC ou outra forma de saída do comando, nós testamos o status do resultado com PromptStatus.Cancel.

Para finalizar nós criamos uma nova transação db.TransactionManager.StartTransaction(), criamos um novo texto DBText, passamos o texto informado pelo usuário para a sua propriedade TextString, desenhamos o texto e fechamos a transação.

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;

      // criamos as opções de leitura da entrada do usuário
      PromptStringOptions opcoes = new PromptStringOptions("\nNome do Projeto: ");
      // vamos permitir espaços
      opcoes.AllowSpaces = true;
      // agora pedimos para o usuário digitar a entrada
      PromptResult resultado = doc.Editor.GetString(opcoes);

      // se o usuário pressionar ESC ou cancelar o comando
      if (resultado.Status == PromptStatus.Cancel) {
        return;
      }

      // iniciamos uma nova transação
      using (Transaction trans = db.TransactionManager.StartTransaction()) {
        BlockTable tabela_blocos;
        BlockTableRecord reg_tabela_blocos;

        // 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;

        // criamos um novo texto
        DBText texto = new DBText();
        texto.TextString = resultado.StringResult;
        texto.SetDatabaseDefaults();
        texto.Height = 20;
        texto.Position = new Point3d(10, 40, 0);
        // adicionamos o texto no desenho
        reg_tabela_blocos.AppendEntity(texto);
        trans.AddNewlyCreatedDBObject(texto, true);
        
        // fechamos a transação
        trans.Commit();
      }
    }
  }
}

Ao executar o código deste plug-in AutoCAD .NET API C#, informe o nome de um projeto na janela de comandos do AutoCAD e automaticamente você verá o nome informado ser desenhado na área de desenho.

Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Fundações

Fundações diretas: tipos, características, métodos construtivos e cálculo das tensões no solo

Um engenheiro verificou um problema de projeto na planta em uma edificação de grande porte: os pilares estavam muito próximos entre si. Desta forma, ele precisaria indicar ao mestre de obra um tipo de fundação mais apropriado, para não acarretar um problema estrutural devido à aproximidade dos pilares. A partir desta informação, assinale a alternativa correta:

A) Radier.

B) Sapata associada.

C) Bloco.

D) Sapata de divisa.

E) Sapata corrida.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais

Instalações prediais de águas pluviais

Os cálculos para a vazão de entrada, por vezes, podem ser simplificados. A NBR 10844 permite simplificações para pequenas áreas que agilizam o trabalho e possibilitam a não utilização de curvas IDF. Tendo isso em mente, considere que uma casa tem projeção em planta de 90m2 e um telhado com duas águas com largura de 6m, comprimento de 10m e altura de 1,20m. Qual será a vazão utilizada para o cálculo da calha?

A) 165L/min.

B) 125L/min.

C) 150L/min.

D) 190L/min.

E) 145L/min.
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

Em relação à concorrência perfeita, podemos dizer que se trata da competição pura. Essa estrutura sugere o funcionamento ideal ou equilibrado do mercado. A concorrência perfeita apresenta quatro características que a tornam o modelo econômico mais adequado. Assinale a alternativa que contém essas características.

A) Baixo número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade.

B) Elevado número de compradores e vendedores; produtos heterogêneos; informações disponíveis; mobilidade.

C) Elevado número de compradores e vendedores; produtos homogêneos; informações confidenciais; mobilidade.

D) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; mobilidade.

E) Elevado número de compradores e vendedores; produtos homogêneos; informações disponíveis; fixidez.
Verificar Resposta Estudar Cards Todas as Questões

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

Introdução à Ética

Entre os estudos proeminentes sobre a definição da ética, da moral, sua presença e importância entre os seres humanos racionalmente organizados em sistemas sociais, as sociedades, estão as análises e reflexões dos filósofos da Grécia Antiga. Embora cada um, entre expoentes como Platão, Aristóteles e Sócrates, tivesse uma proposta de interpretação para a moral e para a ética, é possível dizer que há uma percepção comum: a de que a "A ética é a morada do homem".

O que isso significa?

A) A moradia física para o grego era a base da sociedade, em torno da qual circundavam os demais significados socialmente apreendidos, então, ser ético era ser bom.

B) Morada é um recanto simples onde o homem pode viver com honestidade, e ser uma pessoa ética é ser honesto.

C) O sentido de morada era conceito existencial, confiado ao cidadão que, vivendo conforme normas e leis existentes, teria a segurança de uma vida ética.

D) Assim como o mito da caverna, a lenda da morada também é falsa e se destina à formação de exemplos aos estudantes de filosofia da atualidade.

E) Aristóteles escreveu essa máxima pensando em todos os habitantes da Grécia, que exibiam a igualdade de comportamento, pensamento e opinião política.
Verificar Resposta Estudar Cards Todas as Questões

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

Responsabilidade civil no código de defesa do consumidor

Um consumidor compra um ferro de passar roupa e quando está manejando o ferro pela primeira vez ele explode e o atinge, causando-lhe danos morais e estéticos. O consumidor é levado ao hospital para tratar alguns ferimentos. Nesse caso, a ação indenizatória deverá ser proposta em face do fabricante no prazo de:

A) prazo decadencial de 5 anos.

B) prazo prescricional de 30 dias.

C) prazo decadencial de 90 dias.

D) prazo prescricional de 5 anos.

E) prazo prescricional de 90 dias.
Verificar Resposta Estudar Cards Todas as Questões

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: 292 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: 283 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


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á 68 usuários muito felizes estudando em nosso site.