Comunidade
AutoCAD - Português
Bem vindo ao Forum de AutoCAD da Autodesk. Compartilhe seu conhecimento, faça perguntas e explore os tópicos mais populares de AutoCAD.
cancelar
Mostrando resultados para 
Mostrar  apenas  | Pesquisar então 
Você quer dizer: 

AutoLISP ou VIsual LISP detectar primeiro uso

8 RESPOSTAS 8
Responder
Mensagem 1 de 9
TrashBR
959 Exibições, 8 Respostas

AutoLISP ou VIsual LISP detectar primeiro uso

Olá,

 

 

Caros amigos existe algum meio de fazer com que uma rotina detecte que está sendo utilizada pela primeira vez e apartir desta informação e se configure para poder rodar direito por exemplo:

 

Estou criando uma rotina para calculo de vão entre suportes de tubulação está rotina tem uma caixa de dialogo, arquivos de base de dados, etc. Porem o usuario quando salva está rotina no computador pode fazer isso em qualquer lugar e se o diretorio não constar na lista de suporte do autocad a rotina nao funciona direito então eu queria algo assim:

 

Se FIRSTRUNFLAG faça

 

configurar os diretórios do autocad para acrescentar o local onde a rotina esta salva

Configura os arquivos da base de dados

etc..

 

senao 

 

roda o programa normalmente

 

fim se

 

Como detectar que é a primeira vez que o arquivo está rodando? Eu tentei acrescentar uma linha num arquivo de configuração mas depois me lembrei que esse arquivo só vai ficar disponivel se o diretorio estiver mapeado no autocad

 

Valeu.

8 RESPOSTAS 8
Mensagem 2 de 9
hmsilva
em resposta a: TrashBR

Olá TrashBR

 

em vez de testares para a primeira utilização, porque não

 

testar se o path da rotina é válido

se sim -> correr a rotina

se não -> adicionar o path ao registo e correr o aplicativo...

 

É apenas uma ideia

 

Henrique

EESignature

Mensagem 3 de 9
TrashBR
em resposta a: TrashBR

Sua odéia é boa, eu até já havia considerado algo detes tipo mas infelizmente não consegui fazer o programa localizar arquivos que estejam fora dos diretórios de suporte do autocad, você sabe como faze-lo?

Mensagem 4 de 9
hmsilva
em resposta a: TrashBR


TrashBR escreveu:

Sua odéia é boa, eu até já havia considerado algo detes tipo mas infelizmente não consegui fazer o programa localizar arquivos que estejam fora dos diretórios de suporte do autocad, você sabe como faze-lo?


Eu já escrevi algo assim, mas tenho que procurar nos meu ficheiros antigos...quando estiver em casa, vou procurar e se encontrar, digo qualquer coisa.

Para o ficheiro funcionar correctamente, mesmo que não esteja numa directoria de suporte, porque não criar uma aplicação unica, tipo vlx, não testado, mas talvez funcione...

 

Henrique

EESignature

Mensagem 5 de 9
hmsilva
em resposta a: TrashBR

TrashBR,

 

não é a resposta que estavas a espera, mas é uma possivel maneira de contornar a situação

(if (not (findfile "Test.dcl"))
  (setq NewPath (getfiled "Seleciona o Ficheiro" "Test.dcl" "dcl" 8))
)

 Quando se carrega o lsp, podes testar para a existencia do teu dcl nas directorias de suporte e se não for encontrado,

pedir ao utilizador que o faça...

 

Henrique

 

 

EESignature

Mensagem 6 de 9
TrashBR
em resposta a: hmsilva

Gostei da sua idéia vou tentar hoje se funcionar eu te falo. Na verdade eu acho que vai funcionar sim. Quando eu conseguir por a rotina para funcionar direito eu te mando uma copia.
Mensagem 7 de 9
f_santana
em resposta a: TrashBR

costumava ter este problema, e resolvi ele compilando a rotina em VLX

facilita muito a implantação de rotinas com quadros de dialogo DCL


Você achou uma postagem útil? Então fique à vontade para curtir essas postagens!
Sua pergunta obteve uma resposta que resolveu a duvida? Então clique no botão Aceitar Solução.


Fábio Santana
Architect | CAD/BIM Manager

EESignature

Mensagem 8 de 9
TrashBR
em resposta a: f_santana

Caros amigos,

 

 

Depois de garimpar bastante na net eu encontrei essa rotina simplismente perfeita:

 

(defun _findfile ( pattern root / file ) ;; Lee Mac 2011
    (cond
        (
            (setq file
                (car
                    (vl-member-if
                        (function
                            (lambda ( file )
                                (wcmatch (strcase file) (strcase pattern))
                            )
                        )
                        (vl-directory-files root nil 1)
                    )
                )
            )
            (strcat root "\\" file)
        )
        (
            (vl-some
                (function
                    (lambda ( path )
                        (_findfile pattern (strcat root "\\" path))
                    )
                )
                (vl-remove "." (vl-remove ".." (vl-directory-files root nil -1)))
            )
        )
    )
)
Mensagem 9 de 9
hmsilva
em resposta a: TrashBR

Grande Lee Mac!

 

Se não tiveres mais ou menos a noção do path, e se por exemplo for fornecida á função a penas um path tipo "c:\\"

o tempo de procura pode ser elevado, mas se isso não importar, aquí está uma versão recursiva dessa função,

é sempre um bom sitio para se procurar grandes funções...

 

Henrique

 

EESignature

Não encontrou o que está procurando? Pergunte à comunidade ou compartilhe seu conhecimento.

Postar nos fóruns  

Autodesk Design & Make Report