Для создания слоя использую такую функцию (я работаю в AC2002, если AC старше, то с цветом там по другому):
Public Function PrepareLayer(vDoc As AcadDocument, _
ByVal LayerName As String, _
Optional LayerColor As Integer = 7) As AcadLayer
On Error Resume Next
Set PrepareLayer = vDoc.Layers.Item(LayerName)
If Err Then
Err.Clear
Set PrepareLayer = vDoc.Layers.Add(LayerName)
If Not IsMissing(LayerColor) Then PrepareLayer.Color = LayerColor
End If
End Function
Далее в своей программе делаешь так.
Dim pColPoint As New Collection
Dim pPnt As AcadPoint
Dim pPoint(2) As Double
Dim i As Long
Set pACD = ThisDrawing
pACD.ActiveLayer = PrepareLayer(pACD, "NewLay", 1)
For i = 1 To 10
pPoint(0) = i
pPoint(1) = i
Set pPnt = pACD.ModelSpace.AddPoint(pPoint)
pColPoint.Add pPnt
Next i
И они появляются. А для уничтожения
For Each pPnt In pColPoint
pPnt.Delete
Next pPnt
Set pColPoint = Nothing
Это если все операции производятся на уровне процедуры. Если нужно создавать точки в одной процедуре, а уничтожать в другой, то определение коллекции толжно быть сделано на уровне модуля. Но это, в общем азы программирования. Говорю об этом, потому, что и вопрос, вроде как из начальной школы.
Вызов
pACD.ActiveLayer = PrepareLayer(pACD, "NewLay", 1)
обеспечивает создание слоя и установку его текущим. Можно вызвать так:
PrepareLayer pACD, "NewLay"
, тогда при создании объектов (здесь - точек) нужно устанавливать имя слоя обьекта у каждого в отдельности.
Теперь, если нужно зачистить все объекты на слое, то можно так:
Public Function ClearLayer(vBlc As AcadBlock, _
ByVal LayerName As String, _
Optional LayerDelete As Boolean = True) As Boolean
Dim pE As AcadEntity
Dim i As Long, ii As Long
On Error Resume Next
ii = vBlc.Count
For i = ii - 1 To 0 Step -1
Set pE = vBlc.Item(i)
If pE.Layer = LayerName Then
pE.Delete
If Err Then Err.Clear
End If
Next i
If LayerDelete Then
vBlc.Document.Layers.Item(LayerName).Delete
If Err Then
Err.Clear
Else
ClearLayer = True
End If
End If
End Function
Вызов функции:
pACD.ActiveLayer = pACD.Layers("0")
ClearLayer pACD.ModelSpace, "NewLay"
Если слой "NewLay" будет активным то он не удалится, поэтому сначала устанавливается текущий слой "0". Если использовать такой механизм зачистки, то не нужно при создании точек собирать их в коллекцию.
Надеюсь что помог и не утомил. (сам то я утомился). Всего хорошего.