Aller au contenu

Rectangle facilité


Dinosor

Messages recommandés

Hello,

 

Je me réfère à un sujet qui parlait de programmation pour faire un rectangle de façon simplifiée. Tout à fait à mon goût :)

Merci à Didier, sujet ici

 

J'essaie de pouvoir lancer cela sous forme de lisp, sauf que le première ligne que j'ai ajouté est bien évidemment fausse !!!

 

Je suis une pince, j'aimerai bien savoir faire cela... Une bonne âme à mon secours ?

 

Voici le code, avec ma première ligne fausse:

 

(defun c:rct ????????????? ) 

(setvar "osmode" 0)

(setq p1 (getpoint"\nPoint de Base\n"))

(setq longueur (getreal"\nLongueur\n")

      largeur(getreal"\nLargeur\n"))

(setq p2 (list

           (+ (car p1) longueur)

           (cadr p1)

           )

      p3 (list

           (+ (car p1) longueur)

           (+ (cadr p2) largeur)

           )

      p4 (list

           (car p1)

           (+ (cadr p1) largeur)

           )

      )

(command "_pline" p1 p2 p3 p4 "c")

(command "_rotate" "d" "" p1 pause "")

 

Merci beaucoup pour votre aide ;)

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Salut Dinosor.

 

Tu n'avais jamais fais de LISP avant ?

 

Comme ça peut-être :

(defun c:rct ( / p1 longueur largeur p2 p3 p4)
 (setq old_osmode (getvar "osmode"))
 (setvar "osmode" 0)
 (setq p1 (getpoint "\nPoint de Base\n"))
 (setq longueur (getreal "\nLongueur :")
       largeur  (getreal "\nLargeur :")
 ) ;_ Fin de setq
 (setq p2 (list (+ (car p1) longueur) (cadr p1))
       p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
       p4 (list (car p1) (+ (cadr p1) largeur))
 ) ;_ Fin de setq
 (command "_pline" p1 p2 p3 p4 "c")
 (command "_rotate" "d" "" p1 pause "")
 (setvar "osmode" old_osmode)
 (princ)
)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Super !

 

Merci pour ta réactivité :)

 

Et si je veux conserver l'accrochage, je fais ainsi ?

(defun c:rct ( / p1 longueur largeur p2 p3 p4)
  (setq p1 (getpoint "\nPoint de Base\n"))
  (setq longueur (getreal "\nLongueur :")
        largeur  (getreal "\nLargeur :")
  ) ;_ Fin de setq
  (setq p2 (list (+ (car p1) longueur) (cadr p1))
        p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
        p4 (list (car p1) (+ (cadr p1) largeur))
  ) ;_ Fin de setq
  (command "_pline" p1 p2 p3 p4 "c")
  (command "_rotate" "d" "" p1 pause "")
  (setvar "osmode" old_osmode)
  (princ)
)

 

Super sympa ;)

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Yep, c'est tout bon !

 

Meeeeeeerci :)

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

J'aurais du commenté... Désolé :

(defun c:rct ( / old_osmode  p1 longueur largeur p2 p3 p4) ;Déclaration locale des variables
 (setq old_osmode (getvar "osmode")) ;enregistrement de l'accrochage
 (setvar "osmode" 0) ;changement de l'accrochage, ici : aucun
 (setq p1 (getpoint "\nPoint de Base :"))
 (setq longueur (getreal "\nLongueur :")
       largeur  (getreal "\nLargeur :")
 ) ;_ Fin de setq
 (setq p2 (list (+ (car p1) longueur) (cadr p1))
       p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
       p4 (list (car p1) (+ (cadr p1) largeur))
 ) ;_ Fin de setq
 (command "_pline" p1 p2 p3 p4 "c")
 (command "_rotate" "d" "" p1 pause "")
 (setvar "osmode" old_osmode) ;réaffectation de l'accrochage enregistré avant les opération.
 (princ) ;évite le retour Lisp
)

 

Pour toutes commandes lisp, l'interpréteur renvoi toujours la dernière opération sous forme de texte dans la fenêtre AutoCAD, le (princ) à la fin du code évite se genre de retour.

 

Content d'avoir pu aider... ;)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Yep, c'est tout bon !

 

Meeeeeeerci :)

 

Ben non en fait, j'ai encore une ligne de trop :mellow:

 

(defun c:rct ( / p1 longueur largeur p2 p3 p4)
  (setq p1 (getpoint "\nPoint de Base\n"))
  (setq longueur (getreal "\nLongueur :")
        largeur  (getreal "\nLargeur :")
  ) ;_ Fin de setq
  (setq p2 (list (+ (car p1) longueur) (cadr p1))
        p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
        p4 (list (car p1) (+ (cadr p1) largeur))
  ) ;_ Fin de setq
  (command "_pline" p1 p2 p3 p4 "c")
  (command "_rotate" "d" "" p1 pause "")
  (princ)
)

 

Je vais essayer ça... Sinon je vais encore avoir besoin d'aide... :D

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas où ça coince...

 

Mon code en réponse 5 marche bien chez moi...

 

Quel est ton problème ?

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Ca fonctionne, mais ça me modifie la variable SELECTIONPREVIEW...

Normal ?

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprend pas, chez moi, cette variable reste à 3, avant et après le code...

 

Elle n'y a aucune raison de changer, on n'y touche pas...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Je ne comprend pas, chez moi, cette variable reste à 3, avant et après le code...

 

Ouais, c'est bizarre... Ca m'a d'abord modifié la variable SELECTIONPREVIEW.

Plus maintenant !

Mais ça modifie le DYNMODE actuellement, il passe de 2 à -2 :D

 

Initialement, le code fonctionne bien sans accrochages.

Ce que je souhaite, c'est conserver ceux-ci et gérer uniquement avec la touche F3.

 

Merci.

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Comme tu peux le lire dans mes commentaires, je sauvegarde l'accrochage

(setq old_osmode (getvar "osmode"))

je le modifie

(setvar "osmode" 0)

et je le réaffecte à la fin

(setvar "osmode" old_osmode)

.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Un plus serait de pouvoir cliquer les longueurs et largeurs du rectangle à l'écran ou de donner les entrées clavier. Mais je suppose que c'est bien compliqué...

Comme j'ai dit, j'y connaît rien.

 

Merci encore.

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Comme tu peux le lire dans mes commentaires, je sauvegarde l'accrochage

(setq old_osmode (getvar "osmode"))

je le modifie

(setvar "osmode" 0)

et je la réaffecte à la fin

(setvar "osmode" old_osmode)

.

 

Je croise les messages, désolé.

 

J'ai bien vu, sauf que je souhaite maintenir les accrochages pour pouvoir ancrer mon rectangle où je veux. Je tripote F3 si je veux ou non l'accrochage, c'est tout.

Mais je sais que si l'accrochage est actif, le rectangle peut s'accrocher à des entités proches. Mais ce n'est pas grave.

 

Bien à toi :)

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Eh non, ce n'est pas bien compliqué, tu remplace tes (getreal par des (getdist :

(defun c:rct ( / p1 longueur largeur p2 p3 p4)
 (setq old_osmode (getvar "osmode"))
 (setvar "osmode" 0)
 (setq p1 (getpoint "\nPoint de Base :"))
 (setq longueur (getdist p1 "\nLongueur :")
       largeur  (getdist p1 "\nLargeur :")
 ) ;_ Fin de setq
 (setq p2 (list (+ (car p1) longueur) (cadr p1))
       p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
       p4 (list (car p1) (+ (cadr p1) largeur))
 ) ;_ Fin de setq
 (command "_pline" p1 p2 p3 p4 "c")
 (command "_rotate" "d" "" p1 pause "")
 (setvar "osmode" old_osmode)
 (princ)
)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Mais les trois points doivent définir deux droites parfaitement perpendiculaires...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Personnellement, je placerais (maintenant que je sais à peu près le faire) une gestion d'erreur.

 

Ce qui te permettra un [Echap] pendant ton code et de retrouver l'accrochage enregistré :

(defun c:rct (/ p1 longueur largeur p2 p3 p4)
;;; Gestion des erreurs  ********
 (setq olderror *error*)
 (defun *error* (msg)
   (princ msg)
   (setvar "osmode" old_osmode)
   (setq *error* olderror)
   (princ)
 ) ;_ Fin de defun
 (setq old_osmode (getvar "osmode"))
 (setvar "osmode" 0)
 (setq p1 (getpoint "\nPoint de Base :"))
 (setq longueur (getdist p1 "\nLongueur :")
       largeur  (getdist p1 "\nLargeur :")
 ) ;_ Fin de setq
 (setq p2 (list (+ (car p1) longueur) (cadr p1))
       p3 (list (+ (car p1) longueur) (+ (cadr p2) largeur))
       p4 (list (car p1) (+ (cadr p1) largeur))
 ) ;_ Fin de setq
 (command "_pline" p1 p2 p3 p4 "c")
 (command "_rotate" "d" "" p1 pause "")
 (setvar "osmode" old_osmode)
 (princ)
)

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Mais les trois points doivent définir deux droites parfaitement perpendiculaires...

 

Oui et non, en fait ça me prend la longueur réelle :)

 

Au final, cette dernière mouture fonctionne très bien malgré le désactivage des accrochages.

 

J'entre la commande, si j'appuie sur F3 il me propose du coup le menu d'accrochage, je choisis celui qui m'intéresse pour ancrer mon rectangle, j'entre mes dimensions largeur puis hauteur et je définis finalement l'orientation.

La plupart du temps j'ai l'ortho actif (F8), du coup c'est extra !

 

Merci beaucoup pour ton aide et tes explications plus haut (commentaires dans le lisp). C'est génial, il faut que je m'y intéresse sérieusement.

 

Amitiés ;)

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

Content d'avoir pu t'aider... ;)

 

Relis le fil, je t'ai ajouter une gestion d'erreur.

 

Plutôt que d'utiliser [F3], pourquoi pas un [Ctrl] + clic droit ? Sauf si tu connais l'accroche que tu veux pendant la saisie des distances. Dans ce cas, on peut le paramétrer.

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Content d'avoir pu t'aider... ;)

 

Relis le fil, je t'ai ajouter une gestion d'erreur.

 

Plutôt que d'utiliser [F3], pourquoi pas un [Ctrl] + clic droit ? Sauf si tu connais l'accroche que tu veux pendant la saisie des distances. Dans ce cas, on peut le paramétrer.

 

Oui, bien sûr ! Suis-je bête :rolleyes: A force de vouloir simplifier.... :D

 

J'ai mis donc le dernier de la discussion et ça fonctionne à merveille !

 

Bel outil ;)

 

A+

Seuls nous allons vite, ensemble nous allons plus loin...

CPU Intel 3,5Go / Nvidia RTX-3090

AutoCad (Architecture) 2022 - Lumion PRO

BMW R-1200-RT, c'est moche, oui... je sais...

 

www.neda.ch

Lien vers le commentaire
Partager sur d’autres sites

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é