|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
10.11.2016, 21:01 | #1 | |
VBA Не добавляются новые блоки в цикл по всем вхождениям блоков в пространстве Модели
нефтепереработка
Мозырь, Республика Беларусь
Регистрация: 17.11.2009
Сообщений: 77
|
||
Просмотров: 3607
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
99xt1, показывай весь код. Потому что сейчас он выглядит как минимум странно. А заодно уточни - VBA работает из-под AutoCAD или нет.
----- добавлено через ~1 мин. ----- ... и почему было не воспользоваться SelectionSet - непонятно...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Запускаю код из Excel
Код:
Победил сейчас добавив Код:
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,053
|
сразу замечание по поводу экселя: если код должен выполняться в определенной книге, то обязательно указывайте ThisWorkBook. Иначе при открытии несколько книг экселя получите выполнение кода в активной книге, а в не в той - где предполагали) Затем: Application.DisplayAlerts = False - а включать кто будет? Не удалось подключиться к уже запущенному экземпляру акада или создать новый - почему код пошел дальше выполняться?
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
For Each blk In acadDoc.ModelSpace
Стоит мне нарисовать отрезок - и все, код вылетит. P.S. Я бы, наверное, подобное все же делал напрямую из ACAD'a, выводя информацию в тот же *.CSV. ----- добавлено через 54 сек. ----- P.P.S. Похоже, что используется раннее связывание. Тоже не самое лучшее решение ИМХО.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Сергей812, если я правильно понимаю, то блокировка идет только на время выполнения цикла.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,053
|
Цитата:
p.s. И как уже неоднократно писал - не заполняйте массивы ячеек экселя путем отдельного обращения к каждой ячейке. Заполнили двухмерный массив Variant и одной строкой блок данных перенесли на лист - скорость заполнения листа увеличивается на порядок и более. |
|||
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
С подключением к Автокаду почему то появляются периодические проблемы. Поэтому я просто заранее запускаю нужный файл dwg, и потом уже из Excel выполняю код.
Вот это Цитата:
Код:
Хорошо, это потом пооптимизирую. Главный вопрос в другом: Почему после: 1. добавления нового блока в чертеж. 2. Сохранении чертежа и закрятия Автокада. 3. Перезагрузки компьютера. 4. открытия файла dwg 5. Открытия файла xlsm и выполнения кода строка For Each blk In acadDoc.ModelSpace не перебирает этот новый блок? |
|||
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,589
|
|
|||
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Блок создан в чертеже и его вставлен в него. Т.е. не только в библиотеке блоков он есть, но и в самом пространстве модели есть его вхождение.
В принципе решение задачи нашёл (см. выше). Но вот просто разобраться хочу, почему не работает For Each |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,053
|
в принципе, логично: ModelSpace - это коллекция всех примитивов, размещенных в пространстве модели. А не только вставок блоков. А вот почему себя так ведет: сделайте копию чертежа, удалите лишнее, смоделируйте ситуацию со вставкой блока - если будет вести себя аналогично, то сделайте пошаговую трассировку, отслеживая состояние переменных. Если не найдется причина, попробуйте сделать через цикл for и ModelSpace.Count, например.
|
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Штриховка в пространстве модели | philija | AutoCAD | 9 | 21.02.2020 13:35 |
Масштаб в пространстве модели? Помогите определиться с настройками | ВладимирВ | AutoCAD | 6 | 16.03.2016 05:00 |
Viewport закрывает объекты, созданные в пространстве модели. | Voltegirev | AutoCAD | 3 | 09.10.2013 14:31 |
Перебор блоков в модели и создание надписи с именем слоя | Sanmart | Программирование | 2 | 16.04.2010 09:27 |
Как генерировать блоки с атрибутами в пространстве модели(листа) при помощи LISP!!! | SpillOver | LISP | 27 | 08.01.2010 21:36 |