quarta-feira, 14 de maio de 2014

Função command



     A função command

     Vou explicar neste post para que serve a função do AutoLisp command. Essa função é muito usada dentro da linguagem AutoLisp. Toda vez que você precisar que seu programa execute algum comando do AutoCad, será através desta função que este comando será executado.

    A sintaxe deste comando é:

    (command "nome do comando entre aspas" param1, param2,  param3 ...)

   *  nome do comando entre aspas > É o nome do comando do AutoCad que você quer executar. Sempre deve ser escrito entre aspas dupla (a não ser que o nome do comando esteja em uma variável)
    Exemplo:
   (setq variavel "PLINE")
   (command variavel parametros)

   * parametro1, parametro2, parametro3 > É a sequência de parâmetros que o comando solicita. Cada comando tem seus parâmetros específicos. Para saber quais parâmetros são necessários para cada comando, só basta você digitar o comando no prompt do AutoCad que ele vai pedir os parâmetros.


    Para evitar problemas com o idioma do AutoCad e com comandos redefinidos pelo usuário, é aconselhável colocar "_." antes do nome do comando.
    Exemplos:
  (command "_.PLINE")
  (command "_.ZOOM")


 Exemplo de rotina que utiliza a função command;
;; Rotina para criar um layer e passar os elementos selecionados pelo usuário para esse layer.
;; Neste exemplo são utilizados os comandos "LAYER" e "CHPROP" do AutoCad.
(defun c:mudaLayer ( / )
   (setvar "OSMODE" 0) ;; Não se preocupe com isso agora por enquanto
   (setvar "CMDECHO" 0)

    ;; Cria um novo layer caso não exista. Ou deixa ele visível e "desfrizado"
    ;; caso já exista.
   (if (not (tblsearch "LAYER" "Novo_layer"))
       (command  "_.LAYER" "N" "Novo_layer" "C" "RED" "Novo_layer" "")
       (command  "_.LAYER"  "T" "Novo_layer" "ON" "Novo_layer" "")
   )

    ;;Seleciona os elementos que quer mudar para o layer selecionado
   (prompt "\nSelecione os elemento trocar o layer")
   (setq ss (ssget))
   (if ss
      (command  "_.CHPROP" ss "" "_.CHPROP" "LA" "Novo_Layer" "")
   )
)
   
Até o próximo tutorial.

Primeiros passos


       Olá a todos.   

       Este é meu primeiro tutorial do blog. Irei começar com uma pequena introdução a programação AutoLisp. 

       Não irei perder tempo com teorias de programação e nem história da linguagem. Isso é fácil de obter com uma busca no google.
       Vamos ao que interessa.


      Primeiramente abra o bloco de notas - No Windows vá em Iniciar > Acessórios > Bloco de notas. Ou, abra o prompt de comando e digite: notepad.



     Digite o seguinte texto no bloco de notas aberto:

     (defun c:alomundo ( / )
         (setq texto "Alo mundo")
         (alert texto)
     )

     Vamos a uma breve explicação do código acima:

     A primeira linha cria uma função AutoLisp (o comando "defun" faz isso). Nesta mesma linha a palavra "c:alomundo" é o nome da função. Onde: "c:" quer dizer que esta é uma função que você pode executa-la a partir da linha de comando do AutoCad. E "alomundo" é o nome da função executável.

     Na segunda linha eu crio uma variável com o nome "texto" e atribuo a ele a string "Alo mundo". Nesta linha o comando "setq" é o responsável por criar essa variável e atribuir para ela a string "Alo mundo".

    Na terceira linha eu chamo o comando "alert". Essa função exibe uma tela com a mensagem passada como parâmetro, que neste caso é o valor armazenado na variável "texto"
      

     Salve este arquivo no no seu computador como "alomundo.lSP" (salve no "c:" da sua maquina para facilitar)

    Agora abra o AutoCad.  (Estou usando o AutoCad 2007. Nas outras versões é mais ou menos a mesma coisa para carregar e executar rotinas AutoLisp)




      
      No AutoCad vá no menu Tools e em Load Applications. Irá abrir a janela abaixo.


      Selecione o arquivo que você salvou no "c:" e clique em "Load".


      No prompt do AutoCad digite "alomundo" (sem aspas). Se tudo estiver certo é para ser exibida uma tela igual a imagem abaixo.



      O que nós fizemos aqui foi criar uma rotina para o AutoCad. Claro que é uma rotina muito simples. Mas, já serve como uma pequena introdução.



    Fizemos essa primeira rotina no bloco de notas só para mostrar para vocês que é possível fazer assim (era assim que era feito a um pouco mais de uma década atrás).
  
     Agora vamos começara a programar como gente grande. Nada de bloco de notas. Vamos usar uma ferramenta de verdade para escrever nossos códigos AutoLisp.


     No AutoCad vá em Tools > AutoLISP > Visual Lisp Editor (ou digite vlide no prompt do AutoCad)


    É para abrir uma janela como esta abaixo.




     Bem vindo a nossa ferramenta de desenvolvimento para a linguagem AutoLisp o VisualLisp 
     Por hora não vou perder tempo explicando as funcionalidades do VisualLisp.

     No VisualLisp vá em File > New File.

     Ao fazer isso será será aberto uma página em branco, onde você deve escrever seu código AutoLisp.

     Digite o seguinte código:


     
     Aperte as teclas "Ctrl" + "Alt" + "E" (isso irá carregar sua rotina no AutoCad).

     Vá no AutoCad e digite 12 no prompt de comando. Se você fez tudo certo é para exibir a seguinte tela


     O que essa rotina fez?

     Criou 5 variáveis (pt1, pt2, pt3, pt4 e pt5). E atribui para elas as coordenadas de um polígono.
     Executou o comando do AutoCad "Pline", que desenha uma linha no projeto.
     Deu um zoom de 50 em pt1 (somente para mostrar a linha desenhada).



     Bom, esse foi apenas um post introdutório a linguagem de programação AutoLisp. Nos próximos irei me aprofundar mais nas explicações sobre os comandos do AutoCad e as funções do AutoLisp.

     Qualquer dúvida ou sugestão coloque um comentário, que eu terei maior prazer em responder.