sicnarf Posté(e) le 23 juin 2009 Posté(e) le 23 juin 2009 Bonjour, Je souhaite pouvoir récupérer dans un fichier excel la liste des blocs définis dans un ensemble de fichiers autocad. Pour l'instant je n'ai trouvé des solutions que pour récupérer les blocs insérés dans le dessin... La commande en ligne -bloc (avec ensuite les réponses ? puis *) permet de lister l'ensemble des blocs... mais j'aimerais automatiser le processus pour un ensemble de fichier et récupérer le tout dans un fichier excel ou similaire (cvs...). Merci de votre aide.
sechanbask Posté(e) le 24 juin 2009 Posté(e) le 24 juin 2009 Le plus souvent tout est déjà plus ou moins fait par quelqu'un. Dans mon nettoyeur disponible en open source tu trouveras comment boucler dans la collection des blocs dans le module actions_blocs : ça permet de le renomme en ajoutant un préfixe... à toi d'adapter. Si je peux me permettre un conseille fait un fichier cvs en respectant les standards car si un jour tu changes pour openoffice(même s'il sait lire les cvs mal construit) ou un l'autre logiciel, tu pourrais être gêné. En effet l'exportation en cvs d'EXCEL ne respecte pas les séparateurs. Function modifier_nom_bloc() Dim objBlock As AcadBlock Dim IntN As Integer Dim intJ As Integer Dim strNom_bloc_ini As String Dim strDebut As String Dim strPrefixe As String 10 strModule = "actions_blocs"20 strProcedure = "modifier_nom_bloc" 'si erreur aller dans la partie gestion : 30 On Error GoTo gestion 'Demande à l'utilisateur le nom pour le préfixe du bloc40 strPrefixe = Nparametres.TB_nom_bloc.Text50 If strPrefixe = "" Then 'ne rien faire60 Else 'compter le nombre de lettre du préfixe70 intJ = VBA.Len(strPrefixe) 'faire une boucle dans la collection des blocs80 For Each objBlock In ThisDrawing.Blocks 'test pour savoir si le bloc est un Xref90 If objBlock.IsXRef Then100 Debug.Print "objBlock.Name", objBlock.Name, "objBlock.IsXRef", objBlock.IsXRef 110 Else 120 strNom_bloc_ini = objBlock.Name 'si les 12 permiers caractères du nom du bloc commence par...130 Select Case VBA.Left(strNom_bloc_ini, 12) '"*model_space ou "*paperspace" Case "*Model_Space", "*Paper_Space" 'ne rien faire ce ne sont pas des blocs 'si non140 Case Else 'récupérer le prefixe du bloc de la longueur du préfixe indiqué par l'utilisateur150 strDebut = VBA.Left(strNom_bloc_ini, intJ) 'tester si le bloc possède déjà le préfixe160 If strDebut <> strPrefixe Then 'si erreur lire la ligne suivante170 On Error Resume Next 'Ajouter le préfixe au nom du bloc180 objBlock.Name = strPrefixe & strNom_bloc_ini 'Si un bloc porte dejà ce nom bis190 If Err.Number = "-2145386405" Then 'initialiser la variable pour le suffixe variable200 IntN = 0 'Faire ça jusqu'à ce que ...210 Do 'Effacement de l'enregistrement de l'erreur220 Err.Clear 230 IntN = IntN + 1 'Ajouter le préfixe au nom du bloc + un suffixe incrémentiel pour éviter l'erreur si un bloc porte le nom du nom + le préfixe + intN-1240 objBlock.Name = strPrefixe & strNom_bloc_ini & "_" & IntN '...l'erreur enregistré sous "-2145386405" soit invalidée250 Loop Until Err.Number <> "-2145386405" 260 End If 'Si un bloc porte dejà ce nom bis 270 Else 'DP "ne rien faire"280 End If 'tester si le bloc possède déjà le préfixe 290 End Select 300 End If310 Next objBlock 320 End If 330 Exit Function gestion: 340 Call erreurs.gestion_erreur(Err.Number, Err.Description, strModule, strProcedure, Erl()) End Function [code] ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
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