Você está aqui: AutoCAD Civil 3D .NET C# ::: Dicas & Truques ::: Alinhamento - Alignment

Como pesquisar um alinhamento por nome no AutoCAD Civil 3D usando C# e uma função personalizada GetAlignmentByName()

Quantidade de visualizações: 372 vezes
Em algumas situações nós precisamos, via código C#, pesquisar e retornar um alinhamento no Civil 3D por nome, ou seja, sem precisar informar de antemão o seu id. Nesta dica eu mostro como isso pode ser feito.

Criei uma função personalizada chamada GetAlignmentByName() que recebe um objeto CivilDocument, representando o documento atual do AutoCAD Civil 3D e uma string, contendo o nome do alinhamento que queremos pesquisar. Para este exemplo eu usei o alinhamento "EIXO DA RODOVIA".

O primeiro passo é obter uma lista completa de todos os ids dos alinhamentos do documento usando a função GetAlignmentIds() do objeto CivilDocument. Esta função retorna um objeto ObjectIdCollection.

Em seguida usamos um laço foreach para percorrer cada um dos ids dos alinhamentos e acessar o alinhamento desejado usando GetObject(OpenMode.ForRead). Esta função é chamada em um objeto ObjectId.

Para finalizar nós testamos se o nome do alinhamento retornado por GetObject(OpenMode.ForRead) confere com o valor da string que fornecemos à função GetAlignmentByName(). O retorno desta função é um objeto da classe Alignment.

Veja o código AutoCAD Civil 3D .NET 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.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);

          // e mostramos o resultado
          if (alinhamento == null) {
            editor.WriteMessage("\nO alinhamento não foi encontrado.");
          }
          else {
            editor.WriteMessage("\nO id do alinhamento pesquisado é: " +
              alinhamento.Id);
          }
        }
        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 id do alinhamento pesquisado é: (2325905372352)

Link para compartilhar na Internet ou com seus amigos:

Java ::: Coleções (Collections) ::: ArrayList

Como rotacionar os elementos de uma ArrayList do Java para frente ou para trás usando o método rotate()

Quantidade de visualizações: 10711 vezes
Nesta dica mostrarei como podemos usar o método rotate() da classe Collections da linguagem Java para rotacionar os elementos de uma ArrayList. Veja sua assinatura:

void rotate(List<?> list, int distance)


Este método faz com que um elemento na posição i seja movido para a posição (distance + i) % list.size().

Se você quiser inverter a ordem da rotação, forneça um valor negativo para o argumento distance.

Veja o código completo para o exemplo:

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

package estudos;

import java.util.ArrayList;
import java.util.Collections;

public class Estudos{
  public static void main(String[] args){
    // cria uma ArrayList que conterá strings
    ArrayList<String> nomes = new ArrayList<String>();
    
    // adiciona itens na lista
    nomes.add("Carlos");
    nomes.add("Maria");
    nomes.add("Fernanda");
    nomes.add("Osmar");    
	
    // exibe os elementos da ArrayList
    System.out.println("Antes da rotação:\n");
    for(int i = 0; i < nomes.size(); i++)
      System.out.println(nomes.get(i));    
 
    // Vamos rotacionar os elementos uma posição
    Collections.rotate(nomes, 1); 

    // exibe os elementos da ArrayList
    System.out.println("\nDepois da rotação:\n");
    for(int i = 0; i < nomes.size(); i++)
      System.out.println(nomes.get(i));

    System.exit(0);
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Antes da rotação:

Carlos
Maria
Fernanda
Osmar

Depois da rotação:

Osmar
Carlos
Maria
Fernanda


Delphi ::: VCL - Visual Component Library ::: TEdit

Como definir o conteúdo de um TEdit do Delphi em tempo de execução usando a função SendMessage() da API do Windows e a mensagem WM_SETTEXT

Quantidade de visualizações: 10969 vezes
Embora o Delphi já nos forneça as ferramentas necessárias para definir o conteúdo de um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função SendMessage() em combinação com a mensagem WM_SETTEXT.

A função SendMessage() da API do Windows possui a seguinte assinatura em C/C++:

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

LRESULT SendMessage(          
  HWND hWnd,
  UINT Msg,
  WPARAM wParam,
  LPARAM lParam
);

No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal:

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

// Protótipo
{$EXTERNALSYM SendMessage}
function SendMessage(hWnd: HWND; Msg: UINT; wParam: WPARAM; 
  lParam: LPARAM): LRESULT; stdcall;

// Implementação
function SendMessage; external user32 name 'SendMessageW';

Note que precisamos de um HWND (Handle) para a caixa de texto. Feito isso só precisamos enviar a mensagem WM_SETTEXT juntamente com o conteúdo a ser exibido no controle. Veja:

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

procedure TForm1.Button1Click(Sender: TObject);
var
  texto: String;
begin
  // conteúdo a ser definido para a caixa de texto
  texto := 'Veja isso';

  // vamos definir o conteúdo usando a função SendMessage
  // fornecendo a mensagem WM_SETTEXT
  SendMessage(Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(texto)));
end;

Veja que o parâmetro wParam da função SendMessage não é usado quando a mensagem é WM_SETTEXT. Desta forma só precisamos fornecer o valor 0.


PHP ::: Fundamentos da Linguagem ::: Estruturas de Controle

PHP para iniciantes - Como usar a usar o laço do...while em PHP - Como usar o laço do...while da linguagem PHP

Quantidade de visualizações: 14068 vezes
O laço do...while, ou loop do...while (faça...enquanto) da linguagem PHP é bem parecido com o laço while (enquanto). A diferença é que no do...while, a condição é testada no final da primeira iteração, o que garante que o laço será executado no mínimo uma vez. Veja um exemplo de seu uso:

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

<?
  $valor = 1;
   
  do{
    echo $valor . "<br>";
    $valor++;
  }while($valor <= 10);
?>

Este laço exibirá o seguinte resultado:

1
2
3
4
5
6
7
8
9
10

Lembre-se que o teste de continuidade do laço do...while ocorre no final da primeira iteração, enquanto no laço while(), o teste de continuidade ocorre antes da primeira iteração.

Dica revisada, atualizada e testada no PHP 8.


Java ::: Dicas & Truques ::: Expressões Regulares

Como remover espaços em excesso de uma string usando expressões regulares em Java

Quantidade de visualizações: 12283 vezes
Nesta dica mostrarei como é possível usar expressões regulares em Java para remover espaços em excesso de uma string, tanto no início, meio e fim. Note que vamos deixar apenas um espaço entre as palavras da frase.

Veja o código completo para o exemplo:

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

import java.util.regex.*;
 
public class Estudos{ 
  public static void main(String args[]){ 
    String padrao = "\\s{2,}";
    Pattern regPat = Pattern.compile(padrao);
    String frase = "   Esta    frase   contém  espaços   "; 
    Matcher matcher = regPat.matcher(frase);
    String res = matcher.replaceAll(" ").trim();
    System.out.println("Com espaços: " + frase);
    System.out.println("Sem espçaos: " + res);
  } 
} 

Ao executar este código nós teremos o seguinte resultado:

Com espaços:    Esta    frase   contém    espaços   
Sem espaços: Esta frase contém espaços



C# ::: Dicas & Truques ::: Strings e Caracteres

C# para iniciantes - Qual a diferença entre string e String?

Quantidade de visualizações: 12236 vezes
Muitos usuários do nosso site nos enviam essa pergunta, pois ficam confusos com a escrita de "string" e "String". Nesta dica mostrarei a diferença entre esses dois tipos de dados. Comece analisando o código abaixo:

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

using System;

namespace Estudos{
  class Program{
    static void Main(string[] args) {
      string frase = "Sou uma string";
      String outra = "Sou outra string";

      Console.WriteLine("\n\nPressione uma tecla para sair...");
      Console.ReadKey();
    }
  }
}

Se você tentar compilar o código acima, verá que ele não somente compila como também executa sem problemas. Isso acontece porque, do ponto de vista do compilador e interpretador C#, não há diferença alguma entre "string" e "String".

O tipo string representa uma string de caracteres Unicode (16 bits - 2 bytes) e é um apelido para a classe String da plataforma .NET. O fato de os projetistas da linguagem C# terem permitido a escrita toda em letras minúsculas se deve à frequência com que esse tipo é usado em nossos códigos, se asemelhando aos tipos primitivos int, float, double, etc.


Desafios, Exercícios e Algoritmos Resolvidos de C#

Veja mais Dicas e truques de 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á 73 usuários muito felizes estudando em nosso site.