Aller au contenu

comment extraire certains attributs et pas tous !!??


Messages recommandés

Posté(e)

salut, à vous tous ,

 

en fait j'ai un fichier qui contien que des attributs , et je veux faire un extraction d'attribut vers excel mais je veux extraire que les elements important !

 

je m'explique c'est un dessin electrique, ok

 

sur ce dernier il ya par exemple des disjoncteurs et des contacteurs etc...

 

et je doit faire une liste materiel pour le service achat .

 

et comme parfois on peut représenter le détail de ces equipements electriques

moi je veux juste qu'il mextrait le nom du disjoncteur par exemple + le calibre

c'est tous et il me met tous ça sur une liste dans excel...

 

merci de votre aide

 

amicalement

doua

Posté(e)

Merci boris,

 

pour la commande eattext je la connais !

 

mais en fait je veux un truc automatique !!

 

j'ai déja un programme mais ce dernier m'extrait toutes les attributs sans exception... :casstet:

 

svp, s'il ya qlq qui peut aider voila mon programme si vous avez une idée!!!??? :(

 


Private Sub bt_fichier_Click()

'gestion des erreurs
On Error GoTo fin

'si liste n'est pas vide alors
If liste_info.ListCount > 0 Then

nom_fichier = ThisDrawing.GetVariable("dwgname")
nom_fichier = Left(nom_fichier, Len(nom_fichier) - 4)

'gestion de l'objet commondialog (fenêtre fichier)
CommonDialog1.InitDir = ThisDrawing.GetVariable("dwgprefix")
CommonDialog1.FileName = nom_fichier
CommonDialog1.ShowOpen

nom_fichier = CommonDialog1.FileName

If nom_fichier = "" Then
Exit Sub
End If

   'création du fichier de données
   par défaut TXT et dans chemin du fichier DWG
   Open nom_fichier For Output As #1

   'en tête du fichier
   Print #1, "Liste des attributs de blocs"
   Print #1, vbCr
   Print #1, ThisDrawing.GetVariable("dwgprefix") & ThisDrawing.GetVariable("dwgname")
   Print #1, vbCr
   Print #1, vbCr

   
       ' ajoute les informations
       For i = 0 To liste_info.ListCount - 1
       Print #1, liste_info.List(i)
       Next i

   Close #1

msgBox "Fichier bien enregistré."

Else
  MsgBox "La liste est vide."
End If

fin:

End Sub

Private Sub bt_lancer_Click()

' declaration des variables
Dim element As AcadObject
Dim tableau_attribut As Variant
Dim compteur_bloc As Integer
Dim etiquette_attribut As String
Dim valeur_attribut As String
Dim i As Integer
Dim pt_insertion As Variant
Dim rotation As Single

' on vide la liste si elle contient des infos
liste_info.Clear

'on affiche une boite à message pour faire patienter
Traitement_info.Visible = True
Traitement_info.Text = "Traitement en cours...Patience."

' on met un timer sinon la boite à message
' ne s'affiche pas
PauseTime = 5
   Start = Timer
   Do While Timer < Start + PauseTime
       DoEvents
   Loop
   
'initialisation des variables
compteur_bloc = 0
nb_dec = ThisDrawing.GetVariable("luprec")

' boucle sur les tous les objets

For Each element In ThisDrawing.ModelSpace

   ' si l'objet est un bloc alors
   If StrComp(element.ObjectName, "AcDbBlockReference", 1) = 0 Then
   
       ' si l'objet bloc contient des attributs alors
       If element.HasAttributes Then
       
       compteur_bloc = compteur_bloc + 1
       
       ' stocke les info dans le tableau
       tableau_attribut = element.GetAttributes
           
           ' ajoute dans la liste le nom du bloc
           liste_info.AddItem "***** " & element.Name & " *****"
           liste_info.AddItem "------------------------------"
           
           ' passe en revu tous les attributs du bloc
           For i = LBound(tableau_attribut) To UBound(tableau_attribut)
           
               
               'ajoute dans la liste le nom de l'étiquette de l'attribut
               ' ainsi que la valeur de l'attribut
               liste_info.AddItem "Etiq  : " & tableau_attribut(i).TagString
               liste_info.AddItem "Valeur: " & tableau_attribut(i).TextString
               
           Next i
           
           
          'saut de ligne entre chaque bloc
          liste_info.AddItem " "
       End If
   End If
   
   
Next element

' on rend invisible la boite à message
Traitement_info.Visible = False


' inscription du nombre de blocs dans la liste
info_compteur = compteur_bloc

End Sub

 

merci de votre précieuse aide ! :) :D

 

 

Posté(e)

voilà mon programme pour extraction d'attribut mais si qlq à une idée pour ne selectionnée que les attributs qui nous intresses puis les mettre sous forme d'un tabeau dans un fichier excel

 

je vous remercie de votre présieuse aide !!

 

Private Sub bt_fichier_Click()
'gestion des erreurs
on Error GoTo fin
'si liste n'est pas vide alors
If liste_info.ListCount > 0 Then
nom_fichier = ThisDrawing.GetVariable("dwgname")
nom_fichier = Left(nom_fichier, Len(nom_fichier) - 4)
'gestion de l'objet commondialog (fenêtre fichier)
CommonDialog1.InitDir = ThisDrawing.GetVariable("dwgprefix")
CommonDialog1.FileName = nom_fichier
CommonDialog1.ShowOpen
nom_fichier = CommonDialog1.FileName
If nom_fichier = "" Then
Exit Sub
End If
   'création du fichier de données
   par défaut TXT et dans chemin du fichier DWG
   Open nom_fichier For Output As #1
   'en tête du fichier
   Print #1, "Liste des attributs de blocs"
   Print #1, vbCr
   Print #1, ThisDrawing.GetVariable("dwgprefix") & ThisDrawing.GetVariable("dwgname")
   Print #1, vbCr
  Print #1, vbCr 
       ' ajoute les informations
       For i = 0 To liste_info.ListCount - 1
       Print #1, liste_info.List(i)
       Next i
   Close #1
msgBox "Fichier bien enregistré."
Else
  MsgBox "La liste est vide."
End If
fin:
End Sub
Private Sub bt_lancer_Click()
' declaration des variables
Dim element As AcadObject
Dim tableau_attribut As Variant
Dim compteur_bloc As Integer
Dim etiquette_attribut As String
Dim valeur_attribut As String
Dim i As Integer
Dim pt_insertion As Variant
Dim rotation As Single
' on vide la liste si elle contient des infos
liste_info.Clear
'on affiche une boite à message pour faire patienter
Traitement_info.Visible = True
Traitement_info.Text = "Traitement en cours...Patience."
' on met un timer sinon la boite à message
' ne s'affiche pas
PauseTime = 5
   Start = Timer
   Do While Timer < Start + PauseTime
       DoEvents
   Loop    
'initialisation des variables
compteur_bloc = 0
nb_dec = ThisDrawing.GetVariable("luprec")
' boucle sur les tous les objets
For Each element In ThisDrawing.ModelSpace
   ' si l'objet est un bloc alors
   If StrComp(element.ObjectName, "AcDbBlockReference", 1) = 0 Then    
       ' si l'objet bloc contient des attributs alors
       If element.HasAttributes Then        
       compteur_bloc = compteur_bloc + 1        
       ' stocke les info dans le tableau
       tableau_attribut = element.GetAttributes            
           ' ajoute dans la liste le nom du bloc
           liste_info.AddItem "***** " & element.Name & " *****"
           liste_info.AddItem "------------------------------"            
           ' passe en revu tous les attributs du bloc
           For i = LBound(tableau_attribut) To UBound(tableau_attribut)                           
               'ajoute dans la liste le nom de l'étiquette de l'attribut
               ' ainsi que la valeur de l'attribut
               liste_info.AddItem "Etiq  : " & tableau_attribut(i).TagString
               liste_info.AddItem "Valeur: " & tableau_attribut(i).TextString                
           Next i      
           'saut de ligne entre chaque bloc
          liste_info.AddItem " "
       End If
   End If 
next element
' on rend invisible la boite à message
Traitement_info.Visible = False
' inscription du nombre de blocs dans la liste
info_compteur = compteur_bloc
End Sub

 

merci

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é