I am very new to VB.NET and I am need some help.
What I am trying to do is create a selection set of blocks with the same name. Then step throught the selection set and if the block has an attribute "Tag" with a Specific "Value" then get the insert point.
Is there a good tutorial or example that someone could point me to?
Thanks
Hi,
this is a very crude example of a function to get a list of insertion points from a selection set (crossing):
Public Function getBlockInsPoints(ByVal tag As String) As List(Of Point3d) Dim doc As Document = Application.DocumentManager.MdiActiveDocument Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor Dim db As Database = doc.Database Dim ipoints As New List(Of Point3d) Dim p1, p2 As Point3d Using acTrans As Transaction = db.TransactionManager.StartTransaction() Dim acTypValAr(1) As TypedValue Dim blkref As BlockReference acTypValAr.SetValue(New TypedValue(DxfCode.Start, "INSERT"), 0) acTypValAr.SetValue(New TypedValue(DxfCode.AttributeTag, tag), 1) Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr) Dim acSSPrompt As PromptPointResult = doc.Editor.GetPoint("Select First Point:") If acSSPrompt.Status = PromptStatus.OK Then p1 = acSSPrompt.Value acSSPrompt = doc.Editor.GetCorner("Select Second Point: ", p1) If acSSPrompt.Status = PromptStatus.OK Then p2 = acSSPrompt.Value Dim wssprompt As PromptSelectionResult wssprompt = ed.SelectCrossingWindow(p1, p2, acSelFtr) If wssprompt.Status = PromptStatus.OK Then Dim wss As SelectionSet = wssprompt.Value For Each acSSObj As SelectedObject In wss If Not IsDBNull(acSSObj) Then blkref = acSSObj.ObjectId.GetObject(OpenMode.ForRead) ipoints.Add(blkref.Position) End If Next End If End If End If acTrans.Commit() End Using Return ipoints End Function
Put the function in a command, ask for the tag name and pass it to the function, or hardcode the tag name in the function call.
Gaston Nunez
Thanks for the help. I will look over the code and see if I can get it to work for me.