Тема: Глюк при повторном запуске программы через промежуток времени

Всем доброго времени суток!
Ситуация следующая. Я не могу понять причину весьма странного явления.
Есть программа. Я её запускаю несколько раз (руками, по Alt+F8), и всё отлично работает, если между запусками прошло не очень много времени. Однако, если между запусками подождать 1 или 2 минуты, то при попытке запустить программу появляется exception и прога падает вместе с AutoCAD-ом.
Можно предположить, что проблема из-за памяти, но я этим я уже боролась - вроде бы, освобождаю. У меня вызывает подозрения следующий фрагмент кода с применением LISP, котороый я списала не очень понимаю (однако, он работает):
ThisDrawing.SendCommand "(setq ss (ssadd))" + vbCr
For Each obj In ThisDrawing.SelectionSets.Item("sel_set_highlight")
    v = obj.Handle
    ThisDrawing.SendCommand "(ssadd (handent """ + v + """) ss)" + vbCr
Next
ThisDrawing.SelectionSets.Item("sel_set_highlight").highlight (True)
ThisDrawing.SendCommand "(sssetfirst nil ss)" + vbCr
ThisDrawing.Regen acAllViewports
Была мысль, что надо удалять этот ss, и я это делала так:
For Each obj In ThisDrawing.SelectionSets.Item("sel_set_highlight") 'clear LISP's SelSet
    v = obj.Handle
    ThisDrawing.SendCommand "(ssdel v ss)" + vbCr
Next
Потом я решила, что можно вообще чистить все SelSet-ы перед новым запуском, чтобы никаких глюков от прошлого запуска не оставалось. Делала это так:
For Each ss In ThisDrawing.SelectionSets
    ss.Delete
Next
Но и это не помогло.
Надеюсь на вашу помощь!

Re: Глюк при повторном запуске программы через промежуток времени

Так а что надо в результате-то? Это раз. Два. Только для выделения набора? Да еще и без ручек? Если так, то, может, такое попробовать?

Option Explicit
Sub Sset()
Dim oSelsetCol As AcadSelectionSets, oSelset As AcadSelectionSet
Dim filType(0) As Integer, filData(0) As Variant
  Set oSelsetCol = ThisDrawing.SelectionSets
  For Each oSelset In oSelsetCol
    If oSelset.Name = "temp_selset" Then oSelset.Delete
  Next oSelset
  Set oSelset = ThisDrawing.SelectionSets.Add("temp_selset")
  filType(0) = 0
  filData(0) = "*"
  oSelset.SelectOnScreen filType, filData
  oSelset.Highlight (True)
End Sub

И, по-моему, этого достаточно. Selection Set обнуляется при выходе из файла. Их в файле может быть не больше 128

Re: Глюк при повторном запуске программы через промежуток времени

Сделано на основе http://vbamaker.narod.ru/Cod1.html

Re: Глюк при повторном запуске программы через промежуток времени

Надо в роезультате: чтобы прога не падала.
Мой SelectionSet, который ThisDrawing.SelectionSets.Item("sel_set_highlight"), создаётся в программе, и никаких SelectOnScreen, мне кажется, не надо.
kpblc: Ваш кусок кода, применительно к моему SelectionSet-y, ничего не подсвечивает.

Re: Глюк при повторном запуске программы через промежуток времени

oSelset.Highlight (True) - вот тут я не уверен. Возможно, надо снять скобки.
---
btw, я не vba-шник, я лисповик. Это раз. Два. Повторюсь - что надо в результате?

Re: Глюк при повторном запуске программы через промежуток времени

> kpblc
В результате нужно сделать конфетку :)

Re: Глюк при повторном запуске программы через промежуток времени

Конфетку-то запросто. Правда, на лиспе :)

(defun sset( / selset)
(if (setq selset (ssget))
  (sssetfirst selset selset)
  )
  )

Re: Глюк при повторном запуске программы через промежуток времени

Ура - глюк торжественно побеждён! Прога перестала падать вместе с AutoCAD-ом при повторных запусках (это был ответ на вопрос "что надо в результате?").
Оказалось, что во всём виноват был Таймер, котрый мирно лежал на форме. А с SelectionSet-ами всё нормально. В общем, удалила этот таймер, ибо пока без него можно обойтись.
Спасибо всем добрым людям за поддержку!