4
;;; 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:mh ;| 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\n\t"
(STRCASE nome_do_bloco)
"\n\tpara inserção deste bloco!"
)
)
)
(ALERT
"Erro:\n\n\tNome inválido ou bloco com este nome não existe!"
)
)
(PRINC)
)
(PRINC "\n-> Digite MH e tecle ENTER para rodar...")
(PRINC)
|