Author Topic: Modify Block Attributes  (Read 646 times)

0 Members and 1 Guest are viewing this topic.

Offline rom1

  • Visual Basic
  • *
  • Posts: 21
  • Karma: +3/-0
  • Gender: Male
    • prefered language: VB
    • Prog expertise: Good
    • View Profile
Modify Block Attributes
« on: July 08, 2011, 09:48:24 AM »
Hi,

Here below a sub in order to modify a block attribute.

Code: [Select]
  ''' <summary>
    ''' Modifie la valeur d'un attribut de référence de bloc
    ''' </summary>
    ''' <param name="BlocRefID">ID de la référence de bloc</param>
    ''' <param name="BlocRefAttrLibelle">libellé de l'attribut à modifier</param>
    ''' <param name="BlocRefAttrValeur">valeur de l'attribut à modifier</param>
    ''' <remarks></remarks>
    Public Sub BlocModifierAttribut(ByVal BlocRefID As ObjectId, ByVal BlocRefAttrLibelle As String, ByVal BlocRefAttrValeur As String)
        '=========================================================
        'NOM: BlocModifierAttribut
        'DESCRIPTION: Modifie la valeur d'un attribut de référence de bloc
        'ARGUMENTS: BlocRefID: ID de la référence de bloc
        '               BlocRefAttrLibelle: libellé de l'attribut à modifier
        '               BlocRefAttrValeur: valeur de l'attribut à modifier
        'DATE: 03/11/2010
        '=========================================================
        Using myTrans As Transaction = BlocRefID.Database.TransactionManager.StartTransaction
            Try
                Dim BlocRef As BlockReference = BlocRefID.GetObject(OpenMode.ForRead) 'référence de bloc à partir de son ID
                Dim BlocRefAttrCollection As AttributeCollection = BlocRef.AttributeCollection 'collection des ID d'attributs de la référence de bloc

                If BlocRefAttrCollection.Count > 0 Then
                    For Each BlocRefAttrID As ObjectId In BlocRefAttrCollection 'Boucle pour chaque ID d'attribut de la collection
                        Dim BlocRefAttr As AttributeReference = BlocRefAttrID.GetObject(OpenMode.ForWrite)
                        'on examine si son libellé (tag) est celui recherché
                        If BlocRefAttr.Tag.Equals(BlocRefAttrLibelle, StringComparison.OrdinalIgnoreCase) = True Then
                            'Mise à jour de la valeur
                            BlocRefAttr.TextString = BlocRefAttrValeur
                            Exit For 'sortie boucle
                        End If
                    Next
                End If
            Catch ex As Exception

            Finally
                myTrans.Commit()
            End Try
        End Using
    End Sub

Thanks for your feedback and improvements.


target audience:{beginner}