Posts: 17
Registered: ‎08-14-2007
Message 1 of 3 (254 Views)

Create Selection set and get insert point of multiple blocks

254 Views, 2 Replies
07-03-2012 07:46 AM

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?


Valued Mentor
Posts: 480
Registered: ‎04-11-2010
Message 2 of 3 (241 Views)

Re: Create Selection set and get insert point of multiple blocks

07-03-2012 09:54 AM in reply to: AaronLucy



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)
                            End If
                    End If
                End If
            End If
        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

Posts: 17
Registered: ‎08-14-2007
Message 3 of 3 (238 Views)

Re: Create Selection set and get insert point of multiple blocks

07-03-2012 10:03 AM in reply to: gasty1001

Thanks for the help. I will look over the code and see if I can get it to work for me.

Are you familiar with the Autodesk Expert Elites? The Expert Elite program is made up of customers that help other customers by sharing knowledge and exemplifying an engaging style of collaboration. To learn more, please visit our Expert Elite website.
Need installation help?

Start with some of our most frequented solutions or visit the Installation and Licensing Forum to get help installing your software.