Добавляет в слой элемент, заданный переменной, в которой содержится объект во внутреннем формате системы.
Visual Basic:
Function AddElementFromRaw(Elem, ElemID As Long ) As Long
Elem - добавляемый элемент
ElemID - ID добавляемого элемента
Добавляемый объект содержится в переменной типа VARIANT, которая может быть получена, например, как результат пространственного SQL запроса к слою. Если добавление элемента выполнено успешно, метод возвращает ID добавленного элемента. В противном случае метод возвращает -1.
Если значение ElemID равно -1, то записываемому элементу ID присваивается автоматически.
Занят ли указанный ID, метод не проверяет: элемент добавляется и с занятым ID, и тогда в слое оказываются два объекта с одинаковым ID. Чтобы ключ проверялся, применяются методы AddElementEx и AddEnumElement.
Объект переносится целиком: геометрия, стиль, тип и режим у него те же, что в слое источника.
Пример демонстрирует получение графических данных во внутреннем формате Zulu через SQL запрос и запись полученных данных в новый слой.
Visual Basic:
Sub Layer_AddElementFromRaw 'Берем активный слой карты Set Src = Zulu.ActiveMapDoc.Layers.Active 'Запрашиваем ключи и геометрию объектов во внутреннем формате Zulu Set Res = Src.ExecSQL("SELECT Sys, Geometry.AsRaw()") If Res.DataSet Is Nothing Then MsgBox Res.ErrorString Exit Sub End If 'Создаем пустой слой той же структуры Set Tools = CreateObject("ZuluLib.ZuluTools") Tools.LayerCreateByExample Src.Name, "C:\Data\raw", "Копия слоя", 0 Set Dst = CreateObject("ZuluLib.Layer") Dst.Open "C:\Data\raw" 'Переписываем объекты, сохраняя их ключи Set ds = Res.DataSet ds.MoveFirst n = 0 Do While Not ds.Eof If Dst.AddElementFromRaw(ds.GetFieldValueVar(1), ds.GetFieldValueVar(0)) <> -1 Then n = n + 1 ds.MoveNext Loop MsgBox "Перенесено объектов: " & n End Sub