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)
Fim deste arquivo...