Aller au contenu

liste des présentation


Messages recommandés

Posté(e)

bonjour

je vient de commencer la programmation sous autocad (lisp & VBA)

je veut faire un macro qui me permet de lister dans un fichier excel la liste des présentation

et si possible de les modifier et les réexporte dans le fichier autocad

pouvez vous m'aidez S-V-P

et merci

 

----------------------------------------------------------------------------------------------------------------------

merci a tous ceux qui ont aidé et essayé de m'aider

voila la solution c'est très simple :

 

Dim a As AcadApplication

Dim doc As AcadDocument

 

Set a = AutoCAD.Application

Cells(2, 2) = a.ActiveDocument.Name ' affiche le nom de fichier

nb = a.ActiveDocument.Layouts.Count 'le nbres des présentation

For i = 0 To nb -1

order = a.ActiveDocument.Layouts(i).TabOrder 'donne l'ordre de la présentation

Cells(order + 3, 1) = a.ActiveDocument.Layouts(i).Name

Next i

[Edité le 16/6/2009 par idjem]

 

[Edité le 16/6/2009 par idjem]

Posté(e)

En lisp tu as la commande (layoutlist)

Pratique ;)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

importe la référence EXCEL dans VBA autocad se qui te permettra de trouver des nouvelles fonctions pour créer un nouveau fichier excel et d'y rentrer se que tu veux où tu veux.

 

Sur internet il y a pas mal d'exemple d'utilisation entre autocad et excel

Posté(e)

Salut,

 

Tout d'abord, je crains qu'il ne soit pas très judicieux d'apprendre le VBA aujourd'hui, Autodesk ne supportera ce langage que jusqu'à la version 2012.

 

En LISP accéder à Excel en lecture et en écriture est possible, mais pas très facile (surtout si tu débutes) par contre tu peux plus facilement lire et écrire des fichiers ASCII (.txt ou .csv) que tu peux ouvrir et manipuler avec Excel.

 

Générer un fichier ASCII

Comme dit Tramber, avec layoutlist tu récupères facilement la liste des présentations.

Pour générer un fichier à partir de cette liste regarde les fonction LISP : open, write-line, close. Pour parcourir la liste, le fonction foreach.

 

Pour modifier les noms de présentation depuis un fichier texte.

Là ça commence à se compliquer un peu.

Lire le fichier, est relativement simple : open, une boucle while avec read-line et close.

Mais j'imagine qu'il aura alors 2 colonnes symbolisées par un séparateur dans le fichier texte (virgule ou point-virgule), chaque ligne étant du type "ancien_nom,nouveau_nom".

Il faut donc, pour chaque ligne :

- séparer l'ancien nom du nouveau nom (substr, vl-string-position)

- évaluer si l'ancien nom correspond bien à une présentation existante (if, member, layoutlist)

- changer le nom de la présentation, et c'est là qu'à mon avis ça devient plus difficile pour un débutant. Les présentations sont stockées dans le dictionnaire ACAD_LAYOUT (dictsearch, namedobjdict) et on peut en modifier les données DXF avec AutoLISP, mais ça suppose de manipuler des listes d'association (entget, cdr, assoc, member, cons, subst, entmod).

Ça serait peut-être moins difficile avec Visual LISP (extension d'AutoLISP), mais ça suppose de connaître un peu comment se structure ce langage.

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

Posté(e)

je vient de trouver une solution

 

Dim a As AcadApplication

'a.ActiveDocument.ActiveLayout.Name => le nom de la présentation active

'ou bien

'a.ActiveDocument.Layouts(i).Name avec i indice

 

nb = a.ActiveDocument.Layouts.Count ' le nbres des présentation

for i = 1 to nb

cells(i,1)= a.ActiveDocument.Layouts(i).Name

Next i

 

le seul problème maintenant c'est que l'ordre des présentation est celui de leurs création non pas comme l'ordre dans le fichier 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é