PickfirstSelectionSet Workaround

I found many posts about PickfirstSelectionSet not working properly, so
when I found a solution for myself I thought I should share it.
I use a lisp to launch my macro. The lisp I use to launch my macro
calls another lisp before activating my desired VBA Sub. The lisp
called senses if anything is currently selected. If anything is
selected, it calls a macro to set a global variable ("UseActive")
to true, and if nothing is selected it sets that variable to false.
Then it launches my Sub. When my sub runs it checks UseActive. If
UseActive is false the sub has the user select items; if UseActive is
true the sub uses ThisDrawing.ActiveSelectionSet (which contains the
items that were selected when the user started the command).
Lisp Routines:
(defun C:CurrentlySelected()
(if (ssget "I") (vl-vbarun "CurrentSelection") (vl-vbarun
"NotCurrentSelection"))
)
(defun C:Mir2x ()
(C:CurrentlySelected)
(vl-vbarun "mir2")
)
VBA Code:
Dim UseActive As Boolean
Public Sub NotCurrentSelection()
UseActive = False
End Sub
Public Sub CurrentSelection()
UseActive = True
End Sub
Public Sub SelectionSetRemove(SetName As String)
Dim a As AcadSelectionSet
For Each a In ThisDrawing.SelectionSets
If StrComp(a.Name, SetName, 1) = 0 Then
a.Delete
Exit For
End If
Next a
End Sub
Public Sub mir2()
Dim AttHolder()
Dim Curr_Obj As AcadObject
Dim Mird_Obj As AcadObject
Dim AttLocs()
Dim AttTemp(0 To 1)
Dim Mird_AttLocs()
Dim MiringTargets As AcadSelectionSet
On Error Resume Next
If UseActive = True Then
Set MiringTargets = ThisDrawing.ActiveSelectionSet
Else
Err.Clear
Set MiringTargets =
ThisDrawing.SelectionSets.Add("ReservedUserSetForStarting")
If Err.Number 0 Then
Err.Clear
SelectionSetRemove ("ReservedUserSetForStarting")
Set MiringTargets =
ThisDrawing.SelectionSets.Add("ReservedUserSetForStarting")
End If
MiringTargets.SelectOnScreen
End If

...
...
And then on to the rest of my program.
Reply to
Clayola
Loading thread data ...

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.