Aller au contenu

Transformer macro en lisp


Messages recommandés

Posté(e) (modifié)

Messieurs,

ci joint ma petite macro

 

^C^C_-insert;plafo;M2P;\\;;;^C^C_-insert;inter;x;1;\\;^C^C_arc;\\\;^C^C_chprop;\;ca;liai;\\\

 

Je voulais donc modifier cette macro en lisp afin d'avoir un panel plus grand de raccourci clavier

 

ci-joint mon lisp qui en es à ses début :-)

soyez indulgent! mozart était comme moi quand il avait 2ans

 

(defun C : SA ( )
 (setq a (getpoint "\npremier point: "))
 (setq b (getpoint "\n2ème point: "))
 (setq x1  (car a)) "\ncoordonnée x 1er point"
 (setq x2  (car B)) "\ncoordonnée x 2ème point"
 (setq y1  (cadr a)) "\ncoordonné y 1er point"
 (setq y2  (cadr B)) "\ncoordonnée y 2ème point"
 (setq xdis (-x2 x1))
 (setq ydis (-y2 y1))
 (command "insérer" "lumi" xdis ydis 0")) 
 (command "insérer" "inter" 1 1 0")) 
 (command  "arc" "3P"))
 (setq dep (getpoint "\nspécifier point de départ arc: "))
 (setq cen (getpoint "\nspécifier le centre de l’arc: "))
 (setq fin (getpoint "\nspécifier le dernier point de l’arc: "))
 (princ)
)

 

Merci d'avance

Modifié par (gile)
ajout des bbcodes et d'une parenthèse fermante
Posté(e)

Salut Wolfgang !

 

Dommage que je ne sois pas modérateur, j'aurais mis ton programme entre balises code. Et j'aurais aussi choisi l'éditeur complet et les options afin de désactiver les emoticones (écrire en lisp avec ces parenthèses crée des smiles dans ton message. C'est un problème de CADxp).

 

(defun C:SA (/ *error* )
 (defun *error*(msg)
   (princ "\nErreur de ton programme")
   (setvar "OSMODE" *OSMODE*)
   )
 (setq *OSMODE*(getvar "OSMODE"))
 (setvar "OSMODE" 0)
 (setq a (getpoint "\npremier point: "))
 (setq b (getpoint "\n2ème point: "))
 (setq x1 (car a)); "\ncoordonnée x 1er point" NE SERT à RIEN !, j'ai mis en remarque
 (setq x2 (car b)); "\ncoordonnée x 2ème point"
 (setq y1 (cadr a)); "\ncoordonné y 1er point"
 (setq y2 (cadr b)); "\ncoordonnée y 2ème point"
 (setq xdis (/(+ x2 x1)2))
 (setq ydis (/(+ y2 y1)2))
 (command "insérer" "lumi"(list xdis ydis) 1 1 0)
 (command "insérer" "inter"(list xdis ydis) 1 1 0)
 (command "arc"
   pause
   pause
   pause
   )
(setvar "OSMODE" *OSMODE*)
(princ)
)

 

Voici ce que j'ai fait : d'abord j'ai pris le contrôle de la variable OSMODE (tes réglages d'accrobj) afin de passer toutes ces étapes sans ces derniers. En cas de fin d'execution normale ou d'erreur, le SETVAR réinjecte cette valeur et les accrochages réglés reviennent.

C'était une question d'usage, important de toujours reproduire ce schéma dans une routine de ce type.

Ensuite, je comprends que tu veux insérer des blocs au milieu de 2 points. J'ai écrit la bonne syntaxe.

Ensuite tu veux faire un arc manuellement. Je te propose une syntaxe toute bête. On aurait pu écrire :

  (command "arc"
   (getpoint)
   (getpoint)
   (getpoint)
   )

mais avec le mot "pause", c'est une astuce, on voit la commande ARC à l'écran ce qui n'est pas le cas avec GETPOINT.

 

A toi de créer un COMMAND qui utilise CHPROP sur le dernier élément. Je te propose le début :

(command "chprop" "d" "" ....)

D est pour dernier suivi d'un "" pour valider les objets. A toi de compléter ce commande et de le glisser dans ton programme.

Tu vas apprendre plein de trucs si tu te mets au lisp. Va doucement, ca va t'amener des outils géniaux... Et on est nombreux à pouvoir t'aider n'hésite pas. Ces premiers pas sont tout de même pas mal encourageants.

Hoppla

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut Wolfgang !

 

Dommage que je ne sois pas modérateur, j'aurais mis ton programme entre balises code. Et j'aurais aussi choisi l'éditeur complet et les options afin de désactiver les emoticones (écrire en lisp avec ces parenthèses crée des smiles dans ton message. C'est un problème de CADxp).

 

(defun C:SA (/ *error* )
 (defun *error*(msg)
   (princ "\nErreur de ton programme")
   (setvar "OSMODE" *OSMODE*)
   )
 (setq *OSMODE*(getvar "OSMODE"))
 (setvar "OSMODE" 0)
 (setq a (getpoint "\npremier point: "))
 (setq b (getpoint "\n2ème point: "))
 (setq x1 (car a)); "\ncoordonnée x 1er point" NE SERT à RIEN !, j'ai mis en remarque
 (setq x2 (car B)); "\ncoordonnée x 2ème point"
 (setq y1 (cadr a)); "\ncoordonné y 1er point"
 (setq y2 (cadr B)); "\ncoordonnée y 2ème point"
 (setq xdis (/(+ x2 x1)2))
 (setq ydis (/(+ y2 y1)2))
 (command "insérer" "lumi"(list xdis ydis) 1 1 0)
 (command "insérer" "inter"(list xdis ydis) 1 1 0)
 (command "arc"
   pause
   pause
   pause
   )
(setvar "OSMODE" *OSMODE*)
(princ)
)

 

Voici ce que j'ai fait : d'abord j'ai pris le contrôle de la variable OSMODE (tes réglages d'accrobj) afin de passer toutes ces étapes sans ces derniers. En cas de fin d'execution normale ou d'erreur, le SETVAR réinjecte cette valeur et les accrochages réglés reviennent.

C'était une question d'usage, important de toujours reproduire ce schéma dans une routine de ce type.

Ensuite, je comprends que tu veux insérer des blocs au milieu de 2 points. J'ai écrit la bonne syntaxe.

Ensuite tu veux faire un arc manuellement. Je te propose une syntaxe toute bête. On aurait pu écrire :

  (command "arc"
   (getpoint)
   (getpoint)
   (getpoint)
   )

mais avec le mot "pause", c'est une astuce, on voit la commande ARC à l'écran ce qui n'est pas le cas avec GETPOINT.

 

A toi de créer un COMMAND qui utilise CHPROP sur le dernier élément. Je te propose le début :

(command "chprop" "d" "" ....)

D est pour dernier suivi d'un "" pour valider les objets. A toi de compléter ce commande et de le glisser dans ton programme.

Tu vas apprendre plein de trucs si tu te mets au lisp. Va doucement, ca va t'amener des outils géniaux... Et on est nombreux à pouvoir t'aider n'hésite pas. Ces premiers pas sont tout de même pas mal encourageants.

Hoppla

 

 

 

Tu es un nerveux du lisp!! en meme temps, je suis très proche du néant! :-)

merci de ta réactivité, vais le tester demain!

Posté(e)

je suis très proche du néant! :-)

Non non, tu vaux plus que ça B)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Non non, tu vaux plus que ça B)

 

 

hello, zut, j'ai 2012LT et ça ne marchera pas!!!

bon, je vais surement freiner serieusement ma formation lisp!!

à plus

Posté(e)

Prends ZWCAD à la maison. Tu apprendras tranquillement le lisp et changera d'employeur.

Moi je ne signe pas pour une version LT :P

D'ailleurs j'ai ma propre licence ;)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é