.NET

Reply
Distinguished Contributor
jboone
Posts: 167
Registered: ‎08-31-2006
Message 1 of 4 (186 Views)
Accepted Solution

Updating attributes of a selection set

186 Views, 3 Replies
08-01-2013 02:02 PM

I am trying to update blocks from a selection set and based on two specific attaributes.  I get and error eLockViolation

Not sure where it comes from since this is a dll.

 

 

      Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
      Dim db As Database = doc.Database
      Dim ed As Editor = doc.Editor
      Dim x As Integer = 0
      Dim tr As Transaction = db.TransactionManager.StartTransaction()

	  
	  


      MsgBox("Going into attribute write", MsgBoxStyle.OkOnly)
      Try
         Dim idArray As ObjectId() = selSet.GetObjectIds()
         For Each blkId As ObjectId In idArray
            Dim blkRef As BlockReference = DirectCast(tr.GetObject(blkId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), BlockReference)
            Dim btr As BlockTableRecord = DirectCast(tr.GetObject(blkRef.BlockTableRecord, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), BlockTableRecord)
            'ed.WriteMessage(vbLf & "Block: " + btr.Name)
            btr.Dispose()

            Dim attCol As AttributeCollection = blkRef.AttributeCollection
            For Each attId As ObjectId In attCol
               Dim attRef As AttributeReference = DirectCast(tr.GetObject(attId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), AttributeReference)


               'MsgBox("Block name: " & btr.AcadObject.ToString, MsgBoxStyle.OkOnly)
               'UpdateAttributesInBlock(attId, btr.AcadObject.ToString, "Block2NAME", TextVal)
               If attRef.Tag = "BlockPANEL" Then
                  attRef.UpgradeOpen()
                  attRef.TextString = TextVal
                  attRef.DowngradeOpen()
                  MsgBox("Wrote Block: " & TextVal, MsgBoxStyle.OkOnly)
               ElseIf attRef.Tag = "Block2PANEL" Then
                  attRef.UpgradeOpen()
                  attRef.TextString = TextVal
                  attRef.DowngradeOpen()
                  MsgBox("Wrote Block2: " & TextVal, MsgBoxStyle.OkOnly)
               End If

               If attRef.Tag = "BlockAttVal" Then
                  attRef.UpgradeOpen()
                  attRef.TextString = AttValNumber
                  attRef.DowngradeOpen()
               ElseIf attRef.Tag = "Block2AttVal" Then
                  attRef.UpgradeOpen()
                  attRef.TextString = AttValNumber
                  attRef.DowngradeOpen()
               End If
               x = x + 1
            Next
         Next
         tr.Commit()
         Str = ("Total number of blocks changes: " & x.ToString)
         ed.WriteMessage(WattageStr)
      Catch ex As Autodesk.AutoCAD.Runtime.Exception
         ed.WriteMessage(("Exception: " & ex.Message & vbCrLf))
         Exit Function
      Finally
         tr.Dispose()
      End Try

 

Distinguished Contributor
jboone
Posts: 167
Registered: ‎08-31-2006
Message 2 of 4 (182 Views)

Re: Updating attributes of a selection set

08-01-2013 02:10 PM in reply to: jboone

Oh the selection set is being stoed as a globel from another command.  Not sure if all this is logical.

 

 

   Public selSet As SelectionSet

 

*Expert Elite*
arcticad
Posts: 1,285
Registered: ‎06-21-2004
Message 3 of 4 (173 Views)

Re: Updating attributes of a selection set

08-01-2013 02:44 PM in reply to: jboone

http://forums.autodesk.com/t5/NET/eLockViolation/m-p/2490289/highlight/true#M14566

---------------------------



(defun botsbuildbots() (botsbuildbots))
Distinguished Contributor
jboone
Posts: 167
Registered: ‎08-31-2006
Message 4 of 4 (169 Views)

Re: Updating attributes of a selection set

08-01-2013 02:49 PM in reply to: arcticad

Wow thanks.  That worked great!.

Announcements
Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.