Aller au contenu

Messages recommandés

Posté(e)

hello

je me suis mis depuis peu à faire des "alias" avec du lisp

ça évite bcp de manip pour arriver à un résultat très simple

la dernière chose sur laquelle je bosse c'est l'ajout de xref,

je travaille souvent sur un SCG différent du SCU et je suis obliger de retourner sous les SCU avant de pvr insérer a xref puis revenir sous le SCG sur lequel je travaille

certes c'esty aps compliqué mais vu qu'on doit pouvoir gagner du temps...

voici mon bout de programme (si on peut appeler ça ainsi)

 

(defun c:xa (/)
(command "scu" "g")
(command "_plan" "c")
(command "xattacher")
(command "scu" "p")
(command "_plan" "c")

 

j'ai bien entendu fait sauter l'alias xa pour ne pas avoir de "conflits" mais ça ne marche pas, c'est probablement dû à la fenètre qui s'ouvre lors de l'insertion de la xref mais je ne vois pas comment faire pour contourner ce problème, faut-il mettre une pause?

 

Phil

 

PS : promis je mettrai un jour prochain le nom des commandes en anglais!

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

Salut,

 

On commence comme ça et va savoir comment on finit... ;)

 

Tout d'abord, il manque une parenthèse fermante à la fin de ton code.

 

Pour laisser le temps à l'utilisateur de spécifier tout ce qu'il faut dans la boite de dialogue, tu peux utiliser une boucle qui utilise la variable système CMDACTIVE.

Cette variable a une valeur supérieure à 0 tant qu'une commande est active (voir l'aide pour plus de précisions).

 

Exemple :

 

(defun c:xa (/)
 (command "_ucs" "_world")
 (command "_plan" "_current")
 (command "_xattach")
 (while (    (command pause)
 )
 (command "_ucs" "_previous")
 (command "_plan" "_current")
)

 

PS : pour des raisons de compatibilité, il est préférable d'utiliser les noms de commandes et leurs options en 'langage international' (anglais précédé d'un underscore).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

Une question : y a-t-il une raison pour faire

(< 0 (getvar 'cmdactive))

plutôt que

(> (getvar 'cmdactive) 0)

?

Ou bien c'est juste une question de tournure d'esprit ? :P

 

Et une observation : sur la 2011, il m'a fallu mettre (initdia) avant (command "_xattach") pour avoir la boîte de dialogue de choix de fichier.

Posté(e)

merci (gile),

mille mercis

à force de tatonner mes programmes devraient dépasser les 3 lignes et tou ça grace à toi

++

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

miiiiince...

le _xattach ne passe plus par la fenètre standart, il faut rentrer tous les paramètres sur la ligne de commande!!

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

hello,

petite question : comment se fait-il que lorsque je fais "annuler" il me faut répéter les "annuler" pour retrouver mon fichier comme il était avant le lancement du lisp?

les lisps que j'utilise d'habitude ne fonctionnent pas de cette façon (un seul "annuler" annule l'ensemble des opérations que le lisp a réalisé)

cette question ne m'empèche pas d'utiliser ce lisp hyper puissant, c'est plus par curiosité qu'autre chose!

++

Phil

Projeteur Revit Indépendant - traitement des eaux/CVC

Posté(e)

petite question : comment se fait-il que lorsque je fais "annuler" il me faut répéter les "annuler" pour retrouver mon fichier comme il était avant le lancement du lisp?

les lisps que j'utilise d'habitude ne fonctionnent pas de cette façon (un seul "annuler" annule l'ensemble des opérations que le lisp a réalisé)

 

Parce que tu a plusieurs appels de la fonction command c'est comme si tu lances plusieurs commandes dans AutoCAD, il faut toutes les annuler.

 

Les autres LISP dont tu parles n'utilisent peut-être pas la fonction command et/ou utilisent un groupe d'annulation.

 

Tu peux faire un groupe d'annulation en appelant la commande "_undo" ("annuler") :

(command "_undo" "_begin")
; ici le code 
(command "_undo" "_end")

 

ou, en Visual LISP, les méthodes StartUndoMark et EndundoMark :

(vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
; ici le code 
(vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))

 

Attention, si une erreur (ou un annuler) intervient dans le code, avant la fermeture du groupe d'annulation, celui-ci reste ouvert et de futures annulation (avec U) risquent de provoquer une erreur fatale.

Donc, à mon avis, l'utilisation de groupes d'annulation nécessite obligatoirement de gérer les erreurs avec une redéfinition locale de la fonction *error* qui referme le groupe d'annulation.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

merci pour les fonctionnalités supplémentaires (gile)

je vais pas me risquer à mettre une telle chose dans mes programmes, le soft a déjà tendance à planter sans que j'ai besoin d'intervenir!

 

j'ai fais un autre super lisp, le lisp qui combine ucs+plan (on tourne le plan ainsi que le cursuer avec une seule commande, le progrès quoi!)

attention ça pique les yeux :

(defun c:turn (/)
 (command "_ucs" "z")
 (command pause)
 (command pause) 
 (command "_plan" "_current")
)

 

prochaine étape le faire en VBA (même si on sait que c'est un langage qui va tendre à disparaitre...)

 

A tout hasard connaissez-vous une méthode pour rendre le lisp ludique et attractif (j'ai essayé la programmation mais ça devient très vite très barbare!) l'idéal ça serait un bouquin avec des TD, j'ai bien vu qqs trucs sur internet mais les leçons/exo ne vont aps chercher bien loin

 

en tout cas merci à toute la communauté pour l'entraide que vous fournissez au noobZ comme moi

 

bonne journée

Phil

 

Projeteur Revit Indépendant - traitement des eaux/CVC

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité