Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
AutoCAD et VBA
16 mars 2008

Sélection de blocs à partir de leurs noms

Il est souvent intéressant de pouvoir sélectionner les blocs d'un dessin par exemple pour exporter leurs attributs sur Excel. Voici un exemple qui permet de sélectionner tous les blocs s'appelant "TOTO" sur l'espace objet d'un dessin :


Option Explicit 'En indiquant cela, on est sûr de devoir déclarer toutes les variables

Private Sub SélectionDeBlocs()
Dim sset As AcadSelectionSet 'Déclaration du jeu de sélection
Dim gpCode(2) As Integer 'Déclaration d'une variable tableau avec 3 lignes car on a 3 critères de sélection
Dim dataValue(2) As Variant 'Déclaration d'une variable tableau correspondant aux paramètres du tableau gpcode
Dim groupCode As Variant
Dim dataCode As Variant

'Creation du selectionset "JeuSel"
Set sset = ThisDrawing.SelectionSets.Add("JeuSel")


'Sélection de bloc(s) d'après son nom :
'Le fait de faire des tableaux agit comme une fonction ET
'Sélection : BLOCS ET NOM="nomBloc" ET ESPACE=Objet
'= sélection 0 ("INSERT") ET 2 ("TOTO") ET 67 (0):

gpCode(0) = 0 'Type de sélection : 0= entité
dataValue(0) = "INSERT" 'Type d'entité : "INSERT"= bloc
gpCode(1) = 2 'Type de sélection : 2 = nom (étiquette d'attribut, nom de bloc, etc.)
dataValue(1) = "TOTO" 'Nom de l'entité qui doit être sélectionnée
gpCode(2) = 67 'Type de sélection : 67= espace objet/papier
dataValue(2) = 0 'Nom de l'espace : 0= objet, 1=papier (un seul onglet doit être présent pour que ce code fonctionne !)
groupCode = gpCode
dataCode = dataValue
sset.Select acSelectionSetAll, , , groupCode, dataCode

sset.Highlight (True) 'Après exécution de cette macro, les éléments sélectionnés se verront à l'écran

'Placer ici le code à faire avec les blocs sélectionnés

'On "ferme" proprement l'objet sset, sinon, on a une erreur lors du prochain lancement de
'la macro (le jeu de sélection existe déjà)
Set sset = Nothing

End Sub


Le truc que j'ai eu du mal à trouver sur internet, c'est pouvoir sélectionner un bloc à partir de son nom (sélectionner tous les blocs et qui sont sur un calque, des exemples il en existe à foison, mais pour ce cas précis, je pense en avoir l'exclusivité !). Les valeurs que doivent prendre gpcode(x) et gpvalue(x) ne sont pas évidentes à trouver dans l'aide AutoCAD !
Vous pourrez trouver  toutes les explications dans l'aide aux développeurs, > Références DXF > Format DXF > Code de groupe par ordre numérique

Publicité
Publicité
Commentaires
S
Merci pour l'aide,<br /> ca faisait un moment que je cherchais comment repérer les Xref d'un dessin.
AutoCAD et VBA
Publicité
Derniers commentaires
Publicité