Extraction attributs sur Autocad 2009 vers Excel 2007
manuel33
Messages postés2Date d'inscriptionmardi 10 novembre 2009StatutMembreDernière intervention10 septembre 2010
-
9 sept. 2010 à 10:08
ramy01 -
11 mai 2013 à 21:32
Bonjour,
Je suis plus que débutant en prog VBA mais, j'ai trouvé une extraction d'attributs sur ce site qui fonction avec autocad 2004 et excel 2003.
Mais aujourd'hui, avec Autocad 2009 et excel 2007 cela ne fonctionne plus.
la commande Attributes = BlocRef.GetAttributes ne permet pas de trouver les attributs
Je pense que c'est lié à Autocad qui après la 2004 permet de faire des blocs dynamiques...
En terme de Référence je pense avoir les bonnes.
Si quelqu'un peut m'aider,...Help
Si besoin emmanuel.gaugue@gmail.com
Merci pour votre aide
Manu
ci-joint un extrait du code
' On ouvre le fichier dans AutoCAD
AcadApp.Documents.Open (Cells(1, 1).Text)
Row = 4 ' 1ère ligne du tableau
' On crée un jeu de sélection
Set SelSet = AcadApp.ActiveDocument.SelectionSets.Add("SELSET")
' On prépare un filtre de sélection sur les insertions de bloc
FilterType(0) = 0
FilterData(0) = "INSERT"
FiltersType = FilterType
FiltersData = FilterData
' Sélection des entités
SelSet.Select acSelectionSetAll, , , FiltersType, FiltersData
' On balaye le jeu de sélection
For i = 0 To SelSet.Count - 1
Set Entity = SelSet.Item(i)
' Si l'objet est une insertion de bloc
If Entity.ObjectName = "AcDbBlockReference" Then
' On précise le type de l'objet pour pouvoir accéder à ses propriétés et
' ses méthodes spécifiques
Set BlocRef = Entity
' Si il a des attributs
If BlocRef.HasAttributes Then
Cells(Row, 1).Value = "'" & BlocRef.Name
Cells(Row, 3).Value = "'" & BlocRef.Layer
Cells(Row, 2).Value = "'" & BlocRef.Handle
Cells(Row, 4).Value = "'" & BlocRef.InsertionPoint(0)
Cells(Row, 5).Value = "'" & BlocRef.InsertionPoint(1)
Cells(Row, 6).Value = "'" & BlocRef.InsertionPoint(2)
' On les récupére
Attributes = BlocRef.GetAttributes
MsgBox Attributes
' On parcourt le tableau
For j = LBound(Attributes) To UBound(Attributes)
' On recherche si une colonne existe déjà pour cette étiquette d'attribut
Column = 7
ColumnExist = False
While Not IsEmpty(Cells(3, Column))
If Cells(3, Column).Text = Attributes(j).TagString Then
' Une colonne existe, on la remplit avec la valeur de l'atribut
Cells(Row, Column).Value = Attributes(j).TextString
ColumnExist = True
End If
Column = Column + 1 ' On passe à la colonne suivante
Wend
If Not ColumnExist Then
' Aucune colonne n'existe, on en crée une et on la remplit
Cells(3, Column).Value = Attributes(j).TagString
Cells(Row, Column).Value = Attributes(j).TextString
End If
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 9 sept. 2010 à 11:09
regardes du coté des exemples autocad
1 depuis excel récupérer les attributs des blocs autocad
C:\Program Files\AutoCAD 2008\Sample\ActiveX\ExtAttr
2 la meme chose depuis autocad vers excel
C:\Program Files\AutoCAD 2008\Sample\VBA\ExcelLink.dvb
ces deux exemples sont inchangés depuis la version 2000 d'autocad (premiere version à intégrer le VBA)
personellement j'utilise la deuxieme légèrement modifiée pour
améliorer la vitesse d'exécution quand le dessin contient un grand nombre de blocs
j'utilise la même macro avec autocad 2010 sans aucun probleme
de meme la version d'excel est indifférente
je n'utilise pas excel 2007 car je trouve que les rubans sont une "sombre merde" mais des collègues l'ont et n'ont pas de probleme
manuel33
Messages postés2Date d'inscriptionmardi 10 novembre 2009StatutMembreDernière intervention10 septembre 2010 10 sept. 2010 à 14:39
Merci pour ta réponse, mais mes exemples sont identique en 2004 et 2009
En fait la macro se déroule normalement mais lorsqu'il tombe sur la commande
Attributes = BlocRef.GetAttributes
Il ne trouve pas d'attributs ou il ne les analyse pas bien.
En fait il ne remplie pas "Blocref". Je ne sais pas si cela vient de la commande d'ouverture, ou de recherche voir de filtrage mais en fait la variable BlocRef reste vide.
Je me demande si mes variables sont bien définie maintenant qu'autocad est capapble de faure des blocs dynamiques
gudulle99
Messages postés8Date d'inscriptionmercredi 1 septembre 2010StatutMembreDernière intervention30 septembre 2010 18 sept. 2010 à 11:45
pour avoir "chipoter" dans autocad
j'ai eu pas mal de pb
simplement parce que je passais d'un verson FR a une version GB et inversement
et aussi parce que certaine variable on evolueais
avant la réponse été Yes ou Non
maintenant elle devient 0 , 1 , 2 etcc...
tu as aussi la cmd SDI de autocad qui dois etre a 1 ( un seul plan d'ouvert a la fois ) pour toi extraire un macro