Aller au contenu

[RÉSOLU] Comment créer un LISP qui remplace une Macro ?


Messages recommandés

Posté(e)

Bonjour à tous,

 

J'ai quelque peu parcouru le forum ; notamment le sujet épinglé de (gile) pour les débutants.

Mais les explications ne me parlent pas vraiment ...

En fait j'aimerai écrire une poignée de " xxx.lsp " qui me serviraient d'alias de commandes améliorés.

 

Par exemple, pour faire une coupure en 2 points, on peut appeler la fonction _break

Par contre, si je veux couper en 1 point (plusieurs fois de suite) je clic à la souris sur le bouton dont la macro est :

^C^C_break \_f \@

Puis ECHAP puis je reclic etc etc

 

J'ai aussi d'autres macros (pour convertir en polyligne, les joindre, décaler d'une distance donnée ... etc etc)

Le problème est le même :

Comment intégrer cela FACILEMENT dans des .lsp ?

 

Par avance, merci de prendre le temps de me répondre.

:unsure:

Posté(e)

hello

 

pour didier ;)

 

qui je le sais ne ferat pas de copier coller bêtement puisque tu sais deja faire ce genre de lisp

 

pour analyse

 

a+

phil

couper.lsp

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut, perso je n'ai jamais utilisé l'enregistreur d'action, ça a l'air effectivement pas mal.

Pour en revenir au lisp, voici une version réellement simple qui reprend en fait les séquences de la commande.

(defun c:coup1 ()
(command "_break" pause "_f" pause "_non" "@")
)

Cela peut bien sûr être en français.

pause, permet une entrée utilisateur, point ou autre.

_non, stoppe momentanément l'accroche objet automatique pour que le dernier point donné par @, ne parte on ne sait où.

Posté(e)

Salut,

 

L'enregistreur de macro est certainement d'un usage facile (je n'ai jamais essayé), mais je pense que la traduction de macro en LISP est le moyen de s'ouvrir des portes vers un horizon bien plus puissant.

 

Traduire des macros pour définir des commandes en LISP, comme le montre usegomme, n'est, à mon avis, pas plus difficile que d'écrire ces macros, c'est même plus simple à évaluer : pas besoin d'ouvrir le CUI on peut le faire directement en ligne de commande ou, mieux avec l'éditeur Visual LISP.

Et, quand on a ouvert sa première parenthèse dans l'éditeur Visual LISP qui peut dire où on s'arrêtera ?...

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

Posté(e)

Merci à tous pour vos réponses.

 

Au début, j'ai eu quelques frayeurs, au vue de la complexité des réponses (ici ou sur d'autres sujets que j'ai parcouru depuis). Par contre, j'avais bien aimé l'histoire de la voiture à 8 roues ...

;)

 

Ensuite, j'ai découvert l'enregistreur (faut avouer qu'en affichage Autocad Classique, ça ne paye pas de mine ...). Intéressant, mais en ce qui me concerne, pour d'autres manip.

 

Enfin, les exemples simplifiés d'usegomme m'ont pleinement satisfait !

 

Je reviendrai sans doute vous embêter pour d'autres fonctions ; mais là d'autres questions (sujet #) me viennent à l'esprit.

 

MERCI !

 

 

PS : (gile), je pense qu'on peut être un utilisateur avancé dans l'univers PC (du registre windows au calage de sous-titres incrustés sur des vidéos recompressées ... en passant par du chanfreinage de bordures en 3D dans autocad) sans pour autant avoir l'étoffe ou le goût pour devenir programmeur. Même à un niveau basique. Personnellement, je m'en suis arrêté au jeu de devinette d'un nombre sur calculatrice.

:rolleyes:

D'où l'intérêt de venir sur ce forum, et grâce à vous, d’obtenir ceci :

 

; l'alias S renvoi vers SSmatch, le lisp complet de (gile) pour la sélection
; SS affichage dans le SCU d'un objet
;
(defun c:SS ()		(command "_ucs" "_n" "_obj" pause) (command "_plan" "C"))


; G coupure en 1 point ... G ?
; GG coupure classique, sur 2 points
;
(defun c:G () 		(command "_break" pause "_f" pause "_non" "@"))
(defun c:GG () 		(command "_break"))


; + RACCORD entre polylignes
;
(defun c:+0+5 () 	(command "_fillet" "R" "0.5") 	(command "_fillet"))
(defun c:+1 () 		(command "_fillet" "R" "1") 	(command "_fillet"))

; DECALAGE POLYLIGNE
;
(defun c:1 () 		(command "_offset" "C" "S" "1"))
(defun c:2 ()	 	(command "_offset" "C" "S" "2"))

Posté(e)

Bonjour et bienvenu Autocadavre,

 

Je crois pouvoir dire que c’est comme cela que l’on a tous plus ou moins débuté.

 

... sans pour autant avoir l'étoffe ou le goût pour devenir programmeur. Même à un niveau basique.

 

Tout à fait d’accord avec toi, même si on ne peut présager de rien… Par exemple pour mon cas personnel, j’avais le même état d’esprit que toi en débutant le Lisp (du style on verra bien…), maintenant par simple jeu sur mon temps de loisir (temps restreint hélas..) j’en suis à essayer de comprendre la programmation par contrainte avec l’algorithme des 8 reines adaptés au listes chaînées.. Je crois que c’est l'idée qu’a voulu exprimer (gile)en disant:

 

Et, quand on a ouvert sa première parenthèse dans l'éditeur Visual LISP qui peut dire où on s'arrêtera ?...

 

Accessoirement au cas où? Pour les raccourcis claviers concernant les commandes AutoCAD, tu as toujours la possibilité d’éditer le fichier acad.pgp (ou passer par la commande aliasedit du menu Express).

 

A+

Apprendre => Prendre => Rendre

Posté(e)
Accessoirement au cas où? Pour les raccourcis claviers [...]

J'ai modifié/ajouté une 40aine de lignes dans le fichier de personnalisation.

Par ailleurs, l'une des plus utiles est surement celle-ci :

INI, *REINIT

 

:P

Posté(e)

Coucou

 

je me permets d'intervenir

tu fais un raccourci de coupure en le nommant G

pour le mois étonnant

à moins que ne prononces Goupure

 

il faut un minimum de logique

sinon, toi-même tu te perdras dans tes raccourcis

et lorsque tu déclareras des variables

(si toutefois tu en déclares un jour)

il faudra suivre une logique aussi

 

de même,

faire un defun avec un nom de fonction

qui est un nombre me paraît "olé olé"

 

amicalement

Posté(e)
faire un defun avec un nom de fonction

qui est un nombre me paraît "olé olé"

 

Non, j'utilise le pavé numérique pour basculer entre les vues prédéfinies :

 

    (mapcar
     '(lambda (f v)
 (eval (list 'defun
	     f
	     nil
	     (list 'command "_.view" v)
	     '(princ)
       )
 )
      )
     '(c:0 c:1 c:2 c:3 c:4 c:5 c:6 c:7 c:8 c:9)
     '("_bottom" "_swiso" "_front" "_seiso" "_left" "_top" "_right" "_nwiso" "_back" "_neiso")
   )

 

cette expression équivaut à 10 defun :

(defun c:0 () (command "_.view" "_bottom") (princ))
(defun c:1 () (command "_.view" "_swiso") (princ))
(defun c:2 () (command "_.view" "_front") (princ))
...

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

Posté(e)

Coucou

 

je retire donc, au temps pour moi :(

 

amicalement

 

Mais non, libre à toi de trouver ça "olé olé".

De mon côté, pour les vues, je trouve ça assez ergonomique et intuitif.

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

  • 5 mois après...
Posté(e)

Longtemps que je n'étais pas repassé dans vos colonnes ... bjr à tous ^^

 

Histoire de compléter ce que j'avais écrit :

Effectivement, les chiffres seuls ne sont pas pratiques.

J'utilise donc des + pour les raccords et des / pour les décalages.

 

Pour le côté olé-olé, j'assume.

Joueur sur PC, les touches MAJ et ESPACES sont toujours à portée de main gauche.

Donc pour autocad, j'ai gardé le réflexe de mettre des raccourcis sur :

> W X C V B N ?

Mais comme la quantité de commandes utiles est importante, j'ai débordé sur le clavier.

Exemples :

Q = « qopier les propriétés »

A² A1 A2 AG = attributs invisibles, partiels, visibles, gestionnaire (battman)

C'est une question d'habitude, et G 1 point GG 2 points, je n'ai aucun mal à le retenir... pas pour goupure, mais pour point G ...

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é