.NET
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Instance Forms in several drawings
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi All,
I'had just met another matter for my Add-on. I noticed that when I instance a new drawing, while a first one is opened, when I load a new Form, this one keep all first drawing's properties. What could happen?
For example, I would like to add the layer list on a ComboBox.
My source:
Private Sub LayerBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'***************************'
'* Initialisation LayerBox *'
'***************************'
Using acTrans = acCurDb.TransactionManager.StartTransaction()
acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId, OpenMode.ForRead)
For Each acObjId As ObjectId In acLyrTbl
acLyrTblRec = acTrans.GetObject(acObjId, OpenMode.ForRead)
ComboBox1.Items.Add(acLyrTblRec.Name)
Next acObjId
End Using
End SubThis source works, but if i instance a new form on a new drawing, the first drawing's layer list is kept and the new layer list on the second drawing is ignored!
Any ideas?
Re: Instance Forms in several drawings
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi,
>> but if i instance a new form on a new drawing
then you have to set your variable acCurDb to this other drawing before getting the list of layers.
- alfred -
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at
-------------------------------------------------------------------------
Re: Instance Forms in several drawings
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi alfred,
How can i set my variable acCurDb to each drawing
I set my variables like that (as it's explained on autoCAD Developper's Guide)
Public acDoc As Document = Application.DocumentManager.MdiActiveDocument Public acCurDb As Database = acDoc.Database
Thank You
Re: Instance Forms in several drawings
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi,
you have the DocumentCollection within the ApplicationServices.Application, that is a list of all opened Documents, run through this list and you have all Documents.
Next step is then to watch events for Opening/Activating/Closing Documents as you have then to update your list.
- alfred -
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at
-------------------------------------------------------------------------
Re: Instance Forms in several drawings
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
Hi alfred,
I've found the source and it works! Thanks you.
In starter Sub just add an Event Argument to detect document activation.
Private Sub LayerBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler Application.DocumentManager.DocumentActivated, AddressOf docColDocAct
End SubThen, when a document is activated the Event Argument refers to docColDocAct which reset acCurDb variable with the current document activated and return it to private Sub LayerBox_Load.
Public Sub docColDocAct(ByVal senderObj As Object, ByVal docColDocActEvtArgs As DocumentCollectionEventArgs)
acCurDb = docColDocActEvtArgs.Document.Database
End Sub
Thank you alfred
