Pular para o conteúdo principal

Usando a pré-seleção do AutoCAD - "Pickfirst"

Muitos comandos do AutoCAD que o trabalham em conjuntos de entidades ou seja, você pode selecionar um conjunto de objetos e aplicar um comando. Isso basicamente significa que se o usuário tem pré-selecionado um conjunto de entidades e, em seguida, lança comando e será necessário solicitar que o usuário selecioná-los novamente, isso é pratico é útil.


Isto é possível usando algo chamado PICKFIRST que está definido dentro de AutoCAD. Para aproveitar esse recurso dentro de seus comandos, a primeira coisa a fazer é usar uma CommandFlag  especial chamada "UsePickSet": isto diz o editor do AutoCAD não para limpar o conjunto PICKFIRST quando o comando é invocado. Em seguida, a implementação do comando usará o método SelectImplied () no objeto editor para recuperar o conjunto PICKFIRST, deve estar disponível. Nesta fase também é boa prática para limpar o PICKFIRST definido com SetImpliedSelection ().

O problema é que ele pode não ter selecionado nada e ai como se faz?

O exemplo mostra como usar o PICKFIRST permitindo que mesmo que o usuário não selecione nada ele volte a pedir uma seleção,ou seja, se não houver um conjunto PICKFIRST. Quanto ao que fazemos com as entidades selecionadas é a aplicação.



 using Autodesk.AutoCAD;  
 using Autodesk.AutoCAD.Runtime;  
 using Autodesk.AutoCAD.ApplicationServices;  
 using Autodesk.AutoCAD.DatabaseServices;  
 using Autodesk.AutoCAD.EditorInput;  
 namespace SelectionTest  
 {  
  public class PickfirstTestCmds  
  {  
   // Must have UsePickSet specified  
   [CommandMethod("PFT", CommandFlags.UsePickSet |  
              CommandFlags.Redraw |  
              CommandFlags.Modal)  
   ]  
   static public void PickFirstTest()  
   {  
    Document doc =  
     Application.DocumentManager.MdiActiveDocument;  
    Editor ed = doc.Editor;  
    try  
    {  
     PromptSelectionResult selectionRes =  
      ed.SelectImplied();  
     // If there's no pickfirst set available...  
     if (selectionRes.Status == PromptStatus.Error)  
     {  
      // ... ask the user to select entities  
      PromptSelectionOptions selectionOpts =  
       new PromptSelectionOptions();  
      selectionOpts.MessageForAdding =  
       "\nSelect objects to list: ";  
      selectionRes =  
       ed.GetSelection(selectionOpts);  
     }  
     else  
     {  
      // If there was a pickfirst set, clear it  
      ed.SetImpliedSelection(new ObjectId[0]);  
     }  
     // If the user has not cancelled...  
     if (selectionRes.Status == PromptStatus.OK)  
     {  
      // ... take the selected objects one by one  
      Transaction tr =  
       doc.TransactionManager.StartTransaction();  
      try  
      {  
       ObjectId[] objIds = selectionRes.Value.GetObjectIds();  
       foreach (ObjectId objId in objIds)  
       {  
        Entity ent =  
         (Entity)tr.GetObject(objId, OpenMode.ForRead);  
        // In this simple case, just dump their properties  
        // to the command-line using list  
        ent.List();  
        ent.Dispose();  
       }  
       // Although no changes were made, use Commit()  
       // as this is much quicker than rolling back  
       tr.Commit();  
      }  
      catch (Autodesk.AutoCAD.Runtime.Exception ex)  
      {  
       ed.WriteMessage(ex.Message);  
       tr.Abort();  
      }  
     }  
    }  
    catch(Autodesk.AutoCAD.Runtime.Exception ex)  
    {  
     ed.WriteMessage(ex.Message);  
    }  
   }  
  }  
 }  

Este post eu fiz porque estava melhorando alguns dos meus comando e incluindo essa funcionalidade, tanto o exemplo como a fonte para esse post estão no Blog do Kean Walmsey

Comentários

Postagens mais visitadas deste blog

Numeração Automática no AutoCAD

Sem dúvida esse é uma ferramenta única que fazia falta a tempos e foi introduzida recentemente no AutoCAD, na última década… Em 2013 tinha feito um programa para criar uma bolinhas de numeração automática usando o conceito de Leader eu fazia um controle dos números dos itens na mão mesmo, depois de um tempo resolvi fazer um menuzinho para controlar o conteúdo do número dos bullets, hoje isso não é mais necessário, existe um comando no próprio AutoCAD para isso e faz parte das Ferramentas Expressas do AutoCAD. Gosto de compartilhar ferramentas e dicas que tendem a ser menos conhecidas ou subutilizadas, mas ainda podem fornecer um impulso para sua produtividade e fluxo de trabalho e que eu mesmo me surpreendi quando as encontrei Hoje, quero apresentar outra ferramenta, a numeração automática. Como o nome indica, o comando Numeração automática permite que você adicione automaticamente um número às etiquetas ou texto em um desenho. Vou mostrar como a numeração automática pode ser usada par...

Alterar a cor de fundo do AutoCAD

Eu sou um adepto do fundo preto, tudo que eu posso mudo a cor do fundo para preto. Nas ultimas versões do AutoCAD tenho notado que não é mais o padrão o fundo preto absoluto, é um cinza escuro. As vezes gosto também de mudar a cor do Layout de branco para preto afinal de contas quando trabalhamos com penas e contraste no model space preto, ver um desenho no layout é impossível.  Você pode mudar sua cor de fundo do AutoCAD para a cor que quiser. Definindo cores personalizadas Primeiro, vá para o menu Opções (botão Aplicativo> Opções), selecione a guia Exibição e clique no botão Cores. Agora você deve ver a caixa de diálogo Cores da janela de desenho: Agora você pode atualizar as cores de qualquer elemento da interface. Isso incluí o plano de fundo em qualquer contexto (selecione Model e Layout). Você pode escolher qualquer uma das predefinições, ou você pode escolher a partir de todo o espectro (basta escolher a opção Selecionar Cor ...). Se você não gost...

Operando com Imagens Georreferenciadas no AutoCAD - Ortofotos

A coisa mais desagradável para quem trabalha com documentos em DWG com ortofotos ( fotos aéreas georreferenciadas) é quando se recebe o documento e a ortofoto não é carregada. Uma linha de transmissão onde a plotagem da estruturas é feita em um documento combinado de planta e perfil. Na área da planta é feito pela topografia um serviço de recorte e renderização das imagens em formato de ortofoto na região do desenho. Como a linha de transmissão a projeção é feita sempre linear na planta observando os vértices uma mesma ortofoto pode ser representada várias vezes numa mesma folha em um enjanelamento diferente. Tratamento de Ortofotos no AutoCAD - EXTERNALREFERENCES As ortofotos no AutoCAD são tratadas como referências a objetos externos. Isso é bom porque cada ortofoto pode ter de poucos kb até Gb de tamanho. Se for parte integrante do DWG poderia deixa-lo grande de mais para ser manipulado. Cada projeção no documento funciona como uma imagem projetada em um...