ltremblay777 Posté(e) le 13 juillet 2006 Posté(e) le 13 juillet 2006 Bonjour à tous, je suis nouveau. J'ai fait un petit programme en Lisp qui trace un cube à partir de 2 points opposés, disons (0,0,0) et (1,1,1). Le voici: (nommez le fichier disons cucube.lsp) (defun cucube (cp0 cp7) (setq cp1 (list (car cp0) (cadr cp7) (caddr cp0))) (setq cp2 (list (car cp7) (cadr cp0) (caddr cp0))) (setq cp3 (list (car cp7) (cadr cp7) (caddr cp0))) (setq cp4 (list (car cp0) (cadr cp0) (caddr cp7))) (setq cp5 (list (car cp0) (cadr cp7) (caddr cp7))) (setq cp6 (list (car cp7) (cadr cp0) (caddr cp7))) (command "_line" cp0 cp1 "") (command "_line" cp1 cp3 "") (command "_line" cp3 cp2 "") (command "_line" cp2 cp0 "") (command "_line" cp0 cp4 "") (command "_line" cp1 cp5 "") (command "_line" cp2 cp6 "") (command "_line" cp3 cp7 "") (command "_line" cp4 cp5 "") (command "_line" cp5 cp7 "") (command "_line" cp7 cp6 "") (command "_line" cp6 cp4 "") ) Je le lance avec (cucube '(0 0 0) '(100 100 100)) Et dépendamment de l'orientation de la vue au moment ou je fais ma commande, le cube sera parfait où tout déformé. Disons que je suis dans la vue "x-y", quand je fais 3D Orbit je ne vois qu'un rectangle en 3D. Si je prends la vue isométrique avant de lancer la commande, à ce moment le cube est replié sur lui-même d'une drôle de façon. Par contre, si je prends une vue 3D quelconque, disons en déplaçant avec 3D Orbit, et je lance ma commande, le cube est parfait. Est-ce une option que je n'ai pas activée ou c'est un bug d'autocad? Merci de m'aider c'est plutôt urgent!
(gile) Posté(e) le 13 juillet 2006 Posté(e) le 13 juillet 2006 Salut et bienvenue, Je ne pense pas que les différents comportements viennent de la vue (ortho ou iso) mais plutôt de la valeur du zoom. En fait le problème vient desaccrochage aux objets permanents (variable OSMODE). Par principe toute routine LISP qui utilise command pour créer des objets graphiques devrait contenir la désactivation des accrochages aux objets. La méthode la plus courament utilisée consiste en récupérer la valeur initiale de OSMODE en début de routine, mettre OSMODE à 0, faire tous les command et enfin restaurer sa valeur initiale à osmode. (defun cucube (cp0 cp7 / os) (setq os (getvar "OSMODE")) (setvar "OSMODE" 0) (setq cp1 (list (car cp0) (cadr cp7) (caddr cp0))) (setq cp2 (list (car cp7) (cadr cp0) (caddr cp0))) (setq cp3 (list (car cp7) (cadr cp7) (caddr cp0))) (setq cp4 (list (car cp0) (cadr cp0) (caddr cp7))) (setq cp5 (list (car cp0) (cadr cp7) (caddr cp7))) (setq cp6 (list (car cp7) (cadr cp0) (caddr cp7))) (command "_line" cp0 cp1 "") (command "_line" cp1 cp3 "") (command "_line" cp3 cp2 "") (command "_line" cp2 cp0 "") (command "_line" cp0 cp4 "") (command "_line" cp1 cp5 "") (command "_line" cp2 cp6 "") (command "_line" cp3 cp7 "") (command "_line" cp4 cp5 "") (command "_line" cp5 cp7 "") (command "_line" cp7 cp6 "") (command "_line" cp6 cp4 "") (setvar "OSMODE" os) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ltremblay777 Posté(e) le 13 juillet 2006 Auteur Posté(e) le 13 juillet 2006 Merci beaucoup , ça a marché!
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant