• Ce forum est la traduction générée par la machine de www.cad3d.it/forum1 - la communauté italienne du design. Plusieurs termes ne sont pas traduits correctement.

Script, lisp, macro et actions : quelles différences ?

ing.dir

Guest
Ce sera bien pour tous et je m'excuserai si le sujet a déjà été traité mais j'ai cherché ici et sur le net et je n'ai pas fait une idée claire de la question.
Je me retrouve à courir sur un certain nombre de fichiers les mêmes opérations, donc j'ai cherché un moyen d'automatiser et d'optimiser tout. Maintenant, dans mon cas, j'ai réalisé que je peux résoudre en utilisant l'enregistreur de stock et un script pour ouvrir les fichiers du dossier à tour de rôle et exécuter la macro créée.

En général, cependant, je ne comprenais pas la différence entre les différentes caractéristiques. L'idée que j'ai fait était:
- les scripts sont la version la plus simple, c'est une liste de commandes à exécuter en séquence
- le lisp est l'outil le plus complexe et pour les créer vous passez par un langage informatique spécifique qui permet de créer des opérations plus articulées
- les macros me semblent équivalentes à des scripts plus élaborés, par exemple, pour insérer des messages dans les opérations. sont faites à partir d'une séquence d'actions et peuvent être créées ou avec la voix enregistrée dans le panneau de gestion ou l'écriture de la structure en base visuelle

Confirmez-vous mon idée ?
Mais surtout, aidez-moi à comprendre quand j'utilise différents outils ?
Je vous remercie.
 
le lisp est un langage de programmation (en réalité le nom complet serait autolisp, une variante de lisp spécial pour autocad).
le lisp n'exécute pas de macros plus complexes, interagit avec la base de données de conception et vous pouvez aller obtenir (changer-créer) les caractéristiques de chaque objet individuel du dwg.
et avec ceux-ci font des calculs, des choix, des extraits, etc.
Je vous donne un exemple très sommaire:
vous avez deux lignes inclinées entre elles de x degrés (vous ne savez pas qu'il est là pour la vidéo).
images pour créer 4 lignes qui combinent les deux incliné exactement à 1/5 de chacune d'entre elles. coordonner les lois début et fin de chaque ligne, lire sa longueur, diviser pour 5, calculer les coordonnées des points à 1/5 de chacune des lignes inclinées, créer la ligne au premier cinquième de chacune, puis le second, le troisième ainsi.
Bien sûr 1/5 peut être une variable, donc vous pouvez demander combien de parties vous pouvez diviser ainsi une fois la routine divise en 5 parties, une autre caduque qui devrait diviser en 7 parties, etc.

ceci pour vous faire comprendre que lisp dérive toutes les caractéristiques de l'entité sur laquelle il fonctionne, afin que vous puissiez nous raisonner.
avec des macros et des scripts cela ne vous est pas permis.
un script est en fait un ensemble de macros sur plusieurs lignes, enfermé dans un fichier externe.
une macro est sur une seule ligne et vous ne pouvez l'appeler qu'à partir d'une icône.
scripts et macros interagissent très peu avec l'utilisateur et peuvent être utilisés pour des actions répétitives (type "réglage de l'objet à partir de->a, puis les tourner au point 0.0, et les changer de couleur) .
avec lisp au contraire établir le critère général et nous faire des calculs (si l'objet est texte puis changer de couleur et de mouvement, se demandant combien; si c'est une ligne cassée en n parties et tourne les parties individuelles du coin vous me demanderez pour chacun d'eux).

Désolé pour l'énorme poste
 
Je voudrais ajouter qu'il y a l'autolisp "base" (disons-le), c'est celle présente depuis les premières versions d'autocad, qui pourrait être écrite exclusivement par un éditeur de texte (notes de bloc de type). de l'autocad 14 (si pas erro!), une nouvelle version a été introduite, dérivée de vital-lisp. avec cette nouvelle version a été introduite la visuallisp; qui aide grandement la programmation, car il vous permet d'exécuter le programme étape par étape ... pour voir où il y a des erreurs de programmation. En même temps, des commandes ont été introduites qui vous permettent d'effectuer les mêmes choses (et encore plus)... à une vitesse considérablement plus élevée.
un langage appelé dcl a également été introduit, ce qui vous permet de créer des fenêtres interactives, avec des boutons et des options à sélectionner.
Sans parler de l'activex... cela vous permet de faire des choses inimaginables... mais c'est certainement complexe : seulement pour les programmeurs expérimentés.
 
Dernière édition:
... et le diesel où on l'a mis ? Il y a aussi cette langue. :

(défun c:acadmode ( )
(setvar "modemacro"
(chant)
" [imath](sous-marin)[/imath](vêtements, couches), 1.8)"
"[imath](si[/imath](getvar, orthomode), outo)"
"[imath](si[/imath](Snapmode, snap)
OSM :[imath](sous-marin)[/imath](getvar, modeos),1,3)"
"$(getvar,dimstyle)"
"[imath](si[/imath](=,$(getvar,mode),0),"
"[imath](si[/imath](=,$(getvar, cvport),1), p)
"
)
)

)

c'est un exemple de langage diesel qui définit (au moyen du lisp), la variable modemacro.
en particulier cette commande vous permet d'avoir la situation d'osnap actif en mode inférieur gauche, orth etc.

nous disons qu'il était utile il y a plusieurs versions ... quand autocad a activé dos et avait moins d'informations disponibles à l'utilisateur .... mais c'était juste pour faire un exemple.

le langage diesel peut également être utile pour "manipuler" les valeurs exprimées dans les "champs de données":

a ma conception appelée a-nomeclient-23-800.dwg, si je mets un champ de données contenant:
[imath](sous-marin)[/imath](Getvar, Dwgname)[imath](-,[/imath](strlen,$(getvar,dwgname),9),6)

Je reçois '23-800' donc je supprime le reste du nom du fichier et peux facilement l'insérer dans mes tables, ayant la certitude que vous mettez à jour lorsque je change de client.

Ps.
C'était juste pour l'exhaustivité... pas certain de créer de la confusion pour @ing.dir C'est vrai !
 
Merci à tous pour vos réponses, je dois relire tout calmement mais je dirais que maintenant j'ai une image claire de la situation.
J'ai décidé de configurer la base de données cartographique pendant des jours et j'ai besoin d'exploser les blocs des différents fichiers. Je me trouve faire des opérations différentes toujours égales pour autant de fichiers et je profite de lui pour comprendre comment optimiser les choses plutôt que de travailler comme une mule.
 
Génial, merci, Je l'ai téléchargé, certainement dans le futur je veux essayer d'apprendre au moins les bases.
 
dans le futur je veux essayer d'apprendre au moins les bases.
si vous commencez à apprendre il vous attrapera, pour sa puissance et pour les perspectives qu'il ouvre.

Si je vous disais qu'il est plutôt trivial d'écrire un lisp qui, lancé sur un fichier ouvert, est:
prendre le nom du fichier;
Rechercher tous les blocs dans ce fichier.
un par un les explose;
élimine les blocs originaux;
enregistre le fichier en ajoutant à la fin du nom le suffixe "-explosé"
:
 
si vous commencez à apprendre il vous attrapera, pour sa puissance et pour les perspectives qu'il ouvre.

Si je vous disais qu'il est plutôt trivial d'écrire un lisp qui, lancé sur un fichier ouvert, est:
prendre le nom du fichier;
Rechercher tous les blocs dans ce fichier.
un par un les explose;
élimine les blocs originaux;
enregistre le fichier en ajoutant à la fin du nom le suffixe "-explosé"
:
C'est exactement ce que j'essaie de faire, et après quelques jours de combats, je pense que j'ai réalisé qu'il n'y avait pas d'autre moyen que d'écrire un lisp.
J'ai réussi à faire quelque chose de similaire avec un script mais je ne peux pas exploser les blocs parce que la commande "précédente" fonctionne en écrivant dans la ligne de commande mais pas dans le script, hallucinant. l'ensemble est compliqué par le fait que je dois d'abord redéfinir tous les blocs autrement une fois explosé se termine sur la couche 0 (burst prend plus de temps pour exploser et xplode avec l'option héritée je ne sais pas pourquoi mais certains blocs les envoient de toute façon sur zéro; En outre, ils sont tous en mille morceaux que j'ai rejoint en les redéfinissant.

Pouvez-vous me dire s'il y a un exemple valable autour duquel je ne peux utiliser que comme base de départ ?
 
une petite mise à jour même si vous allez un peu hors sujet: en prenant la référence un code trouvé autour j'ai réussi à faire un peu de lisp qui fonctionne réellement correctement, sont incroyables dans leur simplicité.
J'ai un minimum de bases de programmation, que j'ai repris avec le python dernièrement, si grossière je peux m'orienter mais pour l'instant je ne peux bouger qu'en gâchant des codes déjà faits.
la satisfaction, cependant, est énorme, quand vous téléchargez déjà fait lisp, pensez à un moyen de simplifier votre vie, mais quand vous mettez votre main, vous réalisez l'énorme potentiel.
 
Sinon, autocad (pas gstarcad, progecad ou zwcad), peut aussi effectuer des codes python...
Mais ici je le dis et ici je le nie...
Cependant, si vous avez déjà une infalinisation de cette langue, essayez de l'approfondir.
 
Je vais essayer de m'informer mais c'est encore une connaissance très limitée, surtout je dois chercher des codes déjà fabriqués, aussi parce que ne pas écrire assez souvent je ne peux pas être autonome, mais au moins je sais que j'ai une idée de ce que je fais.
Pour le reste, je pense qu'il vaut la peine de lire un peu du guide que j'ai été rapporté ici, même pour comprendre ce qui est écrit dans les scripts qui sont autour.
 
Sinon, autocad (pas gstarcad, progecad ou zwcad), peut aussi effectuer des codes python...
Mais ici je le dis et ici je le nie...
Cependant, si vous avez déjà une infalinisation de cette langue, essayez de l'approfondir.
Je ne crois pas. ou du moins, pas d'origine. peut-être avec un plugin supplémentaire
 
Je ne crois pas. ou du moins, pas d'origine. peut-être avec un plugin supplémentaire
en fin de compte, je pense qu'il ne vaut pas la peine de se pencher sur la question puisque si le python fonctionne, les codes sont tous écrits comme autolisp afin de mieux comprendre quelque chose que cela.
 

Statistiques du forum

Sujets
58 521
Messages
499 056
Membres
104 110
Dernier membre
ChristianR

Membres en ligne

Aucun membre en ligne actuellement.
Retour
Haut