Rotinas .FAS e .VLX

você tem rotinas *.FAS ou *.VLX (rotinas autolisp compiladas) e quer usá-las, mas ao carregar elas com o LOAD, ou o APPLOAD nada acontece? você não lembra quais eram os "comandos" que ela criava? e agora? bom... SEUS PROBLEMAS ACABARAM!!!!
mais...
para saber quais linhas de comando usar para usar uma rotina que esta em *.FAS ou *.VLX você pode fazer o seguinte:

1º) grave numa lista tudo o q esta em atoms-family:
(setq lista1 (atoms-family 1))

2º) agora carregue as rotinas *.FAS ou *.VLX:
(load "arquivo.fas")

3º) grave numa lista tudo o que está em atoms-family DEPOIS do passo 2:
(setq lista2 (atoms-family 1))

4º) compare as duas listas e filtre as novas strings que apareceram:
(setq lista3 (vl-remove nil 
   (mapcar '(lambda (x) (if (not (member x lista1)) x))
           lista2)))


5º) agora lista3 contém apenas os novos "atoms" que foram criados ao carregar as suas rotinas *.FAS ou *.VLX, com isso é so ver quais delas são executáveis na linha de comando:
(setq lista4
       (mapcar '(lambda (x) (list x (type (eval (read x)))))
               lista3))


percebe que extraí a informação do tipo de elemento cada string representa?
neste ponto a variável lista4 contém algo parecido com isso:
(("LISTA2" LIST) ("LISTA1" LIST) ("C:MLAY" USUBR) ("C:EXPORTATT" USUBR))

vejam a lista acima... temos o nome do "atom" numa string e seu tipo, certo?
todos os tipos SUBR (rotinas internas e compiladas), EXRXSUBR (rotinas de ARX), ou USUBR (user-defined) são executáveis de alguma forma... é só escolher!!! e pra ajudar, os "atoms" que começam com "C:" são executáveis na linha de comando e são ESTAS que você não deveria ter esquecido, hehehe

Um comentário:

  1. experimente também:
    (vl-list-exported-functions)

    ResponderExcluir