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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отключение слоя в нескольких открытых документах

Отключение слоя в нескольких открытых документах

Ответ
Поиск в этой теме
Непрочитано 20.08.2015, 15:59 #1
Отключение слоя в нескольких открытых документах
100рож
 
Инженер ПГС
 
Самара
Регистрация: 18.01.2013
Сообщений: 106

Итак, задача. Дано: открыто несколько документов, в которых есть слой с определенным именем. Требуется: включить/отключить этот слой во всех открытых документах.
Вопрос: каким образом можно этот процесс автоматизировать? Файлов может быть открыто много, на переход от документа к документу тратится уйма времени
Поясню, для чего это мне понадобилось. Мы в организации делаем ПДФ с подписями не сканированием бумаги, а печатью из ДВГ. А в ДВГ у нас все подписи лежат на одном слое. При пакетной печати подлинников нужно отключать слой с подписями, при печати ПДФ - включать.
Просмотров: 16947
 
Непрочитано 20.08.2015, 20:54
2 | #2
v.psk

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


Планировал создать новую тему.... Вот макрос.
Слой должен называться "podpis" или подкрути в строке
Set layerObj = ThisDrawing.Layers("podpis")
на другой слой.
Макрос поочередно открывает файлы двг из выбранной папки
и делает слой невидимым. Проверял на 2012.
можно запустить другую команду методом
ThisDrawing.SendCommand " "

----- добавлено через ~1 мин. -----
///писал для обновления ссылок на таблицы xls
Вложения
Тип файла: dvb layvisible_off.dvb (32.0 Кб, 94 просмотров)
v.psk вне форума  
 
Непрочитано 20.08.2015, 21:28
#3
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Цитата:
Сообщение от 100рож Посмотреть сообщение
При пакетной печати подлинников нужно отключать слой с подписями, при печати ПДФ - включать.
А почему бы при пакетной печати сразу не сделать такую функцию ? Автоматом оно быстрее.
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 20.08.2015, 21:32
#4
v.psk

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


Цитата:
Сообщение от maratovich Посмотреть сообщение
сразу не сделать такую функцию ?
это предложение в Autodesk ?
v.psk вне форума  
 
Непрочитано 20.08.2015, 23:36
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


А если попробовать поиграть с состоянием слоев (команда _.layerstate)?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.08.2015, 08:13
#6
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Цитата:
Сообщение от maratovich Посмотреть сообщение
А почему бы при пакетной печати сразу не сделать такую функцию ? Автоматом оно быстрее.
Да я бы рад, это как раз то, что мне нужно. Но не знаю, как это сделать. На VBA бы сообразил, но это ж не Эксель...
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А если попробовать поиграть с состоянием слоев (команда _.layerstate)?
Как именно?
100рож вне форума  
 
Непрочитано 21.08.2015, 08:15
#7
baksconstructor


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


Цитата:
Сообщение от 100рож Посмотреть сообщение
Да я бы рад, это как раз то, что мне нужно. Но не знаю, как это сделать. На VBA бы сообразил, но это ж не Эксель...
Вам сюда
baksconstructor вне форума  
 
Непрочитано 21.08.2015, 08:16
#8
v.psk

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


Чем вариант в посте 2 не устраивает?
v.psk вне форума  
 
Автор темы   Непрочитано 21.08.2015, 08:46
#9
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Цитата:
Сообщение от v.psk Посмотреть сообщение
Чем вариант в посте 2 не устраивает?
  1. В окне выбора папки присутствует только диск D. А мне нужно открыть файлы на сервере.
  2. Если я правильно прочитал скрипт, программа открывает файл, выключает нужный слой, закрывает файл. В какой момент я должен успеть запустить пакетную печать?
Попробую подумать, как заставить этот скрипт включать/выключать слой именно в открытых документах. Другое направление мысли: скрипт, который в зависимости от того, что нужно делать (печатать на бумаге или публиковать в ПДФ), выключает или включает нужный слой и выполняет пакетную печать из заранее сохраненного файла набора листов.
100рож вне форума  
 
Непрочитано 21.08.2015, 08:55
#10
v.psk

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


Пакетная печать подшивкой может быть запущена в закрытых файлах. Т.е.
1. Выполняем макрос off
2. Печатаем в пдф для дальнейшей печати на принтере. Затем я обычно группирую листы по размеру.
3. Выполняем макрос on
4. Печатаем в пдф для заказчика.
Если сохранен список листов для подшивки то это быстро.
Не пробовал на сетевом диске, но вместо D можешь поменять на другой.
v.psk вне форума  
 
Автор темы   Непрочитано 21.08.2015, 13:53
#11
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Итак, результат на сегодня. С помощью скрипта v.psk написан модуль, в который зашита форма. Форма собирает список слоев с активного документа, позволяет выбрать целевой слой и его целевое состояние (вкл/выкл). Далее модуль перебирает открытые документы и в каждом отключает/включает выбранный в форме слой. Проблема одна: как только цикл For доходит до последнего документа появляется ошибка "Method 'Item' of object 'IAcadDocuments' failed". Состояние целевого слоя меняется во всех открытых документах, кроме одного. Может кто посмотрит код и поймет, в чем дело?

Подшивками, наверно удобно было бы сделать, но мы пока их не освоили. Нам пакетная печать уже за счастье )))
Вложения
Тип файла: dvb Layer_switch.dvb (38.0 Кб, 18 просмотров)
100рож вне форума  
 
Автор темы   Непрочитано 21.08.2015, 14:00
#12
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Как же это было просто... Чертов VBA нумерует документы с нуля. Вот исправленный модуль. В принципе, можно его допилить. В форму можно добавить другие свойства слоев, можно организовать (наверно) поиск/замену текста во всех открытых документах. Если пользоваться скриптом от v.psk, то можно это все проделывать, не открывая файлы.
Осталось прикрутить скрипт к кнопке и вот оно, счастье
Вложения
Тип файла: dvb Layer_switch.dvb (38.0 Кб, 51 просмотров)
100рож вне форума  
 
Непрочитано 21.08.2015, 14:33
#13
v.psk

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


Цитата:
Сообщение от 100рож Посмотреть сообщение
ертов VBA нумерует документы с нуля.
у меня же это предусмотрено было

----- добавлено через ~2 мин. -----
)))
предполагалось что открыт сторонний документ
v.psk вне форума  
 
Автор темы   Непрочитано 21.08.2015, 14:47
#14
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Цитата:
Сообщение от v.psk Посмотреть сообщение
предполагалось что открыт сторонний документ
Вот-вот )))
Спасибо всем, кто откликнулся, с пятницей!
100рож вне форума  
 
Непрочитано 21.08.2015, 14:50
#15
v.psk

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


вот соответственно макрос для обновления связей с xls

----- добавлено через 21 сек. -----
Цитата:
Сообщение от 100рож Посмотреть сообщение
с пятницей!
) взаимно
Вложения
Тип файла: dvb datalinksnfiles.dvb (16.0 Кб, 22 просмотров)
v.psk вне форума  
 
Непрочитано 21.08.2015, 15:24
#16
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


Интересно ситуация складывается... Вопрос задан в разделе "AutoCAD", а не программирование. Соответственно предполагалось использование только штатных средств AutoCAD. Вместо этого началась vba-писанина. Для которой, между прочим, есть отдельный раздел - "Программирование" называется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.08.2015, 15:51
#17
v.psk

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


Задача стояла следующая
Цитата:
Сообщение от 100рож Посмотреть сообщение
каким образом можно этот процесс автоматизировать
Что касается штатных способов автоматизации, то мне приходит на ум только встроенный рекордер операций.
Мб еще что есть.
v.psk вне форума  
 
Автор темы   Непрочитано 24.08.2015, 08:19
#18
100рож

Инженер ПГС
 
Регистрация: 18.01.2013
Самара
Сообщений: 106


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Интересно ситуация складывается... Вопрос задан в разделе "AutoCAD", а не программирование. Соответственно предполагалось использование только штатных средств AutoCAD. Вместо этого началась vba-писанина. Для которой, между прочим, есть отдельный раздел - "Программирование" называется.
Действительно, тема плавно перешла в область программирования, хотя изначально вопрос был задан безотносительно к методам получения результата. Теперь тему можно перенести в другую ветку.
100рож вне форума  
 
Непрочитано 07.06.2017, 12:35
1 | #19
kegorovsc


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


Цитата:
Сообщение от v.psk Посмотреть сообщение
Планировал создать новую тему.... Вот макрос.
Слой должен называться "podpis" или подкрути в строке
Set layerObj = ThisDrawing.Layers("podpis")
на другой слой.
Макрос поочередно открывает файлы двг из выбранной папки
и делает слой невидимым. Проверял на 2012.
можно запустить другую команду методом
ThisDrawing.SendCommand " "

----- добавлено через ~1 мин. -----
///писал для обновления ссылок на таблицы xls
Спасибо работает макрос. Но почему то файлы не закрывает после выключения слоя. Хотя у него вроде прописано внутри об этом. Пробовал на акаде 2009. также интересно как включать обратно слой? сделать макрос с именем ..._on и прописать вместо false - true? больше ничего на ум не приходит=)
kegorovsc вне форума  
 
Непрочитано 18.02.2020, 15:37
#20
allar8


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


Цитата:
Сообщение от kegorovsc Посмотреть сообщение
Спасибо работает макрос. Но почему то файлы не закрывает после выключения слоя. Хотя у него вроде прописано внутри об этом. Пробовал на акаде 2009. также интересно как включать обратно слой? сделать макрос с именем ..._on и прописать вместо false - true? больше ничего на ум не приходит=)
Спасибо! Есть счастье. С этим разобралси. Тема с пакетной печатью и автовключением подписей тоже интересна но у нас своя софтина пакетной печати. Я туда енто не пришью)

----- добавлено через ~5 мин. -----
Цитата:
Сообщение от v.psk Посмотреть сообщение
Планировал создать новую тему.... Вот макрос.
Слой должен называться "podpis" или подкрути в строке
Set layerObj = ThisDrawing.Layers("podpis")
на другой слой.
Макрос поочередно открывает файлы двг из выбранной папки
и делает слой невидимым. Проверял на 2012.
можно запустить другую команду методом
ThisDrawing.SendCommand " "
Подскажите еще плиз, как исправить этот dvb, чтоб не скрывать слой а замораживать размораживать. Заранее Спасибо!
allar8 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Отключение слоя в нескольких открытых документах

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение цыета слоя в нескольких файлах elena_din AutoCAD 16 01.12.2017 13:50
Редактирование свойств слоя в нескольких документах одновременно SKY_SHY AutoCAD 7 30.03.2012 15:35
Почему не проходит теплорасчет? Suom Конструкции зданий и сооружений 15 10.08.2011 17:22