| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
26.03.2009, 09:13 | #1 | |
VBA: утечка памяти при вставке блоков
Highway Design
Tver
Регистрация: 16.09.2007
Сообщений: 27
|
||
Просмотров: 5281
|
|
||||
Highway Design Регистрация: 16.09.2007
Tver
Сообщений: 27
|
Цитата:
Проблема заключается во внутренней реализации метода ThisDrawing.ModelSpace.InsertBlock причем не важно с помощью чего он вызван (кроме VBA написал аналогичную процедуру на Delphi – результат тот же). Следующие способы вставки блоков также вызывают утечку памяти: 1. Операция копирования Set BlockRefCopy = BlockRef.Copy 2. Командная строка ThisDrawing.SendCommand "-insert" + vbCr + … В сообщении №1 был не совсем прав. Память освобождается не только после закрытия AutoCAD, но и после закрытия того рисунка, в который были вставлены блоки. Это можно использовать следующим образом: Код:
1. С увеличением количества вставленных блоков увеличивается время открытия файла 2. В ходе вставки блоков чертеж сохраняется, отменить изменения невозможно Возможно, у кого-то есть другие идеи, с удовольствием их выслушаю. |
|||
|
||||
Highway Design Регистрация: 16.09.2007
Tver
Сообщений: 27
|
Вставка в чертеж блоков (высотная отметка) на основании текстового файла. Для простоты примера все блоки вставляются в одну точку, в реальной программе у каждого блока свои координаты.
|
|||
|
||||
Инженер Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685
|
Как вариант, вставлять по 1000 (к примеру) блоков в файл, сохранять под именем Name1.dwg, следующие 1000 в Name2.dwg ну и так далее. А когда все повставляются, повтыкать их все внешней ссылкой в итоговый файл
(Что-то типа Цитата:
Цитата:
(в Path - путь к папке с сохраненными Name_.dwg) Не уверен, конечно, что это процесс убыстрит, но чем черт не шутит..
__________________
...Не пытайся гнуть ты ложку, Не вяжи её узлом. Ложка - ложка понарошку, А по правде, - это лом! |
|||
|
||||
Highway Design Регистрация: 16.09.2007
Tver
Сообщений: 27
|
>>Sleekka #6
>>AlexV #11 За идеи спасибо, если в голову больше ничего не придет, то реализую их в коде, может и получится что-нибудь толковое. Но все-таки хотелось бы найти более простое и надежное решение. Еще один "безумный" вариант - запись вставляемых блоков в виде файла .dxf (файл текстовый, проблем с утечкой памяти не будет), а уже затем вставлять его в нужный .dwg файл |
|||
|
||||
Совершенно не уверен, что из-за того что dxf-файл текстовый не будет проблем с утечкой. Скорее уверен в обратном.
|
||||
|
||||
Highway Design Регистрация: 16.09.2007
Tver
Сообщений: 27
|
>>Александр Ривилис #13
Я имел ввиду программное создание текстового файла в формате .dxf без использования AutoCAD. В этом случае проблем с памятью не будет. Проблемы будут со вставкой этого файла в существующий файл .dwg |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сейсмозащита и сейсмоизоляция существующих, построенных зд. | IANationalInformAgentstvo | Прочее. Архитектура и строительство | 216 | 20.01.2015 16:51 |
Мониторы LCD CRT | Разное | 94 | 17.06.2008 10:51 | |
ЮМОР 2006 =) | Perezz!! | Разное | 1122 | 04.01.2007 00:46 |
БРЕД СИВОЙ КОБЫЛЫ | Kryaker | Разное | 1876 | 29.12.2006 23:41 |
Есть ли возможность при вставке блока разрывать линии | Незнайка | AutoCAD | 13 | 03.04.2006 20:34 |