Autodesk ObjectARX
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
I want to do the following: import a block reference with attributes among which there are those that should contain the current coordinates of an entity from that block, and when I move that block those attributes should be updated in order to keep showing the current coordinates, the same way the dimensions are showing actual measurements even when resized.
I've tried to do this with fields in the attributes. But fields are not updated automatically on i.e. move command and I read that it could be time consuming for larger drawings.
So, the question is, how do I do this without developing custom entities?
EDIT: I forgot to mention that I'm doing this in Visual C++ 2005 with ObjectARX for AutoCAD 2008.
Re: Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
mihajlovic.milosh wrote:
I've tried to do this with fields in the attributes. But fields are not updated automatically on i.e. move command and I read that it could be time consuming for larger drawings.
So, the question is, how do I do this without developing custom entities?
Maybe reactors?
Re: Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Could you recommend me something where I can read how to implemet reactors?
Re: Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Re: Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Not quite what you want, but I think may help.
Add a handler to the ObjectModified Event thus:-
CurDb = Application.DocumentManager.MdiActiveDocument.Database AddHandler CurDb.ObjectModified, AddressOf ObjectModified
and add this event.
Friend Sub ObjectModified(ByVal sender As Object, ByVal e As Autodesk.AutoCAD.DatabaseServices.ObjectEventArgs)
If isMod Then Exit Sub
Dim b As Boolean
With e.DBObject
If .IsWriteEnabled Then Exit Sub
If .Id.ObjectClass.Name = "AcDbAttribute" Then
Using tr As Transaction = CurDb.TransactionManager.StartTransaction()
Dim ar As AttributeReference = CType(e.DBObject, AttributeReference)
With a_Job
ar.UpgradeOpen()
' add you code here and if you make an amendment, set b=True
If b Then isMod = True : ar.DowngradeOpen() ' isMod prevents loop
End With
tr.Commit()
End Using
End If
End With
isMod = False
End SubYour code will update tags where needed
Re: Block attributes auto-updat e
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
ps.
You may need to trap the block object instead.




