RUS  ENG 

Как быстро скопировать все объекты в другой слой?

Страницы: 1
RSS
Как быстро скопировать все объекты в другой слой?
 
Привет. есть код, который копирует все объекты одного слоя в другой
LrDst.StartEdit
Set Elem = LrSrc.Elements.FirstItem
Do While Elem.Key <> -1
OldKey = Elem.Key
ImKey = LrDst.AddElement(Elem)
Set Elem = LrSrc.Elements.NextItem
Loop
LrDst.StopEdit
Чтобы скопировать 30 000 контуров уходит 40 минут, при этом конечный файл (изначально пустой) разрастается до 200М ( исходный - 3.5М ). Что я делаю не так?
 
С точки зрения кода все так. А по скорости, объектная модель не позволяет пока оптимизировать поэлементную запись. Что касается размера, то можно в конце вызвать ZuluTools.LayerOptimize, предварительно слой закрыв.
Со скоростью, нужно предоставлять средства буферизации при массовом добавлении.
Сейчас объект добавляется, индексируется и т.д. А нужно сперва все тупо добавить, потом раз проиндексировать. Подумаем.
А сейчас быстрее ZuluTools.ExportToMIF и ZuluTools.ImportFromMIF Это будут не минуты, а секунды. Так же как в SQL серверах позаписное добавление долго а закачка из ASCII быстро.
Страницы: 1