Aller au contenu

modifier des attribut via excel


gepetto

Messages recommandés

Bonjour,

 

Voila je dois modifier les atttributs de mon cartouches, et pour eviter de devoir ouvrir chaque dessin, j'aurai voulu savoir si il y a moyen, de modifier des attribut avec excel.

 

J'ai deja extrait les attribut avec la commande "extraction des attribut".

 

Le truc ideal, ce serrai de pouvoir reenvoyer le fichier excel dans autocad?

 

Merci de votre aide?

 

Amicalement.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

De mémoire : ATTout pour extraire, ATTIN pour ré-intégrer. Mais je crois qu'il faut installer les Express tools d'abord.

 

Va dans la section "Telechargement" et tu tapes "express tools en Français" pour avoir les Xpress en Français.

 

A ++

"La ligne droite est le plus court chemin entre deux points, à condition que les deux points soient bien en face l'un de l'autre" P. Desproges.

Lien vers le commentaire
Partager sur d’autres sites

hello, apres une longue et fastidieuse recherche, je n'ai pas vraiement trouvée.

 

j'en ai retenu la commande attout et attin, mais ca me crée un fichier TXT, moi j'aurai voulu que ca me fasse ca automatiquement,...

et que ca fonctionne sur autocad2006 et excel 2003

 

Merci de vos réponse

Lien vers le commentaire
Partager sur d’autres sites

L'idéal aurait été vu ce que tu veux faire, que chaque cartouche se rapporte à un objet excel ou de lier à une base.

Mais vu que tu veux absolument passser par des attributs et que tout ça est déjà fait, le seul moyen qu'il te rest c'est le lisp.

Personnellement, le problème est tellement réel que mes projets sont tous sur un et un seul fichier de présentation. Alors c'est beaucoup plus simple d'envoyer un lisp qui modifie ou crée tout ça.

Au lieu d'ailleurs d'utiliser une présentation par page, je dessine une polyligne pour le cadre et un même type ou même phase de projet va être présent dans sa totalité sur une seule feuille.

Il m'arrive d'avoir une feuille avec plusieurs centaines de plans avec chacun plusieurs vues sur l'espace objet.

Et je manoeuvre tout ça dans le détail avec MAXAVCTP (installé sur un boutton) 2 et zoom étendu puis zoom fenêtre (après une recherche pour trouver LE texte de cartouche correspondant AU bon cadre et sélection pour le mettre en évidence) et MAXAVCTP 2+le nombre de vues visibles.

J'impose ce fonctionnement à tous les gars qui travaillent pour et avec moi.

 

Après, à la main on peut toujours faire un recherche-remplacer et sinon avec des lisps on peut tout faire et très vite.

L'avantage plutôt que de se référer à des données externes, c'est d'avoir tout dans le dessin et un même fichier. Il y a pas de confusion, y compris sur des problèmes juridiques.

 

Lien vers le commentaire
Partager sur d’autres sites

salut, g commencé a faire un code vba pour les cartouches sur plusieur fichiers,

sa marche mais pour le rendre plus convial g besoin d'aide.Et désolé pour les imperfections

 

Ya 3 partie une macro pour extraire sur les attribut sur excel selon une mise en forme bien déterminé

Une autre pour choisir les fichier a traiter

et l'autre pour remplir les attribus selon ce qu'on a marqué sur excel sur chaque fichier a traiter

 

maintenant le probléme c que je commence a programer et c un peu fouilli et pas convivial.

sa donne ça:

 

 

 

Dim DrawingFile As String

 

Sub OuvreFichier()

Dim QuelFichier As Variant

QuelFichier = Application.GetOpenFilename("Fichiers AutoCAD,*.dwg", , , , True)

For Ctr = 1 To UBound(QuelFichier)

Cells(1, Ctr) = QuelFichier(Ctr)

Next

End Sub

 

Sub EnvoyerVersAutoCAD()

Dim AcadApp As AutoCAD.AcadApplication

Dim BlocRef As AcadBlockReference

Dim Row, i, Column, f, a, b As Integer

 

Dim SelSet As AutoCAD.AcadSelectionSet

Dim FilterType(0) As Integer

Dim FilterData(0) As Variant

Dim FiltersType, FiltersData As Variant

 

Dim Entity As AcadEntity

 

Dim Attributes As Variant

Dim ColumnExist As Boolean

 

' On lance AutoCAD

Set AcadApp = New AutoCAD.AcadApplication

AcadApp.Visible = True

 

c = 1

While Not IsEmpty(Cells(1, c)) ' On s'arrête quand on tombe sur une cellule fichier vide

'For c = 1 To 100

' On ouvre le fichier dans AutoCAD

AcadApp.Documents.Open (Cells(1, c).Text)

 

 

 

' 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 b = 0 To SelSet.Count - 1

Set Entity = SelSet.Item(b)

 

' 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 le bloc a des attributs...

'If BlocRef.HasAttributes Then

' ... on les récupère

Attributes = BlocRef.GetAttributes

 

Row = 4 ' On commence à la rangée N°4

' On parcourt le tableau

For a = LBound(Attributes) To UBound(Attributes)

' Pour chaque attribut, on cherche une colonne dont l'entête correspond à l'étiquette

' de l'attribut

Column = 3

While Not IsEmpty(Cells(3, Column))

If Cells(3, Column).Text = Attributes(a).TagString Then

Attributes(a).TextString = Cells(Row, Column).Text

End If

Column = Column + 1 ' On passe à la colonne suivante

Wend

Next

 

BlocRef.Update

End If

 

Next

c = c + 1 ' On passe au fichier suivant

Wend

 

 

' On ferme AutoCAD

AcadApp.Quit

 

MsgBox "Les données ont été transférées vers AutoCAD avec succès."

 

End Sub

 

Public Sub ExtraireAttributs()

Dim AcadApp As AutoCAD.AcadApplication

Dim SelSet As AutoCAD.AcadSelectionSet

Dim FilterType(0) As Integer

Dim FilterData(0) As Variant

Dim FiltersType, FiltersData As Variant

 

Dim i, Row, j, Column As Integer

Dim Entity As AcadEntity

Dim BlocRef As AcadBlockReference

Dim Attributes As Variant

Dim ColumnExist As Boolean

 

' Efface toutes les données contenues dans la feuille

Range("1:65536").ClearContents

 

' On lance AutoCAD

Set AcadApp = New AutoCAD.AcadApplication

 

' On remets Excel au premier plan (le lancement d'AutoCAD désactive la fenêtre Excel)

Application.Visible = True

 

' On demande le nom du fichier à ouvrir

Cells(1, 1).Value = Application.GetOpenFilename("Dessins AutoCAD (*.dwg), *.dwg")

 

' Remplissage de l'entête du tableau

Cells(3, 1).Value = "Nom du bloc"

Cells(3, 2).Value = "Handle"

 

' 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, 2).Value = BlocRef.Handle

 

' On les récupére

Attributes = BlocRef.GetAttributes

 

' 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 = 3

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

 

Next ' Attribut suivant

 

Row = Row + 1 ' Ligne suivante

End If

End If

Next

 

' On ferme AutoCAD

AcadApp.Quit

 

MsgBox "Les attributs du dessin " & Cells(1, 1).Text & " ont été extraits avec succès."

End Sub

 

 

 

bon d'accord g pompé sur internet pas mal de choses

mais bon le temps passé est consécant ! surtout pour un débutant.

 

Par contre Je maitrise pas les controles et je shouterai renplacer dans Sub ExtraireAttributs()

selectionner le bloc sur le fichier référence

 

Merci d'avance et je suis preneur d'idée pour améliorer.

 

Lien vers le commentaire
Partager sur d’autres sites

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é