Aller au contenu

[Résolu] Fonction LAYOUTLIST


rebcao

Messages recommandés

Bonjour à Toutes et à Tous,

 

La fonction LAYOUTLIST donne la liste des Présentations, très bien ! Mais cette liste est bêtement classée alphabétiquement !

 

Existe-t-il une fonction qui donne la liste des présentations dans l'ordre réel des onglets ?

 

Je vous remercie.

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Il faut le coder :

(vl-load-com)
(or *acad* (setq *acad* (vlax-get-acad-object)))
(or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
(or *Lays*(setq *Lays*(vla-get-Layouts *acdoc*)))
(setq lipres nil)
(vlax-for i *Lays*
 (if(/=(vla-get-Name i)"Model")
   (setq lipres(cons (vla-get-Name i)lipres ))))
(reverse lipres)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Une autre méthode qui utilise la propriété TabOrder

 

(defun OrderedLayoutList (/ layouts)
 (vl-load-com)
 (setq	layouts	(vla-get-Layouts
	  (vla-get-ActiveDocument (vlax-get-acad-object))
	)
 )
 (vl-sort
   (layoutlist)
   '(lambda (x y)
      (<
 (vla-get-TabOrder (vla-Item layouts x))
 (vla-get-TabOrder (vla-Item layouts y))
      )
    )
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Ou encore, sans "Visual LISP" (fonctionnera aussi sur MAC)

 

(defun OrderedLayoutList (/ dict tab)
 (setq dict (dictsearch (namedobjdict) "ACAD_LAYOUT"))
 (defun tab (name)
   (cdr (assoc 71 (entget (cdadr (member (cons 3 name) dict)))))
 )
 (vl-sort (layoutlist) '(lambda (x y) (< (tab x) (tab y))))
)

 

Ou encore (AutoCAD 2012+):

 

((defun OrderedLayoutList (/ dict tab)
 (setq dict (dictsearch (namedobjdict) "ACAD_LAYOUT"))
 (defun tab (name)
   (getpropertyvalue (cdadr (member (cons 3 name) dict)) "TabOrder")
 )
 (vl-sort (layoutlist) '(lambda (x y) (< (tab x) (tab y))))
)

 

PS : il me semble que la solution proposée par Tramber trie les présentations par ordre de création.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Même si je ne suis pas l'auteur du message je te remercie, (Gile), de cette solution, c'est parfait (comme d'habitude)

Ayant regardé la solution de Tramber, que je remercie à son tour, je ne sais pas si c'est l'ordre de création mais ce n'est pas l'ordre du dessin à coup sûr.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Mes amis, vous savez bien que mon code ne fait que parcourir la collection. Donc que c'est l'ordre de création en effet ;)

Je ne connaissais pas TabOrder et ne me suis pas cassé la tête, comme d'habitude :P

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Une autre manière de faire

(defun onglets(/ lst)
 (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
   (or (eq (vla-get-name lay) "Model")
     (setq lst (cons (cons (vla-get-taborder lay) (vla-get-name lay)) lst))
   )
 )
 (mapcar 'cdr (vl-sort lst '(lambda(a B)(< (car a)(car B)))))
)

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Super, Merci pour toutes ces nombreuses réponses...

 

Je confirme que le source de TRAMBER ne donne pas l'ordre des présentations... C'est un classement alphabétique comme (LAYOUTLIST).

 

Sinon, les solutions de Gilles et Patrick fonctionnent très bien...

 

Même si je le fuis (le MAC), je vais retenir la fonction compatible MAC (ne sait on jamais) !!! Bien que vl-sort c'est pas du VISUAL ?

 

Merci

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Lien vers le commentaire
Partager sur d’autres sites

Je confirme que le source de TRAMBER ne donne pas l'ordre des présentations... C'est un classement alphabétique comme (LAYOUTLIST).

Exact !

Surprise totale de ma part car je pensais à l'ordre de la collection sans imaginer qu'elle était classée alpha (anti-alpha puisque je mets un reverse).

Ma fonction revient à (layoutlist) exactement.

Manque de pratique sur les collections ces dernières années, que voulez-vous ?

Dsl

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Bien que vl-sort c'est pas du VISUAL ?

Tout dépend de ce qu'on met dans Visual LISP (tout ce qui suis est arrivé en même temps avec "Visual LISP").

  • l'éditeur, je ne sais pas s'il existe dans AutoCAD MAC mais je ne vois pas d'incompatibilité majeure ;
  • les fonctions vl-* a priori juste de nouvelles fonction LISP (la plupart avaient été définies en LISP par les pionniers), pas d'incompatibilité avec MAC excepté les fonction vl-registry* (pas de base de registre sur MAC) ;
  • les fonctions vla-* et vlax-* qui permettent l'accès à l'interface COM/ActiveX spécifique à Windows (donc incompatibles MAC) ;
  • les fonctions vlr-* (reacteurs) qui, je crois, ne sont pas accessibles avec AutoCAD MAC.

Si des utilisateurs de AutoCAD MAC peuvent confirmer ou infirmer...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é