Curso Online de AutoLISP© - Desenvolvido e ministrado por Eduardo Fernal, arquiteto
Conheça mais em http://www.gr-acad.com.br
Parceria :  http://www.cadklein.com


;;; Rotina criada em 29/07/2005 por Eduardo Fernal, a pedidos
;;; ************************************************************************
;;; Pode ser usada livremente, desde que mantidos estes créditos
;;; Conheça outras rotinas e aplicativos para AutoCAD e IntelliCAD
;;; no site http://www.gr-acad.com.br
;;; Aprenda a programar em AutoLISP com o Curso E.Fernal de Autolisp (em cd)
;;; ************************************************************************
;|
Caros
Estou a procura de uma Lisp para inserção de Blocos,
caso tenha e puder disponibilizar.
Seria o seguinte :
Ex. Tenho um bloco chamado casa.
Qdo for inserir o bloco casa, apenas digitaria casa.

Antecipadamente agradeço
MH
____________________
|;
 ;|
Bem, faremos um código que criará dois comandos.
O primeiro para solicitar o nome do bloco, pois agora é 'casa' e depois poderia
ser 'carro'. Assim, a rotina principal solicitaria o 'nome' do bloco (não pode ter
espaço) e criaria então uma rotina com este nome, para inserir o bloco. Como blocos
podem ter ou não atributos, a sua atualização será desligada na inserção, mas o
comando ddatte será acionado em seguida, se estes existirem... Observe:
|;
(DEFUN c:mario ;| substitua por seu nome, se quiser...|;
       (/ nome_do_bloco)
  (IF (AND (SETQ nome_do_bloco
                  (GETSTRING
                    "\n-> Entre com o nome do bloco para criar o comando : "
                  )
           )
           (> (STRLEN nome_do_bloco) 0)
           (TBLSEARCH "BLOCK" nome_do_bloco)
      )
    (PROGN
      (EVAL
        (READ
          (STRCAT
            "(DEFUN c:"
            nome_do_bloco
            " (/ p1 attreq attdia)(SETQ attreq (GETVAR "
            (CHR 34)
            "ATTREQ"
            (CHR 34)
            ") attdia (GETVAR "
            (CHR 34)
            "ATTDIA"
            (CHR 34)
            "))(SETVAR "
            (CHR 34)
            "ATTREQ"
            (CHR 34)
            " 0)(SETVAR "
            (CHR 34)
            "ATTDIA"
            (CHR 34)
            " 1)(IF (SETQ p1 (GETPOINT (STRCAT "
            (CHR 34)
            "\\n-> Ponto de inserção de "
            (CHR 34)
            (CHR 34)
            nome_do_bloco
            (CHR 34)
            (CHR 34)
            " : "
            (CHR 34)
            ")))(PROGN(COMMAND "
            (CHR 34)
            "_.INSERT"
            (CHR 34)
            (CHR 34)
            nome_do_bloco
            (CHR 34)
            (CHR 34)
            "_NON"
            (CHR 34)
            " p1 1 1 pause)"
            "(IF (CDR (ASSOC 66 (ENTGET (ENTLAST))))(COMMAND "
            (CHR 34)
            "DDATTE"
            (CHR 34)
            " (ENTLAST)))))(SETVAR "
            (CHR 34)
            "ATTDIA"
            (CHR 34)
            " attdia)(SETVAR "
            (CHR 34)
            "ATTREQ"
            (CHR 34)
            " attreq)(PRINC))"
          )
        )
      )
      (ALERT (STRCAT "Atenção:\n\n\tCriado o comando "
                     (STRCASE nome_do_bloco)
                     (CHR 32)
                     "para inserção deste bloco!\t\n\n"
             )
      )
    )
    (ALERT
      "Erro:\n\n\tNome inválido ou bloco com este nome não existe!\t\n\n"
    )
  )
  (PRINC)
)
(PRINC "\n-> Digite MARIO e tecle ENTER para rodar...")
(PRINC)




Clique aqui para baixar o arquivo lsp
Fim deste arquivo...