Bred Posté(e) le 24 novembre 2006 Posté(e) le 24 novembre 2006 Routine inutile : Voir Réponse 2.-------------------------------------------------------------------------------------------------Salut,Ci-dessous une routine permettant de retourner les coordonnées en Espace Papier de l'origine d'une fenêtre.Utilité : Pouvoir situé un objet contenu dans une fenêtre afin de le "travailler" en espace papier (ex : entourer l'objet sur une fenêtre) Le code fonctionne pour des vues Parrallèles (droite, gauche, etc....) Maitre lispeur, à vos clavier, démonter/simplifier/perfectionner moi tout ça !!! ;) merci ! (defun Get-Coord-SCU-Fen_Esp-Pap (/ sel id_fenetre Coord_centre_fenetre/SCU coord_centre_fenetre Sens_vue Ech_Fen Coord_centre_fenetre/SCU) (if (= (getvar "TILEMODE") 1) (princ "\n ** Cette commande n'est valable que dans l'espace papier. **") (progn (if (= (getvar "CVPORT") 1) (progn (while (not (and (setq sel (car (entsel "\n Sélectionner une fenêtre :"))) (or (equal (cdr (assoc 0 (entget sel))) "VIEWPORT") (equal (cdr (assoc 0 (entget (cdr (assoc 330 (entget sel)))))) "VIEWPORT") ) ) ) ) (setq sel (entget sel) id_fenetre (cdr (assoc 69 sel))) (if (= id_fenetre nil) (progn (setq sel (entget (cdr (assoc 330 sel))) id_fenetre (cdr (assoc 69 sel))) ) ) (command "_.MSPACE") (setvar "CVPORT" id_fenetre) ) ) (setq Coord_centre_fenetre/SCU (getvar "VIEWCTR")) (command "_.PSPACE") (setq coord_centre_fenetre (cdr (assoc 10 sel)) Sens_vue (cdr (assoc 16 sel)) Ech_Fen (/(cdr (assoc 41 sel))(cdr (assoc 45 sel))) Coord_centre_fenetre/SCU (list (* Ech_Fen (car Coord_centre_fenetre/SCU)) (* Ech_Fen (cadr Coord_centre_fenetre/SCU)) (* Ech_Fen (caddr Coord_centre_fenetre/SCU)))) (cond ((equal sens_vue '(0.0 -1.0 0.0));VF (Setq Coord-SCU-Fen_Esp-Pap (list (- (car coord_centre_fenetre)(car Coord_centre_fenetre/SCU)) (- (cadr coord_centre_fenetre)(caddr Coord_centre_fenetre/SCU))))) ((equal sens_vue '(-1.0 0.0 0.0));VG (Setq Coord-SCU-Fen_Esp-Pap (list (+ (car coord_centre_fenetre)(cadr Coord_centre_fenetre/SCU)) (- (cadr coord_centre_fenetre)(caddr Coord_centre_fenetre/SCU))))) ((equal sens_vue '(1.0 0.0 0.0));VD (Setq Coord-SCU-Fen_Esp-Pap (list (+ (car coord_centre_fenetre)(* (cadr Coord_centre_fenetre/SCU) -1)) (- (cadr coord_centre_fenetre)(caddr Coord_centre_fenetre/SCU))))) ((equal sens_vue '(0.0 0.0 1.0));VH (Setq Coord-SCU-Fen_Esp-Pap (list (- (car coord_centre_fenetre)(car Coord_centre_fenetre/SCU)) (- (cadr coord_centre_fenetre)(cadr Coord_centre_fenetre/SCU))))) ((equal sens_vue '(0.0 0.0 -1.0));VB (Setq Coord-SCU-Fen_Esp-Pap (list (+ (car coord_centre_fenetre)(car Coord_centre_fenetre/SCU)) (- (cadr coord_centre_fenetre)(cadr Coord_centre_fenetre/SCU))))) ) ) ) Coord-SCU-Fen_Esp-Pap ) Pour le tester : lancer "test"(defun c:test (/ pt) (setq pt (Get-Coord-SCU-Fen_Esp-Pap)) (if pt (command "_circle" pt 2)) (princ) )[Edité le 25/11/2006 par Bred] [Edité le 25/11/2006 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Bred Posté(e) le 25 novembre 2006 Auteur Posté(e) le 25 novembre 2006 J'ai édité la routine ci-dessous : - J'ai modifié le code pour la selection de la fenêtre (sur une proposition de (gile) ) - Je viens de découvrir la raison du rappel de la variable en fin de routine.... mieux vaut tard que jamais !!! (j'ai pas mal de routine à modifié, moi, maintenant !!!) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 25 novembre 2006 Posté(e) le 25 novembre 2006 Salut, Je ne comprends pas bien ce que tu veux faire, mais la fonction trans permet de traduire des coordonnées dans des systèmes de coordonnées spécifiques à l'espace papier. Par exemple, dans une fenêtre active d'une présentation, on spécifie le centre d'un cercle : (setq cen (getpoint)) On peut traduire les coordonnées de cen dans le système de coordonnées de la fenêtre active de la présentation (Display Coordinates System DCS). Il faut qu'une fenêtre soit toujours active : (setq cen_vp (trans cen 0 2)) Ensuite, de retour dans l'espace papier, on peut traduire ces coordonnées dans le système de coordonnées de l'espace papier : (setq cen_ps (trans cen_vp 2 3)) (command "_.point" "_non" cen_ps) dessine un point dans l'espace papier, au centre du cercle. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 25 novembre 2006 Auteur Posté(e) le 25 novembre 2006 Et bien je vais me suicider !!!... :P En 3 lignes tu flingues toute ma routine... ... Je vais passer un bon dimanche, moi !!! [Edité le 21/12/2006 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 26 novembre 2006 Posté(e) le 26 novembre 2006 Remarque, c'est comme cela que l'on apprend certaines fonctionnalitésMême moi, je n'avais pas vu cette histoire de trans entre eo et ep @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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