sam2009 Posté(e) le 28 octobre 2009 Posté(e) le 28 octobre 2009 :exclam: je m'excuse mais il ya personne qui m'a répondu alors j'ai refait le sujet pour redemander l'aide ! voilà je ne sais pas pourquoi mon programme ce plante :casstet: qand il arrive à ça : " Dim Entite As AcadBlockReference" stp voilà le programme le but est de selectionner tout les attributs qui ce trouve dans le dessin courant et les mettre dans la variable "temp" pour les réutilisés après merci infinnement pour votre aide si précieuse ! ' ---------------------------------------------------'Section 4. Sélection du dessin en cours' ---------------------------------------------------Dim EnTete As BooleanRangee = 1EnTete = FalseIf selection_existe("TEMP") ThenSet Selection = ThisDrawing.SelectionSets("TEMP")Selection.ClearElseSet Selection = ThisDrawing.SelectionSets.Add("TEMP")End If Selection.Select acSelectionSetAll, Codes, Valeurs' ---------------------------------------------------'Section 4. Extraction des attributs.' ---------------------------------------------------Dim Entite As AcadBlockReference For Each Entite In SelectionMatrice = Entite.GetAttributesIf EnTete = False ThenFor Compte = LBound(Matrice) To UBound(Matrice)If StrComp(Matrice(Compte).EntityName, "AcDbAttribute", 1) = 0 ThenFeuille.Cells(Rangee, Compte + 1).Value = Matrice(Compte).TagStringEnd IfNext CompteEnd IfRangee = Rangee + 1 For Compte = LBound(Matrice) To UBound(Matrice)Feuille.Cells(Rangee, Compte + 1).Value = Matrice(Compte).TextStringNext CompteEnTete = True Next ' ---------------------------------------------------'Section 6. effacer la selection "TEMP"' --------------------------------------------------- Public Function selection_existe(strnom As String) As BooleanDim control As Booleancontrol = FalseOn Error Resume NextSet objselection = ThisDrawing.SelectionSets(strnom)If Err ThenErr.ClearSet objselection = ThisDrawing.SelectionSets.Add(strnom)If Not Err Then control = TrueElsecontrol = TrueEnd Ifselection_existe = controlEnd Function
bazoul Posté(e) le 28 octobre 2009 Posté(e) le 28 octobre 2009 J'ai testé et ça ne plante pas a la ligne indiqué.Quel version autocad as tu?Tu veux récupérer tous les attribut dans un liste c'est bien sa? PS: Evite de faire trois sujets sur la meme question ...
sam2009 Posté(e) le 28 octobre 2009 Auteur Posté(e) le 28 octobre 2009 merci pour ta réponse ! enfait j'ai la version 2004 d'autocadoui je veux récupérer tous mes attributs dans une liste merci encore pour l'interêt que tu as donné à mon problème ! nb: j'ai vraiment besoin de ce programme c'est trés urgent merci pour votre aide
bazoul Posté(e) le 29 octobre 2009 Posté(e) le 29 octobre 2009 Alors: ' --------------------------------------------------- 'Section 4. Extraction des attributs. ' --------------------------------------------------- Dim mEntite As AcadBlockReference Dim listofatt() As AcadAttributeReference Dim mMatrice As Variant For Each mEntite In Selection If mEntite.HasAttributes Then Dim matt(1) As String mMatrice = mEntite.GetAttributes For i = 0 To UBound(mMatrice) - 1 ReDim Preserve listofatt(UBound(listofatt) + 1) Set listofatt(UBound(listofatt)) = mMatrice(i) Next i End If Next Je te propose ce qui précède,le résultat est une liste de référence d'attribut.En espérant que cela te contienne. [Edité le 29/10/2009 par bazoul]
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