Тема: Автоматизация обьединение слоев в чертежах.

Здравствуйте! Буду очень признателен, если кто-то поможет в следующей задаче:

a) Нужно что бы одной командой (lisp/VBA/.NET) все слои с:
- толщиной линий 0.09 и типом линий Continuous объединились в слой с названием 0.09; (цвет любой)
- толщиной линий 0.30 и типом линий Continuous объединились в слой с названием 0.30; и т.п. от 0.05 до 0.70
(в лиспе не обязательно предусмотреть создания слоев, могу всегда добавлять в ручную в файл все необходимые слои).

б) и вторая часть программы или отдельная программа выполняла переназначение слоев для тех объектов которым поставлены вручную свойства толщины например 0.40 тоже бы ставились на слой 0.40, цвет также что бы не играл значение.

Другие уже слои и объекты с другим типом линий кроме Continuous (оси, штрих..) можно оставить как есть их потом можно и в ручную объединить через Layer Merge.

Задача стоит что бы уменьшить количество слоев в файлах которые получаю от других людей (у которых по 600-700 слоев Карл!), и что бы при копирование в моих чертежах не засорял себе файл. Мне нравиться не только когда внешне чертежи аккуратные но еще что бы внутри все было понятно.

Хочу отметить что хочется именно объединения слоев а не переименование то что я находил на форуме но к сожалению не подошли.

(изменено: АлексЮстасу, 1 сентября 2020г. 15:06:02)

Re: Автоматизация обьединение слоев в чертежах.

Для моей программы ODCLASS - эта задача побочная, но решенная.
Делаем файл описания типов объектов, определенных на основе только нужных весов линий: 0.09, 0.30, 0.40 и т.п.
И делаем на его основе второй файл описаний типов объектов, в котором в определения добавлены нужные слои: "0.09", "0.30", "0.40" и т.п.
Для полученных файлов:
1. Подключаем первый файл описания с весами, и выполняем команду Edit -- Define (ODCLASS_CLASSIFY_AUTO). На все жмем Enter. Команда определит все объекты файла по их типам в зависимости от весов.
2. Подключаем второй файл описания со слоями, и выполняем команду Edit -- Restore Graphical Properties (ODCLASS_RESTORE). На все жмем Enter. Команда всем определенным уже объектам назначит нужный слой.

Можно использовать предварительный выбор, можно выбрать после, Enter означает все объекты.

Про п. б) я не оч. понял. Вроде бы задача та же? И можно действовать так же.
Но можно выбрать все с весом 0.40, правой кнопкой на тип объекта "0.40", Define и Enter при включенных опциях.

Программу можно взять в Загрузка из http://odclass-odedit.com, из "Свободная версия ODCLASS на основе Xrecord - для любого AutoCAD:".
Примеры файлов описания в https://yadi.sk/d/sbbRC9MqTfNzSg?w=1
Line_Weight_09_30_40.txt - типы объектов на основе весов линий.
Line_Weight_09_30_40_Layer.txt - типы объектов с нужными слоями.

Re: Автоматизация обьединение слоев в чертежах.

АлексЮстасу
Огромное спасибо за ответ! действительно из того что я посмотрел это возможно методом который вы мне предложили. на выходных займусь изучением, как это можно реализовать при помоши вашей програмы.

Про разницу между задачей а и б
Задача а) - работа только со слоями - например: в файле есть следушие слои - Двери (тольшина на слое 0.15) Стена (толщина 0.30) Толстая линия (толщина 0.60). и этих слоев много, и нужно их объединить и сгруппировать в седеющие слои - 0.05; 0.09; и т.п. до например 0.70. Проблему не нужно решить простои переименованием слоя но их объединением. потому что в вайле есть 100500 слоев с толщиной 0.30 а мне нужно что все эти 100500 слоев стали одним слоем 0.30, и так далее для всех слоев. (брать во внимание только те слои у которых тип линий Сплошная.

Задача б) - работа только с примитивами автокада, то есть, например линия уже присвоенный слой 0.30, но ей вручную выставлена толщина 0.50, так вот задача б) это как второй этап первого, после "уборки" в слои, переназначить те примитивы у которых переназначена не по слою а по конкретной толщины, то переназначить данный объект на соотвестуюший слой своей толщины

Re: Автоматизация обьединение слоев в чертежах.

1. Берете мой файл описания Line_Weight_09_30_40.txt для типов объектов с описанными только весами линий.
Делаете другие нужные типы объектов копированием-редактированием описания любого типа объектов оттуда.
2. Создаете или берете имеющийся dwg, dwt с нужными Вашими слоями, и записываете его путь/название вместо "Чертеж1.dwg" в строке в начале:
#Layer    Чертеж1.dwg
Решетку убираете - это знак закомментированной строки.
3. На основе созданного Вами файла описания со всеми нужными типами объектов создаете новый, в котором добавляете описания нужных слоев - см. пример Line_Weight_09_30_40_Layer.txt.

Процесс - определить Define, заменить файл описания, и Restore - как в предыдущем посте написано.

Главная сложность может быть в том случае, если веса линий в dwg назначены не прямо, а ПоСлою. Если прямо, то сработает нормально.

А Ваше "б)" я все еще не понял. Лучше пример на одном-двух примитивах.

(изменено: АлексЮстасу, 12 сентября 2020г. 16:10:25, причина: добавлено)

Re: Автоматизация обьединение слоев в чертежах.

Получилось?
Или какие-то проблемы?
Если что - подскажу.

Добавил:

После автоматического определения Define всех элементов dwg, можно найти все элементы, которые не определились. Не определятся те элементы dwg, свойства которых не описаны ни у одного типа объектов.
Check -- Foreign Objects.

И можно выбирать в dwg объекты нужного типа - указать правой кнопкой в меню объектов нужный тип объекта и Select.