|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Распределение блоков по слоям в Autocad при помощи Excel
нефтепереработка
Мозырь, Республика Беларусь
Регистрация: 17.11.2009
Сообщений: 77
|
||
Просмотров: 8919
|
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
1. Возможно
2. Может, именно такого решения нет. Есть примеры работы с блоками, со слоями. Я бы не заморачивался, и написал бы подключение из экселя к акаду - меньше телодвижений, имхо. 3. Для ускорения работы приложения можно не извлекать данные встроенными средствами, а опять же программно из экселя - причем сделать два скрытых столбца в таблице: дублирующий исходные имена слоев (иначе как потом будете искать слои для переименования - придется перебирать все блоки опять) и содержащий хэндлы блоков (для ускорения доступа к чертежу). p.s. 1. Из встроенных средств есть транслятор слоев 2. Возможно, этот вопрос уместнее смотрелся бы в ветке программирования |
|||
![]() |
|
||||
Регистрация: 26.03.2015
Екатеринбург
Сообщений: 383
|
вот попробуйте по такому принципу, как в приложенных файлах
1. извлечь в эксель имена блоков и их координаты, слои даже можно и не извлекать 2. в новой колонке задать требуемые слои каждому блоку 3. записать с помощью формулы СЦЕПИТЬ скрипт для автокада, скопировать его в комстроку. в скрипте пробел=нажатию Enter, где-то два или более пробела подряд -экспериментируйте беда в том, что при вводе названия слоя пробел атокадом воспринимается именно как пробел, поэтому пришлось разнести строки и копировать надо именно несколько ячеек в столбце с пропущенными строками беда2 в том, что если через точку вставки блока проходит какая-то другая геометрия или не проходит геометрия блока (т.е. базовая точка блока "на пустом месте"), то результаты будут совсем не те, что ожидались. |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Цитата:
|
|||
![]() |
|
||||
конструктор Регистрация: 14.08.2014
Псков
Сообщений: 7,323
|
такое возможно, но не в той ветке форума. /посредством программирования на вба.
Т.е. в автокаде можно загрузить данные из листа экселя и поочередно опросить блоки, с присвоением им нужных слоев. Мб организовать работу по другому, но с использованием штатных средств? |
|||
![]() |
|
||||
пианист Регистрация: 18.02.2008
Питер
Сообщений: 418
|
Если это делается для выборочного отключения каких-либо блоков, то я бы сделал автоматически настроенное выключение в диспетчере конфигурации слоёв - один раз настроил список и всё
__________________
Продать душу дьяволу за вкладку Modify2 |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
У меня есть таблица Эксель, в которой проставлены позиции оборудования и сроки когда оно будет закупаться, придет на склад, предположительно будет смонтированно и т.п. Из этой таблицы я делаюразные отчеты в табличной форме. Но также начальство захотело видеть всю ситуацию на плане установки в разных цветах. Отсканированный план вставил в виде подложки в Автокад. На нем сделал блоки оборудования. И теперь надо кидать их по разным слоям.
Пока не вижу какие другие штатные средства использовать. |
|||
![]() |
|
||||
конструктор Регистрация: 14.08.2014
Псков
Сообщений: 7,323
|
Цитата:
ятп рабочая среда - эксель. А автокад нужен для визуализации. Если дополнить данные столбцов координатами вставки в чертеж, то можно создавать файл (изменять) каждый раз. |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
|
|||
![]() |
|
||||
пианист Регистрация: 18.02.2008
Питер
Сообщений: 418
|
Можно поиском выбирать ненужные блоки и через изоляцию объектов показывать визуализацию не заморачиваясь со слоями вообще
__________________
Продать душу дьяволу за вкладку Modify2 |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
|
|||
![]() |
|
||||
конструктор Регистрация: 14.08.2014
Псков
Сообщений: 7,323
|
на основе кода Doober'a ятд. /см пост №8 http://www.programmersforum.ru/showthread.php?t=223815 /
Пробуйте. Вам охотнее помогут если попросите переместить тему в соотв. ветку. ----- добавлено через 49 сек. ----- .. правда определения блоков уже должны быть... ну или каждый раз рисовать ----- добавлено через ~2 мин. ----- ...или одинаковые блоки делать Цитата:
Нужно загружать макрос в автокаде. Последний раз редактировалось v.psk, 11.08.2016 в 12:51. Причина: дополнение в ответ на пост 19 |
|||
![]() |
|
||||
Регистрация: 05.11.2015
Сообщений: 585
|
Цитата:
|
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Цитата:
----- добавлено через ~4 мин. ----- Цитата:
Попробую. Код Doober (измененный) надо вставлять в Автокаде, как я понимаю? Последний раз редактировалось 99xt1, 11.08.2016 в 12:43. |
|||
![]() |
|
||||
Регистрация: 05.11.2015
Сообщений: 585
|
Это понятно. Просто я-то отвечал в #12 именно по поводу изменения слоя... Как при этом еще и цвет объектов внутри блока поменять, уже другой вопрос...
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
99xt1, оптимизация... Тут не оптимизировать нужно, тут весь алгоритм менять нужно, он ужасен O(n^2).
При обработке каждой ячейки, Ваш алгоритм, перебирает ВСЕ объекты чертежа, КАЖДЫЙ РАЗ!!! Перебирает даже обработанные ранее объекты! Кстати, кто Вам сказал, что все объекты в пространстве модели именно блоки? |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Составляю отчет в виде таблицы Excel где указываю сроки закупки оборудования.
Начальство хочет на основании этого отчета, чтобы на плане это оборудование раскашивалось определенными цветами в зависимости от срока поставки. Каждый период - свой слой с определенным цветом. Каждая единица оборудования - один блок. Вот и беру данные из Excel о сроке и перемещаю блоки на определенные слои. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
|
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Цитата:
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Я не очень хорошо помню VBA, но для начала самая простая оптимизация:
Пройтись по модели и собрать блоки в отдельную коллекцию (objectID + BlockName). Потом проходясь по этой коллекции назначать слой и перемещая из нее уже обработанные блоки в коллекцию (objectID + BlockLayer). Пройтись по новой коллекции и назначить слои. Хотя если помнить, что самая затратная по времени операция, это чтение чертежа, то может имеет смысл поменять циклы местами, один раз проходится по объектам чертежа и много раз проходить по таблице значений... |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
увидел и вздрогнул - чем вам код ошибки не угодил, зачем строки теребить?)
Затем: операция чтения из ячейки экселя - очень медленная. Одной строчкой считываете диапазон Range в переменную variant, и в этой переменной получаете двухмерный массив значений. И работаете дальше с этими значениями, а не с листом. Следующее: кто за вас будет отключаться от акада в конце процедуры или при ошибке? |
|||
![]() |
|
||||
нефтепереработка Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77
|
Цитата:
Покажите как правильно, пожалуйста? Пробовал два варианта подключения к Автокаду. Первый отсюда: Код:
Второй отсюда, открывает файл очень быстро Код:
|
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
почему разные названия? Подключаетесь к одному объекту
а втором примере, если замените Код:
Код:
|
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Заполнение размеров в Autocad из Excel | zenija2007 | AutoCAD | 9 | 18.09.2015 12:53 |
Замена связей AutoCAD 2012 и Excel | seregas | AutoCAD | 40 | 20.06.2014 10:12 |
Autocad Architecture 2011 не воспринимает Excel. | Cyprus | Вертикальные решения на базе AutoCAD | 3 | 17.05.2010 18:23 |
Доработка очередной утилиты AutoCAD <-> Excel | Lesha | Программирование | 2 | 28.02.2010 20:21 |
AutoCAD 2007. Вставка блоков О_о | vaca | AutoCAD | 3 | 25.12.2009 15:01 |