Update Attribute prior to Insert

Update Attribute prior to Insert

Anonymous
Not applicable
880 Views
3 Replies
Message 1 of 4

Update Attribute prior to Insert

Anonymous
Not applicable

I have a routine that will change attribute text when the block is in the dwg. My problem is that I would like to set the attribute text prior to insertion. Every example that I have found uses promptentityoptions which returns a result.ObjectId. as shown below.

                   

BlockReference br = (BlockReference)tr.GetObject(result.ObjectId, OpenMode.ForRead);                  

AttributeCollection attCol = br.AttributeCollection;

 

What do I use in place of result.ObjectId?

 

Tom

 

0 Likes
881 Views
3 Replies
Replies (3)
Message 2 of 4

Hallex
Advisor
Advisor

Shortly do something like this:

                          string atag=ed.Getstring("\nEnter a tag: ").StringResult;
                          string value=ed.Getstring("\nEnter a new attribute value: ").StringResult;

                          // Then after the block was inserted
                           //Get visible attributes from BlockReference object
                            Autodesk.AutoCAD.DatabaseServices.AttributeCollection attcoll = bref.AttributeCollection;

                            foreach (ObjectId id in attcoll)
                            {
                                AttributeReference atref = (AttributeReference)tr.GetObject(id, OpenMode.ForRead);
                               if (atref.Tag== atag.ToUpper())
                              atref.TextString=value;
                            }

 

~'J'~

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
0 Likes
Message 3 of 4

Anonymous
Not applicable

I have something like this:

 

try
  {
     BlockTable bt = (BlockTable)tr.GetObject(sourceDb.BlockTableId,
                            OpenMode.ForRead, false);
     foreach (ObjectId btrId in bt)
     {
        BlockTableRecord btr = (BlockTableRecord)tr.GetObject(btrId, OpenMode.ForRead, false);
        BlockReference br = (BlockReference)tr.GetObject(--What--, OpenMode.ForRead, false);
        AttributeCollection attCol = br.AttributeCollection;

	etc.

 In the BlockReference statement, what is the --What-- object.

 

Tom

0 Likes
Message 4 of 4

Anonymous
Not applicable

For Each attID As ObjectId In RefBTR

                attEnt = tr.GetObject(attID, OpenMode.ForRead)

                If TypeOf attEnt Is AttributeDefinition Then

                    Dim attDef As AttributeDefinition = attEnt

                    Dim attRef As AttributeReference = New AttributeReference()

                    attRef.SetAttributeFromBlock(attDef, br.BlockTransform)

                    If attRef.Tag = sTagName Then

                        attRef.TextString = sValue

                        Exit Sub

                    End If

                End If

            Next

        Catch ex As Autodesk.AutoCAD.Runtime.Exception

            tr.Abort()

        Finally

            tr.Commit()

        End Try