.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Update Attribute prior to Insert

3 REPLIES 3
Reply
Message 1 of 4
tomg
353 Views, 3 Replies

Update Attribute prior to Insert

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

 

3 REPLIES 3
Message 2 of 4
Hallex
in reply to: tomg

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
Message 3 of 4
tomg
in reply to: Hallex

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

Message 4 of 4
Jessica10
in reply to: tomg

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

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost