Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

La demande n'étant pas très détaillée, j'ai fait comme je le sentais

 

(defun c:Lay2tbl (/ lst len col ins)
 (vl-load-com)
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
 (setq lst (layoutlist))
 (setq len (length lst))
 (if (and
       (setq col (getint "\nNombre de colonnes: "))
       (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))
     )
   (progn
     (setq lst (layoutlist)
           len (length lst)
           tbl (vla-addtable
                 (vla-get-ModelSpace *acdoc*)
                 (vlax-3d-point ins)
                 (1+ len)
                 col
                 9                              ; Hauteur cellule
                 50                              ; Largeur cellule
               )
           row 0
     )
     (vla-put-VertCellMargin tbl 1.5)            ; Marge verticale
     (vla-put-TitleSuppressed tbl :vlax-false)
     (vla-put-HeaderSuppressed tbl :vlax-true)
     (foreach p lst
       (vla-SetText tbl (setq row (1+ row)) 0 p)
     )
   )
 )
 (princ)
)

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

Posté(e)

En fait, je travail en format A3 et je fais des carnets de plans comportant un nombre important de feuillets.

 

Le nom de l'onglet est récupéré dans mon cartouche pour remplir le nom du plan, la numérotation du plan, et avec une formule en diesel, j'arrive à remplir des champs dans mes cartouche en automatique.

 

Comme mes carnets peuvent avoir une grande quantité de plans (et donc d'onglets), jusqu'a 70, je voudrais remplir ma liste de plan automatiquement par une routine qui récupèrerait le nom de chaque onglet.

Posté(e)

HELLO

 

cool le tableau gile

 

est ce que l'on pourrait avoir

en colonne 2 le nom du peripherique de tracage qui va avec la presentation

et colonne 3 la taille du trace qui corespont

 

a+

 

bonne soirée

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Un truc comme ça ?

 

EDIT : nouvelle version

(defun c:Lay2tbl (/ lst len ins lay)
 (vl-load-com)
 (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))))
 (setq layouts (vla-get-Layouts *acdoc*))
 (setq lst (layoutlist))
 (setq len (length lst))
 (if (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))
   (progn
     (setq lst (layoutlist)
           len (length lst)
           tbl (vla-addtable
                 (vla-get-ModelSpace *acdoc*)
                 (vlax-3d-point ins)
                 (1+ len)
                 3
                 9 ;_ Hauteur cellule
                 50 ;_ Largeur cellule
               )
           row 0
     )
     (vla-put-VertCellMargin tbl 1.5) ;_ Marge verticale
     (vla-put-TitleSuppressed tbl :vlax-false)
     (vla-put-HeaderSuppressed tbl :vlax-true)
     (foreach p lst
       (setq lay (vla-item layouts p))
       (vla-SetText tbl (setq row (1+ row)) 0 p)
       (vla-SetText tbl row 1 (vla-get-ConfigName lay))
       (vla-SetText tbl
                    row
                    2
                    ((lambda (cmn / lmn)
                       (if (vl-catch-all-error-p
                             (setq
                               lmn (vl-catch-all-apply 'vla-GetLocaleMediaName
                                                       (list lay cmn)
                                   )
                             )
                           )
                         cmn
                         lmn
                       )
                     )
                      (vla-get-CanonicalMediaName lay)
                    )
       )
       (vla-SetCellAlignment tbl row 0 5)
       (vla-SetCellAlignment tbl row 1 5)
       (vla-SetCellAlignment tbl row 2 5)
     )
   )
 )
 (princ)
)

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

Posté(e)

HELLO GILE

 

 

PETIT SOUCI

 

j'ai des onglets formater pdf : la il me fait bien la liste nom, traceur.pc3, taille papier

 

des qu'il passe a un onglet formater en PLT il donne le nom et le traceur .pc3 mais il bloque sur la taille papier

 

bizarre :casstet:

 

a+

 

phil

 

 

 Commande: Lay2tbl
Point d'insertion: *Annuler*
Erreur Automation Entrée incorrecte

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

HELLO GILE

 

YYessssss ca marche

 

 (defun c:tabp  (/ lst len ins lay)
 (vl-load-com)
 (or *acdoc* (setq *acdoc* (vla-get-activedocument (vlax-get-acad-object))))
 (setq layouts (vla-get-layouts *acdoc*))
 (setq lst (layoutlist))
 (setq len (length lst))
 (if (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))
   (progn
     (setq lst	(layoutlist)
    len	(length lst)
    tbl	(vla-addtable
	  (vla-get-modelspace *acdoc*)
	  (vlax-3d-point ins)
	  (1+ len)
	  4
	  9 ;_ Hauteur cellule
	  150 ;_ Largeur cellule
	  )
    row	0
    )
     (vla-put-vertcellmargin tbl 1.5) ;_ Marge verticale
     (vla-put-titlesuppressed tbl :vlax-false)
     (vla-put-headersuppressed tbl :vlax-true)





     (foreach p  lst

(setq lay (vla-item layouts p))
(vla-settext tbl (setq row (1+ row)) 0 p)
(vla-settext tbl row 1 (vla-get-taborder lay))
(vla-settext tbl row 2 (vla-get-configname lay))
(vla-settext
  tbl
  row
  3
  ((lambda (cmn / lmn)
     (if (vl-catch-all-error-p
	   (setq
	     lmn (vl-catch-all-apply
		   'vla-getlocalemedianame
		   (list lay cmn)
		   )
	     )
	   )
       cmn
       lmn
       )
     )

    (if	(wcmatch (vla-get-canonicalmedianame lay) "UserDefinedMetric*")
      (progn
	(setq long (strlen (vla-get-canonicalmedianame lay)))

	(substr
	  (vla-get-canonicalmedianame lay)
	  20
	  (- long 22))
	)
      (vla-get-canonicalmedianame lay)
      )
    )
  )



(vla-setcellalignment tbl row 0 5)
(vla-setcellalignment tbl row 1 5)
(vla-setcellalignment tbl row 2 5)
(vla-setcellalignment tbl row 3 5)
)
     )
   )
 (princ)
 )

 

 

merci gile

 

phil[Edité le 25/8/2009 par PHILPHIL]

 

[Edité le 25/8/2009 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

l'idéal serait de trier la liste des presentations suivant "TABORDER"

 

mais la je coince

 

phil

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

hello

 

bon c'est pas tres comment dire "academique" comme code

 

mais ca marche

 

merci gile pour les 97% de code fournit au dessus

 

a+

 

phil

 

bon petit test sur un fichier de 7.4 mega 192 presentations ( maxi possible de toutes facon 255 )

 

8 minutes 40 seconde quand meme pour faire le tableau record batu de LENTEURRRRR genial

 

 

 

 (defun c:tabp  (/ lst len ins lay)
 (vl-load-com)
 (or *acdoc* (setq *acdoc* (vla-get-activedocument (vlax-get-acad-object))))
 (setq layouts (vla-get-layouts *acdoc*))
 (setq lst (layoutlist))
 (setq len (length lst))

 (if (setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))
   (progn
     (setq lst	(layoutlist)
    len	(length lst)
    tbl	(vla-addtable
	  (vla-get-modelspace *acdoc*)
	  (vlax-3d-point ins)
	  (1+ len)
	  4
	  9 ;_ Hauteur cellule
	  150 ;_ Largeur cellule
	  )
    row	0
    )
     (vla-put-vertcellmargin tbl 1.5) ;_ Marge verticale
     (vla-put-titlesuppressed tbl :vlax-false)
     (vla-put-headersuppressed tbl :vlax-true)




     (setq liste1 nil)
     (foreach p  lst
(setq lay (vla-item layouts p))
(setq liste1 (cons (list (vla-get-name lay) (vla-get-taborder lay)) liste1))
)

     (setq liste2 (vl-sort liste1 (function (lambda (e1 e2) (< (cadr e1) (cadr e2))))))

     (setq liste3 nil)
     (setq len (1- len))
     (foreach p  liste2
(setq liste3 (cons (car (nth len liste2)) liste3))
(setq len (1- len))
)





     (foreach p  liste3
;;lst
(setq lay (vla-item layouts p))
(vla-settext tbl (setq row (1+ row)) 0 p)
(vla-settext tbl row 1 (vla-get-taborder lay))
(vla-settext tbl row 2 (vla-get-configname lay))
(vla-settext
  tbl
  row
  3
  ((lambda (cmn / lmn)
     (if (vl-catch-all-error-p
	   (setq
	     lmn (vl-catch-all-apply
		   'vla-getlocalemedianame
		   (list lay cmn)
		   )
	     )
	   )
       cmn
       lmn
       )
     )

    (if	(wcmatch (vla-get-canonicalmedianame lay) "UserDefinedMetric*")
      (progn
	(setq long (strlen (vla-get-canonicalmedianame lay)))

	(substr
	  (vla-get-canonicalmedianame lay)
	  20
	  (- long 22))
	)
      (vla-get-canonicalmedianame lay)
      )
    )
  )
(vla-setcellalignment tbl row 0 5)
(vla-setcellalignment tbl row 1 5)
(vla-setcellalignment tbl row 2 5)
(vla-setcellalignment tbl row 3 5)
)
     )
   )
 (princ)
 )

 

[Edité le 26/8/2009 par PHILPHIL]

FREELANCE

Autodesk Architecture 2025 sous windows 11 64

REVIT

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Posté(e)

Salut

 

Voici une routine dont je me sers pour avoir les onglets dans l'ordre

 

(defun liste_layouts(/ n lst liste_lay)
 (setq n 1)
 (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object)))
   (setq lst (cons (list (vla-get-taborder lay) (vla-get-name lay)) lst))
 )
 (while (assoc n lst)
   (setq liste_lay (cons (cadr (assoc n lst)) liste_lay)
  n (1+ n)
   )
 )
 (reverse liste_lay )
)

 

@+

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

Posté(e)

Salut,

 

Pour la liste des présentation dans l'ordre, je proposais ça ici :

(vlax-for l (vla-get-layouts
      (vla-get-ActiveDocument (vlax-get-acad-object))
    )
 (setq lst (cons (cons (vla-get-TabOrder l) (vla-get-Name l)) lst))
)
(setq
 lst (cdr
(mapcar	'cdr
	(vl-sort lst '(lambda (x1 x2) (	)
     )
)

 

Pour supprimer "UserDefinedMetric", regarde la fonction vl-string-subst :

(vl-string-subst "" "UserDefinedMetric" (vla-get-CanonicalMediaName lay))

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

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é