glopri Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Bonjour Je souhaite effectuer une translation (pan) et rotation (dview) dans plusieurs fenetres sur une même présentation.Au final, je traiterai plusieurs présentations ! J'arrive à faire la boucle qui traite l'ensemble des présentations.J'arrive aussi à récupérer une liste de l'ensemble des fenetres "Actives".Mais lorsque je veux traiter, fenetre par fenetre (mspace+pan+dview+pspace), je bloque sur le traitement automatique du choix des fenetres avec la variable CVPORT qui lorsque l'Id de la fentre est > à 1 ...... erreur !! Est-ce que qu'elqu'un aurait une idée ? Merci
Bred Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Salut,Ne pourrais-tu pas poster ton code afin que l'on puisse voir ton niveau pour savoir ce que nous devons te proposer pour que tu puisses comprendre stp ?Autolisp ? ActiveX ? ... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
glopri Posté(e) le 8 juillet 2008 Auteur Posté(e) le 8 juillet 2008 Oui bien surJe developpe en Lisp, mais je suis débutant ...Voici le code de départ ! (Defun C:transvue (/ temp THISTAB VPLST VPS nblay llay nbvue listvue) (setq *old1* (getvar "cmdecho")) (setq *old2* (getvar "LAYOUTREGENCTL")) (setvar "cmdecho" 0) (setvar "LAYOUTREGENCTL" 0) (setq THISTAB (getvar "CTAB")) (setq nblay (lengthlist (setq llay (layoutlist)))) (setq a 0) (while (< a nblay) (progn (setvar "CTAB" (nth a llay)) (setq VPLST (ssget "x" (list (cons 0 "viewport") ;(cons 68 1) (cons 410 (nth a llay))))) (setq nbvue (lengthlist (setq listvue (sset_liste VPLST)))) (setq b 0) (if listvue (while (< b nbvue) (if (and (/= (cdr (assoc 68 (entget (nth b listvue)))) -1) (/= (cdr (assoc 68 (entget (nth b listvue)))) 0) ) (progn (setvar "CVPORT" (cdr (assoc 69 (entget (nth b listvue))))) (command "_.MSPACE") (command "_.UCS" "_W") (command "-pan" (list 0 0 0) (list -617592.5171 -144913.5211 0)) (command "_.DVIEW" "" "_TW" -5 "") (command "_.PSPACE") ) ) (setq b (+ b 1)) ) ) (setq vplst nil) (setq nbvue nil) (setq a (+ a 1)) ) ) (setvar "CTAB" THISTAB) (RestaureEnv) ; Appel à la procédure de restauration)
Bred Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Re,Je me rappel avoir recontré ce problème de modification de CVPORT impossible... Essaye en activant d'abord la fenêtre, puis en modifiant cvport ensuite (si je me souviens bien...) (command "_.MSPACE") (setvar "CVPORT" (cdr (assoc 69 (entget (nth b listvue))))) PS :Je vois que tu utilises des routine à toi.Je suis intrigué par "lengthlist"...Tu m'expliques sont utilité ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
glopr Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Pour Lenghtlist, juste une routine pour calculer le nombre d'élements dans une liste formée d'entité !! cette liste est d'alleurs formée par le SSET_LISTE qui à partir du jeu de selection de SSGET, ressort l'ensemble des entité par une liste de noms ! Je vais essayer en activant d'abord une fenêtre .. puis d'activer les autres fenetres par leur ID et donc un CVPORT ... 2 ou 3 ou 4 !!
Bred Posté(e) le 8 juillet 2008 Posté(e) le 8 juillet 2008 Re,Pour Lenghtlist, juste une routine pour calculer le nombre d'élements dans une liste formée d'entité !!Va voir dans l'aide la fonction length (et tant que t'y est, sslength) à partir du jeu de selection de SSGET, ressort l'ensemble des entité par une liste de noms ! Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
glopri Posté(e) le 9 juillet 2008 Auteur Posté(e) le 9 juillet 2008 voici les codes des 2 fonctions : ;*********************************************************; LENGTHLIST ; calcul du nombre d'éléments d'une liste;---------------------------------------------------------(defun LENGTHLIST (liste / nbre elt) (setq nbre 0) (if (= (type liste) 'LIST) (foreach elt liste (setq nbre (1+ nbre))) ) nbre) ;*****************************************************************************; SSET_LISTE; Retourne une liste formée des nom d'entité contenus dans un jeux de selection;------------------------------------------------------------------------------(defun SSET_LISTE (sset / liste n ent) (setq liste nil) (setq n 0) (if (not (eq sset nil)) (progn (while (< n (sslength sset)) (setq ent (ssname sset n)) (setq liste (cons ent liste)) (setq n (+ n 1)) ) ) ) liste)
Bred Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Re,As-tu regarder dans l'aide du développeur les fonctions que je te donnes plus haut ?... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
glopri Posté(e) le 9 juillet 2008 Auteur Posté(e) le 9 juillet 2008 Il est vrai que cela donne le même résultat !!Elles ont du fonctionner pour un besoin specifique et il y longtemps !!Merci pour l'info ! Concernant le CVPORT .... toujours le même probleme !! impossible de changer son ID !
Bred Posté(e) le 9 juillet 2008 Posté(e) le 9 juillet 2008 Re, Test cela ci-dessous.Je t'ai re-écris ton lisp en gardant tes (command... , mais en changeant la logique de traitement, afin de te montrer l'utilisation de certaines fonctions, et d'une certaines manière pour réaliser des boucles (il y en a d'autres...) Si tu as besoin d'explication, n'hésite pas. (Defun C:transvue (/ FEN I LST-LAY THISTAB) (setq lst-lay (layoutlist) THISTAB (getvar "CTAB")) (repeat (setq i (length lst-lay)) (setvar "CTAB" (nth (setq i (1- i)) lst-lay)) (setq fen (vports)) (foreach n fen (if (not (equal (car n) 1)) (progn (command "_.MSPACE") (setvar "CVPORT" (car n)) (command "_.UCS" "_W") (command "-pan" (list 0 0 0) (list -617592.5171 -144913.5211 0)) (command "_.DVIEW" "" "_TW" -5 "") (command "_.PSPACE") ) ) ) ) (setvar "CTAB" THISTAB) (princ) ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
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