• Este fórum é a tradução automática de www.cad3d.it/forum1 - a comunidade italiana de design. Vários termos não foram traduzidos corretamente.

Script, lisp, macro e ações: que diferenças?

ing.dir

Guest
Será bom para todos e pedir desculpa se o assunto já foi tratado, mas eu procurei aqui e na net e eu não fiz uma ideia clara sobre o assunto.
Eu me encontro executando em vários arquivos as mesmas operações, então eu procurei uma maneira de automatizar e otimizar tudo. Agora, no meu caso eu percebi que eu posso resolver usando o gravador de estoque e um script para abrir os arquivos de pasta por sua vez e executar a macro criada.

Em geral, no entanto, eu não entendi qual é a diferença entre as várias características. A ideia que fiz foi:
- scripts são a versão mais simples, é uma lista de comandos para executar em sequência
- o lisp são a ferramenta mais complexa e para criá-los você passa através de uma linguagem de computador específica que permite criar operações mais articuladas
- macros me parecem equivalentes a scripts mais elaborados, por exemplo, para inserir mensagens em operações. são feitos a partir de uma sequência de ações e podem ser criados ou com a voz gravada no painel de gestão ou escrever a estrutura no visual básico

Confirma a ideia que fiz até agora?
mas acima de tudo, me ajudar a entender para mim entender ao usar várias ferramentas?
Obrigado.
 
o lisp é uma linguagem de programação (na realidade o nome completo seria autolisp, uma variante do lisp especial para autocad).
o lisp não executa macros mais complexas, interage com o banco de dados de design e você pode ir para obter (mudança-cria) as características de cada objeto individual do dwg.
e com estes fazer cálculos, escolhas, extratos etc.
Dou-lhe um exemplo muito duro:
você tem duas linhas inclinadas entre eles de x graus (você não sabe que está lá para vídeo).
imagens para criar 4 linhas que combinam as duas inclinadas exatamente para 1/5 de cada uma delas. coordenar as leis começam e terminam de cada linha, ler seu comprimento, dividi-lo para 5, calcular as coordenadas de pontos em 1/5 de cada uma das linhas inclinadas, criar a linha no primeiro quinto de cada, então o segundo, o terceiro assim por diante.
naturalmente 1/5 pode ser uma variável, então você pode perguntar quantas partes você pode dividir assim uma vez que a rotina divide em 5 partes, outra decídua que deve dividir em 7 partes etc.

isso para fazer você entender que o lisp deriva todas as características da entidade em que ele funciona, para que você possa nos raciocinar.
com macros e scripts isso não é permitido para você.
um script é realmente um conjunto de macros em várias linhas, fechado em um arquivo externo.
uma macro está em uma única linha e você só pode chamá-lo de um ícone.
scripts e macros interagem muito pouco com o usuário e pode ser usado para ações repetitivas (tipo "definindo o objeto de->a e, em seguida, gire-os no ponto 0,0, e cor alterá-los) .
com lisp pelo contrário estabelecer o critério geral e fazer-nos cálculos (se o objeto é texto, em seguida, mudar de cor e mover, perguntando-se quanto; se é uma linha quebrada em n partes e gira as partes individuais do canto você vai me pedir para cada um deles).

Desculpe o post enorme
 
Eu gostaria de acrescentar que há o autolisp "base" (vamos dizer isso), que é o presente desde as primeiras versões do autocad, que poderia ser escrito exclusivamente por um editor de texto (notas tipo bloco). a partir de autocad 14 (se não erro!), uma nova versão foi introduzida, derivada do vital-lisp. com esta nova versão foi introduzida o visuallisp; que ajuda muito a programação, como permite que você execute o programa passo a passo ... para ver onde há erros de programação. Ao mesmo tempo os comandos foram introduzidos que permitem que você execute as mesmas coisas (e ainda mais coisas)... a uma velocidade consideravelmente maior.
um idioma chamado dcl também foi introduzido, o que permite criar janelas interativas, com botões e opções para selecionar.
para não mencionar o activex... isso permite que você faça coisas inimagináveis... mas é definitivamente complexo: apenas para programadores experientes.
 
Última edição:
... e o diesel onde o colocamos? Há também esta língua.

(defunção c:acadmode)
(setvar "modemacro"
(sing)
" [imath](substr.[/imath](getvar, clayer),1.8)"
"[imath](se,[/imath](getvar,orthomode), orto)"
"[imath](se,[/imath](Snapmode, snap)
OSM:[imath](substr.[/imath](getvar,osmode),1,3)"
"$(getvar,dimstyle)"
"[imath](se,[/imath](=,$(getvar,mode),0),
"[imath](se,[/imath](=,$(getvar,cvport),1), p)
"
)
)

)

este é um exemplo da linguagem diesel que define (por meio do lisp), a variável modemacro.
em particular este comando permite que você tenha a situação de osnap ativo na esquerda inferior, modo orth etc.

dizemos que foi útil várias versões atrás ... quando autocad ligado dos e tinha menos informações disponíveis para o usuário... mas era apenas para fazer um exemplo.

a linguagem diesel também pode ser útil para "manipular" os valores expressos nos "campos de dados":

um meu design chamado a-nomeclient-23-800.dwg, se eu colocar um campo de dados contendo:
[imath](substr.[/imath](Getvar, Dwgname)[imath]([/imath](forte,$(getvar,dwgname)),9),6)

Eu recebo '23-800', então eu excluo o resto do nome do arquivo e posso facilmente inseri-lo em minhas tabelas, tendo a certeza de que você atualiza quando eu mudo o cliente.

Ps.
era apenas para a plenitude... não certo criar confusão para @ing.dir !
 
Graças a todas as suas respostas, tenho que reler tudo com calma, mas eu diria que agora tenho uma imagem clara da situação.
Decidi configurar o banco de dados cartográfica por dias e preciso explodir os blocos dos vários arquivos. Eu me encontro fazendo diferentes operações sempre iguais para tantos arquivos e estou aproveitando dele para entender como otimizar as coisas em vez de trabalhar como uma mula.
 
no futuro quero tentar aprender pelo menos o básico.
se você começar a aprender ele vai pegar você, para o seu poder e para as perspectivas que abre.

Se eu lhe disser que é bastante trivial escrever um lisp que, lançado em um arquivo aberto, é:
tomar o nome do arquivo;
Procure todos os blocos nesse arquivo.
um por um explode-os;
elimina os blocos originais;
salva o arquivo adicionando no final do nome o sufixo "-exploded"
:
 
se você começar a aprender ele vai pegar você, para o seu poder e para as perspectivas que abre.

Se eu lhe disser que é bastante trivial escrever um lisp que, lançado em um arquivo aberto, é:
tomar o nome do arquivo;
Procure todos os blocos nesse arquivo.
um por um explode-os;
elimina os blocos originais;
salva o arquivo adicionando no final do nome o sufixo "-exploded"
:
É exactamente o que estou a tentar fazer, e depois de alguns dias de luta, acho que percebi que não há outra maneira de escrever um lisp.
Eu consegui fazer algo semelhante com um script, mas eu não posso explodir os blocos porque o comando "previous" funciona escrevendo na linha de comando, mas não dentro do script, alucinando. toda a coisa é complicada pelo fato de que eu devo primeiro redefinir todos os blocos de outra vez explodiu fim na camada 0 (burst leva mais tempo para explodir e xplode com opção herdada eu não sei por que, mas alguns blocos enviam-los de qualquer maneira em zero; Além disso, eles estão todos em mil pedaços que eu juntei para redefini-los.

Pode dizer-me se há algum exemplo válido em torno de que só posso usar como base inicial?
 
uma pequena atualização mesmo se você está indo um pouco fora do tópico: tomando referência algum código encontrado em torno de eu consegui fazer algum lisp que realmente funcionam corretamente, são incríveis em sua simplicidade.
Eu tenho um mínimo de bases de programação, que eu retomei com python ultimamente, tão grosseiro eu posso orientar-me, mas por agora eu só posso mover-se por estragar códigos já feitos.
a satisfação, no entanto, é enorme, quando você baixar já fez lisp, pensar em uma maneira de simplificar sua vida, mas quando você coloca sua mão, você percebe o enorme potencial.
 
Se não, autocad (não gstarcad, progecad ou zwcad), também pode executar códigos python...
mas aqui eu digo e aqui eu nego...
No entanto, se você já tem uma infarinação dessa língua, tente aprofundá-la.
 
Vou tentar me informar, mas ainda é um conhecimento muito limitado, principalmente eu tenho que procurar códigos já feitos ao redor, também porque não escrever bastante muitas vezes eu não posso ser autônomo, mas pelo menos eu sei que tenho uma ideia do que estou fazendo.
Para o resto, acho que vale a pena ler um pouco do guia que tenho sido relatado aqui, mesmo para entender o que está escrito nos scripts que estão por perto.
 
Se não, autocad (não gstarcad, progecad ou zwcad), também pode executar códigos python...
mas aqui eu digo e aqui eu nego...
No entanto, se você já tem uma infarinação dessa língua, tente aprofundá-la.
Acho que não. ou pelo menos, não nativamente. talvez com um plugin adicional
 
Acho que não. ou pelo menos, não nativamente. talvez com um plugin adicional
no final eu acho que não vale a pena se aprofundar na pergunta desde que se o python está funcionando, os códigos são todos escritos como autolisp tão melhor entender algo do que isso.
 

Estatísticas do fórum

Tópicos
58,521
Mensagens
499,056
Membros
104,110
Último membro
ChristianR

Membros online

Nenhum membro online agora.
Voltar
Topo