| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Распределение блоков по слоям в Autocad при помощи Excel

Распределение блоков по слоям в Autocad при помощи Excel

Ответ
Поиск в этой теме
Непрочитано 15.07.2016, 23:07 #1
Распределение блоков по слоям в Autocad при помощи Excel
99xt1
 
нефтепереработка
 
Мозырь, Республика Беларусь
Регистрация: 17.11.2009
Сообщений: 77

Здравствуйте.

Есть чертеж в котором вставлены обычные (не динамические и без атрибутов) блоки. Каждый блок вставлен всего один раз. Их список можно получить при помощи извлечения данных в виде таблицы (1й столбец - Название блока, 2й столбец - название слоя).

Хочу изменять в Excel название слоя, затем подгружать в автокад. И чтобы блоки в соответствии с таблицей Excel изменяли свои слои.

Возможно такое? Может есть уже решение (поиском не нашел)?
Просмотров: 8569
 
Непрочитано 16.07.2016, 09:51
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


1. Возможно
2. Может, именно такого решения нет. Есть примеры работы с блоками, со слоями. Я бы не заморачивался, и написал бы подключение из экселя к акаду - меньше телодвижений, имхо.
3. Для ускорения работы приложения можно не извлекать данные встроенными средствами, а опять же программно из экселя - причем сделать два скрытых столбца в таблице: дублирующий исходные имена слоев (иначе как потом будете искать слои для переименования - придется перебирать все блоки опять) и содержащий хэндлы блоков (для ускорения доступа к чертежу).

p.s.
1. Из встроенных средств есть транслятор слоев
2. Возможно, этот вопрос уместнее смотрелся бы в ветке программирования
Сергей812 вне форума  
 
Непрочитано 16.07.2016, 15:31
1 | #3
max4airkin


 
Регистрация: 26.03.2015
Екатеринбург
Сообщений: 382


вот попробуйте по такому принципу, как в приложенных файлах
1. извлечь в эксель имена блоков и их координаты, слои даже можно и не извлекать
2. в новой колонке задать требуемые слои каждому блоку
3. записать с помощью формулы СЦЕПИТЬ скрипт для автокада, скопировать его в комстроку.

в скрипте пробел=нажатию Enter, где-то два или более пробела подряд -экспериментируйте
беда в том, что при вводе названия слоя пробел атокадом воспринимается именно как пробел, поэтому пришлось разнести строки и копировать надо именно несколько ячеек в столбце с пропущенными строками
беда2 в том, что если через точку вставки блока проходит какая-то другая геометрия или не проходит геометрия блока (т.е. базовая точка блока "на пустом месте"), то результаты будут совсем не те, что ожидались.
Вложения
Тип файла: xls Чертеж1.xls (25.0 Кб, 35 просмотров)
Тип файла: dwg
DWG 2013
Чертеж1.dwg (50.5 Кб, 29 просмотров)
max4airkin вне форума  
 
Автор темы   Непрочитано 18.07.2016, 19:36
#4
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Цитата:
Сообщение от max4airkin Посмотреть сообщение
вот попробуйте по такому принципу, как в приложенных файлах
1. извлечь в эксель имена блоков и их координаты, слои даже можно и не извлекать
2. в новой колонке задать требуемые слои каждому блоку
3. записать с помощью формулы СЦЕПИТЬ скрипт для автокада, скопировать его в комстроку.

в скрипте пробел=нажатию Enter, где-то два или более пробела подряд -экспериментируйте
беда в том, что при вводе названия слоя пробел атокадом воспринимается именно как пробел, поэтому пришлось разнести строки и копировать надо именно несколько ячеек в столбце с пропущенными строками
беда2 в том, что если через точку вставки блока проходит какая-то другая геометрия или не проходит геометрия блока (т.е. базовая точка блока "на пустом месте"), то результаты будут совсем не те, что ожидались.
Логику вашего решения понял. Спасибо. Но здесь все равно приходится каждую строчку вносить.
99xt1 вне форума  
 
Непрочитано 18.07.2016, 19:40
#5
max4airkin


 
Регистрация: 26.03.2015
Екатеринбург
Сообщений: 382


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Но здесь все равно приходится каждую строчку вносить.
Почему? Я пачкой копировал для всех трех блоков и вставлял. Только в конце пришлось еще нажать Enter.
max4airkin вне форума  
 
Автор темы   Непрочитано 18.07.2016, 19:52
#6
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


На работе не получалось. Дома стоит английский автокад. Завтра на работе попробую
99xt1 вне форума  
 
Автор темы   Непрочитано 11.08.2016, 11:41
#7
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Попробовал. Очень много ошибок выскакивает. Видимо, потому что в названиях слоев есть пробелы, скобки, точки и т.д.
99xt1 вне форума  
 
Непрочитано 11.08.2016, 11:48
#8
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Возможно такое? Может есть уже решение (поиском не нашел)?
такое возможно, но не в той ветке форума. /посредством программирования на вба.
Т.е. в автокаде можно загрузить данные из листа экселя и поочередно опросить блоки, с присвоением им нужных слоев.
Мб организовать работу по другому, но с использованием штатных средств?
v.psk на форуме  
 
Непрочитано 11.08.2016, 11:57
#9
ButcheR

пианист
 
Регистрация: 18.02.2008
Питер
Сообщений: 418


Если это делается для выборочного отключения каких-либо блоков, то я бы сделал автоматически настроенное выключение в диспетчере конфигурации слоёв - один раз настроил список и всё
__________________
Продать душу дьяволу за вкладку Modify2
ButcheR вне форума  
 
Автор темы   Непрочитано 11.08.2016, 12:01
#10
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Цитата:
Сообщение от v.psk Посмотреть сообщение
Мб организовать работу по другому, но с использованием штатных средств?
У меня есть таблица Эксель, в которой проставлены позиции оборудования и сроки когда оно будет закупаться, придет на склад, предположительно будет смонтированно и т.п. Из этой таблицы я делаюразные отчеты в табличной форме. Но также начальство захотело видеть всю ситуацию на плане установки в разных цветах. Отсканированный план вставил в виде подложки в Автокад. На нем сделал блоки оборудования. И теперь надо кидать их по разным слоям.
Пока не вижу какие другие штатные средства использовать.
99xt1 вне форума  
 
Непрочитано 11.08.2016, 12:14
#11
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Но также начальство захотело видеть всю ситуацию на плане установки в разных цветах. Отсканированный план вставил в виде подложки в Автокад. На нем сделал блоки оборудования. И теперь надо кидать их по разным слоям.
тогда .... все-равно макросы.
ятп рабочая среда - эксель. А автокад нужен для визуализации.
Если дополнить данные столбцов координатами вставки в чертеж, то можно создавать файл (изменять) каждый раз.
v.psk на форуме  
 
Непрочитано 11.08.2016, 12:18
2 | #12
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


удалил... пока писал свое тут уже много информации прошло
Миниатюры
Нажмите на изображение для увеличения
Название: Быстрый выбор.PNG
Просмотров: 69
Размер:	21.2 Кб
ID:	174609  
Владимир_М вне форума  
 
Автор темы   Непрочитано 11.08.2016, 12:25
#13
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Да, Именно
Цитата:
Сообщение от v.psk Посмотреть сообщение
ятп рабочая среда - эксель. А автокад нужен для визуализации.
Файл с координатами вставки блоков и именем нового слоя есть. Как сделать
Цитата:
Сообщение от v.psk Посмотреть сообщение
можно создавать файл (изменять) каждый раз.
?
99xt1 вне форума  
 
Непрочитано 11.08.2016, 12:27
#14
ButcheR

пианист
 
Регистрация: 18.02.2008
Питер
Сообщений: 418


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
удалил... пока писал свое тут уже много информации прошло
Можно поиском выбирать ненужные блоки и через изоляцию объектов показывать визуализацию не заморачиваясь со слоями вообще
__________________
Продать душу дьяволу за вкладку Modify2
ButcheR вне форума  
 
Автор темы   Непрочитано 11.08.2016, 12:30
#15
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Цитата:
Сообщение от ButcheR Посмотреть сообщение
Можно поиском выбирать ненужные блоки и через изоляцию объектов показывать визуализацию не заморачиваясь со слоями вообще
Блоки нужны все. Просто они получаются раскрашены в разные цвета (по цвету слоя).
99xt1 вне форума  
 
Непрочитано 11.08.2016, 12:32
#16
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,097


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Как сделать
на основе кода Doober'a ятд. /см пост №8 http://www.programmersforum.ru/showthread.php?t=223815 /
Пробуйте. Вам охотнее помогут если попросите переместить тему в соотв. ветку.

----- добавлено через 49 сек. -----
.. правда определения блоков уже должны быть... ну или каждый раз рисовать

----- добавлено через ~2 мин. -----
...или одинаковые блоки делать

Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Так вроде тема в ветке программирования? Или попросить переместить в VBA?
Попробую. Код Doober (измененный) надо вставлять в Автокаде, как я понимаю?
Да. Наверное в ВБА. Там еще много нюансов, но работать удобнее таким образом ятд.
Нужно загружать макрос в автокаде.

Последний раз редактировалось v.psk, 11.08.2016 в 12:51. Причина: дополнение в ответ на пост 19
v.psk на форуме  
 
Непрочитано 11.08.2016, 12:35
#17
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Цитата:
Сообщение от ButcheR Посмотреть сообщение
Можно поиском выбирать ненужные блоки и через изоляцию объектов показывать визуализацию не заморачиваясь со слоями вообще
Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Но также начальство захотело видеть всю ситуацию на плане установки в разных цветах.
Тем более, по последним данным разведки даже и не в слоях дело, а в цветах...
Владимир_М вне форума  
 
Автор темы   Непрочитано 11.08.2016, 12:37
#18
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Цитата:
Сообщение от Владимир_М Посмотреть сообщение
Тем более, по последним данным разведки даже и не в слоях дело, а в цветах...
Слои чем хороши, что при импорте в pdf встроенным принтером они сохраняются и в файле pdf можно отключать видимость слоев. Поэтому нужны слои.

----- добавлено через ~4 мин. -----
Цитата:
Сообщение от v.psk Посмотреть сообщение
на основе кода Doober'a ятд. /см пост №8 http://www.programmersforum.ru/showthread.php?t=223815 /
Пробуйте. Вам охотнее помогут если попросите переместить тему в соотв. ветку.

----- добавлено через 49 сек. -----
.. правда определения блоков уже должны быть... ну или каждый раз рисовать

----- добавлено через ~2 мин. -----
...или одинаковые блоки делать
Так вроде тема в ветке программирования? Или попросить переместить в VBA?
Попробую. Код Doober (измененный) надо вставлять в Автокаде, как я понимаю?

Последний раз редактировалось 99xt1, 11.08.2016 в 12:43.
99xt1 вне форума  
 
Непрочитано 11.08.2016, 12:48
#19
Владимир_М


 
Регистрация: 05.11.2015
Сообщений: 585


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
Слои чем хороши, что при импорте в pdf встроенным принтером они сохраняются и в файле pdf можно отключать видимость слоев. Поэтому нужны слои.
Это понятно. Просто я-то отвечал в #12 именно по поводу изменения слоя... Как при этом еще и цвет объектов внутри блока поменять, уже другой вопрос...
Владимир_М вне форума  
 
Автор темы   Непрочитано 05.09.2016, 08:45
#20
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


В общем путем поисков и "работы мысли" родился следующий код:
Код:
[Выделить все]
Public Graphics As AcadApplication
 
Public Sub Montag_Sklad_Zakup()
 
    Dim strDrawing As String
    Dim i  As Integer
    Dim BlockName  As String
    Dim NewLayerName  As String
    Dim blk As AcadBlockReference
     
    On Error Resume Next
    Set Graphics = GetObject(, "AutoCAD.Application")
    If Err.Description > vbNullString Then
        Err.Clear
        Set Graphics = CreateObject("AutoCAD.Application")
    End If

    Graphics.Visible = True
    Graphics.WindowState = acMax
    strDrawing = "z:\путь к файлу.dwg"
    Graphics.Documents.Open (strDrawing)
 
    On Error GoTo 0
    
On Error Resume Next
    Err.Clear
    
    i = 2
    Do While Cells(i, 1) <> Empty
        BlockName = Cells(i, 1).Value

        NewLayerName = Cells(i, 7).Value
        For Each blk In AutoCAD.ActiveDocument.ModelSpace
        If blk.Name = BlockName Then
        blk.Layer = NewLayerName
        End If
        Next
        i = i + 1
    Loop
End Sub
Работает. Может кто подскажет какие-нибудь оптимизационные "секреты" (чтобы работал быстрее)?
99xt1 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Распределение блоков по слоям в Autocad при помощи Excel

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение размеров в 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