1. Не совсем понимаю как корректно выбрать только что созданный блок, для последующей его копирования с помощью LISPa.
Насобирал и адаптировал под себя следующее:
Public Function LispCOPY(mameb1 As Variant, mash1 As Variant, ug_povorota As Double)
Dim AblocK As AcadBlockReference
Dim pp(0 To 2) As Double
Dim oSset As AcadSelectionSet
Dim namebRET As Variant
Dim mashRET As Variant
Dim nEnts As Integer
Dim strCommand As String
Dim currLayer As AcadLayer
Set currLayer = ThisDrawing.Layers.Add("!(DMA)--!РОЗЕТКИ")
ThisDrawing.ActiveLayer = currLayer
pp(0) = -90000: pp(1) = -90000: pp(2) = 0 ' координаты мусорного бачка
nEnts = ThisDrawing.ModelSpace.Count
Set AblocK = ThisDrawing.ModelSpace.InsertBlock(pp, mameb1, mash1, mash1, mash1, ug_povorota)
Set oSset = ThisDrawing.PickfirstSelectionSet
'oSset.Clear
oSset.Select acSelectionSetLast
ThisDrawing.SendCommand "(sssetfirst nil (ssget " & Chr(34) & "_P" & Chr(34) & ")) "
strCommand = "_copy" & vbCr & Str(pp(0)) & "," & Str(pp(1)) & vbCr
ThisDrawing.SendCommand strCommand
End Function
Эта функция должна создавать копию заданного блока в отдаленном месте (-90000,-90000), потому как потом блок этот фиг удалишь, а там он мешаться не должен, потом выделять его и копировать "видимой вставкой"...
функция вызывается из формы (2 формы и 2 аналогичных фукнции) и в первом случае все работает как нужно, а во втором, выделение зачем-то попадает на другой блок (координатно отдаленный) и , соответственно беда с копированием...
Ткните пальцем, пожалуйста, где прочитать по теме (ничего подходящего не нарыл), как выбрать последний блок.
И еще: с чем связано не желание Lispa нормально отрабатывать строчку
strCommand = "_copy" & vbCr & Str(pp(0)) & "," & Str(pp(1)) & vbCr
при pp(0) любого положительного значения?
Если вбить в строку конкретные значения типа & "10000,10000" &... то все корректно работает, а через переменные,- отказывается работать с положительными значениями...