idjem Posté(e) le 16 juin 2009 Posté(e) le 16 juin 2009 bonjourje 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'aidervoila la solution c'est très simple : Dim a As AcadApplicationDim doc As AcadDocument Set a = AutoCAD.ApplicationCells(2, 2) = a.ActiveDocument.Name ' affiche le nom de fichiernb = a.ActiveDocument.Layouts.Count 'le nbres des présentationFor 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).NameNext i[Edité le 16/6/2009 par idjem] [Edité le 16/6/2009 par idjem]
Tramber Posté(e) le 16 juin 2009 Posté(e) le 16 juin 2009 En lisp tu as la commande (layoutlist)Pratique ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
idjem Posté(e) le 16 juin 2009 Auteur Posté(e) le 16 juin 2009 merci cher ami le problème c'est que j'ai besoin de la liste des présentation dans un fichier excel
Zeks Posté(e) le 16 juin 2009 Posté(e) le 16 juin 2009 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
(gile) Posté(e) le 16 juin 2009 Posté(e) le 16 juin 2009 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 ASCIIComme 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
idjem Posté(e) le 16 juin 2009 Auteur Posté(e) le 16 juin 2009 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ésentationfor i = 1 to nbcells(i,1)= a.ActiveDocument.Layouts(i).NameNext 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
rom1_am Posté(e) le 16 juin 2009 Posté(e) le 16 juin 2009 Bonjour, pour gérer l'ordre des présentations, tu peux utiliser la propriété "Layout.Taborder". _______________________________R.A.Développeur AutoCAD C#.netwww.danialu.fr
idjem Posté(e) le 16 juin 2009 Auteur Posté(e) le 16 juin 2009 merci pour tous j'ai déjà trouver la solution
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