Как перенести слои в автокаде из одного чертежа в другой
Перейти к содержимому

Как перенести слои в автокаде из одного чертежа в другой

  • автор:

Как перенести слои из одного рисунка Автокада в другой?

Форумы CADUser → Приемы работы → Импорт и экспорт данных → Как перенести слои из одного рисунка Автокада в другой?

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 9

#1 Тема от leha 23 октября 2006г. 12:24:51

Тема: Как перенести слои из одного рисунка Автокада в другой?

Как перенести отдельные слои из одного рисунка Автокада в другой рисунок автокада?

#2 Ответ от kpblc 23 октября 2006г. 12:26:54

Re: Как перенести слои из одного рисунка Автокада в другой?

#3 Ответ от leha 23 октября 2006г. 13:40:32

Re: Как перенести слои из одного рисунка Автокада в другой?

А это что? У меня русская версия.
Вообщем-то разобрался сам (если кому пригодится):
Вариант 1
1. надо сделать одинаковым направление осей Х и У в обоих файлах.
2. в рисунке в который надо перенести слои: вставка — блок — обзор — выбрать файл из которого надо перенести слои.
3. ненужные слои удалить
Вариант 2
1. надо сделать одинаковым направление осей Х и У в обоих файлах.
2. в диспетчере слоёв нажать правой кнопкой мыши по нужному слою файла из которого надо перенести слои — сохранить конфигурацию (вводим имя и т.п.) — затем снова пр. кн. по слою — восстановить конфигурацию (выбираем ту что была сохранена) — экспорт.
3. В файле куда переносим делаем всё тоже самое, только импорт.
4. сам рисунок нужно копировать вручную, при этом вставлять по исх. координатам.
Возможно я сделал что-то неправильно. Если есть ошибки — напишите пожалуйста какие именно.

Как перенести слои в автокаде из одного чертежа в другой

beliit.com

  • Все форумы
    • Технологический форум
      • Машиностроение
      • Металлургия
      • Химия, нефтехимия и топливная промышленность
      • Деревообработка
      • Пищевая промышленность
      • Животноводство, рыбоводство и растениеводство
      • Другие темы
      • Общие вопросы
      • Промышленность стройматериалов
      • Экология
      • Охрана труда и техника безопасности
      • Биржа труда
      • Генеральные планы
      • Сооружения транспорта
      • Автомобильные дороги
      • Железнодорожные пути
      • Мостостроение
      • Другие темы
      • Общие вопросы
      • Инженерные изыскания
      • Биржа труда
      • Архитектурные решения
      • Дизайн интерьеров
      • Ландшафтное проектирование
      • Реконструкция и реставрация зданий
      • Градостроительство
      • Общие вопросы
      • Другие темы
      • Светотехника
      • Биржа труда
      • Основания и фундаменты, механика грунтов
      • Конструкции железобетонные
      • Конструкции деревянные
      • Конструкции металлические
      • Обследование и усиление строительных конструкций
      • Ограждающие конструкции, кровли
      • Общие вопросы
      • Другие темы
      • Строительная теплотехника
      • Защита от шума и вибрации
      • Программы ConstructorSoft
      • Организация строительства и производства работ
      • Биржа труда
      • Классификация зданий, помещений и зон
      • Пожарная сигнализация
      • Общие вопросы
      • Огнестойкость строительных конструкций
      • Оповещение и эвакуация
      • Водяное и пенное пожаротушение
      • Газовое, порошковое и аэрозольное пожаротушение
      • Дымоудаление
      • Другие темы
      • Огнеопасные свойства веществ и материалов
      • Биржа труда
      • Генерация электроэнергии
      • Электрические подстанции
      • Силовое электрооборудование
      • Электроосвещение внутреннее
      • Электроосвещение наружное
      • Заземление и молниезащита
      • Воздушные и кабельные ЛЭП
      • Общие вопросы
      • Другие темы
      • Взрывозащищенное электрооборудование
      • Электропривод и электрические машины
      • Учёт электроэнергии
      • Электропроводки и токопроводы
      • Программы Beroes Group
      • Релейная защита и автоматика
      • Контактные сети
      • Электроснабжение объектов
      • Биржа труда
      • Автоматика и телемеханика
      • Локальные сети передачи данных
      • Телевидение и радиовещание
      • Общие вопросы
      • Другие темы
      • Телефония и другие системы связи
      • Контроллеры и электроника
      • Оптоволоконные сети передачи данных
      • Видеонаблюдение и СКУД
      • Охранная сигнализация
      • Биржа труда
      • Внутренние водопровод и канализация
      • Наружные сети водоснабжения
      • Наружные сети канализации
      • Насосные станции
      • Противопожарное водоснабжение
      • Общие вопросы
      • Другие темы
      • Биржа труда
      • Холодоснабжение
      • Вентиляция
      • Кондиционирование
      • Воздухоснабжение
      • Аспирация (пылеудаление)
      • Общие вопросы
      • Другие темы
      • Биржа труда
      • Тепловые станции
      • Теплоснабжение
      • Теплоизоляция оборудования и трубопроводов
      • Тепломеханические решения котельных
      • Отопление
      • Устройства газоснабжения
      • Общие вопросы
      • Другие темы
      • Биржа труда
      • AutoCAD, AutoCAD LT и СПДС модуль Autodesk
      • AutoCAD Civil 3D (Land Desktop), AutoCAD Map 3D и AutoCAD Raster Design
      • Revit Architecture и AutoCAD Architecture
      • Revit Structure, AutoCAD Structural Detailing и Autodesk Robot Structural
      • Revit MEP и AutoCAD MEP
      • Autodesk 3ds Max (Design), AutoCAD Freestyle и Autodesk Impression
      • Autodesk Design Review, DWG TrueView, Autodesk DWF Writer, AutoCAD WS
      • Autodesk Navisworks Products, Autodesk Vault Products
      • AutoCAD Electrical
      • AutoCAD Mechanical
      • Autodesk Inventor
      • AutoCAD P&ID, AutoCAD Plant 3D, Autodesk Intent
      • Общие вопросы
      • Другие программы Autodesk
      • Общие вопросы
      • Allplan
      • GeoniCS
      • CREDO
      • Другие программы
      • ArchiCAD
      • DIALux
      • MicroSoft Office
      • nanoCAD и другое ПО от «Нанософт»
      • T-Flex CAD и другое ПО от «Топ Системы»
      • Компас и другое ПО от «Аскон»
      • Программы Weisskrahe
      • Стоимость строительно-монтажных работ
      • Стоимость проектных работ
      • Стоимость пусконаладочных работ
      • Стоимость ремонтных работ
      • Стоимость технического обслуживания
      • Программное обеспечение для составления смет
      • Другие темы
      • Биржа труда
      • Авторский надзор
      • Архивы и делопроизводство
      • Другие темы
      • Общие вопросы
      • Технический надзор
      • Управление проектами
      • Юридические вопросы
      • Свободное общение, шутки, юмор
      • Вопросы, замечания и предложения по сайтам
      • Вопросы, замечания и предложения по форумам
      • www.proektant.by
      • Строительные калькуляторы и конструкторы
      • Архив файлов
        • Технологический
        • Генплан и сооружения транспорта
        • Архитектурный
        • Строительный
        • Пожарная безопасность
        • Электротехнический
        • Автоматизация, связь, сигнализация
        • Водоснабжение и канализация
        • Вентиляция, кондиционирование и холодоснабжение
        • Теплоснабжение и газоснабжение
        • Библиотека строительных норм и правил
        • Библиотека строительства «Зодчий»
        • Библиотека климатического оборудования
        • Библиотека кафедры ТТГВ ТОГУ
        • Все пользователи
        • Кураторы подразделов
        • Пользователи по регионам
        • Посетившие форумы в течение суток
        • Поиск пользователей
        • Правила форумов
        • Список всех подразделов
        • Список всех тем
        • Календарь
        • Забыли пароль?
        • Регистрация
        • Помощь

        ПОИСК ПО ФОРУМАМ

        перед созданием новых тем используйте поиск,
        возможно ответ на Ваш вопрос уже есть на форумах

        копирование слоев.

        Подскажите поподробней пожалуйста. У меня acad 2005, можно ли и как скопировать слой со всеми объектами которые в нем находяться в новый чертеж.

        Просмотров: 15099
        Регистрация: 22.12.2005
        С.-Петербург
        Сообщений: 1,224

        А что, разве есть проблемы? Отключи ненужные слои, а с нужного слоя все объекты пометь и через буфер обмена скопируй в новый чертеж (файл)

        Регистрация: 29.11.2005
        Сообщений: 268
        копирую слой через Designcenter слой копируеться а объектов нету.
        Регистрация: 29.11.2005
        Сообщений: 268

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

        Регистрация: 30.10.2004
        Красноярск
        Сообщений: 3,825
        Дык не слой копируй, а объект. А слои сами подтянутся.
        Регистрация: 29.11.2005
        Сообщений: 268

        бъектов очень много думаю как нить через слои можно или нет.

        LISP, C# (ACAD 200[9,12,13,14])

        Регистрация: 25.08.2003
        С.-Петербург
        Сообщений: 39,810

        А почему бы не выбрать все объекты данного слоя (хоть через _.qselect, хоть через фильтры, как угодно) и не сделать _.wblock?

        __________________
        Моя библиотека lisp-функций

        Обращение ко мне — на «ты».
        Все, что сказано — личное мнение.

        Кулик Алексей aka kpblc
        Посмотреть профиль
        Посетить домашнюю страницу Кулик Алексей aka kpblc
        Найти ещё сообщения от Кулик Алексей aka kpblc

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

        я и спрашиваю как лучше сделать подскажите поподробней

        Проектировщик ВК. LISP-любитель.

        Регистрация: 15.12.2003
        Сообщений: 1,190

        pomka
        Просто Вам надо решить что Вы копируете. Если слой как объект — тогда Designcenter — то что Вам надо. Если все обьекты находящиеся на определенном слое — тогда вам надо сначала выделить в изначальном файле эти обьекты. Помочь в этом может команда _.qselect или _.filter. Или изолирование нужного слоя (включен только он) и выделение рамкой видимых обьектов. Изолирование удобно производить например командой _.layiso из express tools.
        при копировании обьектов через буфер обмена с ними в чертеже появится и нужный слой.

        Можно написать лисп (хотя наверняка кто-то уже написал) который позволит копировать из файла файл все объекты на опр. слое. Но стоит ли заморачиваться? Многое зависит от конкретной задачи, ведь есть и другие пути.

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

        по пунктам:
        1. _.wblock
        2. указываешь базовую точку и в области Select Objects жмешь кнопку Quick Select и выбираешь нужный слой
        3. корректируешь имя будующего файла и пусть к нему
        баста тобишь окей
        смотришь и радуешься

        Регистрация: 24.10.2005
        Новокузнецк
        Сообщений: 1,124
        а частичное открытие файла не поканает? все гениальное — просто.
        Регистрация: 29.11.2005
        Сообщений: 268
        всем огромное спасибо))))

        LISP, C# (ACAD 200[9,12,13,14])

        Регистрация: 25.08.2003
        С.-Петербург
        Сообщений: 39,810

        Я не особо представляю, для чего такое требуется, но тем не менее:
        Дать команду _.wblock, в ней нажать на кнопку «QuickSelect» и в окне выбрать, что работать над всем файлом, выбирать несколько типов примитивов, принадлежащих определенному слою (Layer) с определенным именем.. Картинка ниже:
        [ATTACH]1136884762.jpg[/ATTACH]

        Добавлено:
        Ну вот как всегда — хотелось сделать покрасивше. Пока делал, опередили

        __________________
        Моя библиотека lisp-функций

        Обращение ко мне — на «ты».
        Все, что сказано — личное мнение.

        Кулик Алексей aka kpblc
        Посмотреть профиль
        Посетить домашнюю страницу Кулик Алексей aka kpblc
        Найти ещё сообщения от Кулик Алексей aka kpblc

        Перенос состояния слоев из одного файла в другой

        Прошу помочь в написании программы, которая сохраняет состояние слоев выделенных объектов:

        — включен/выключен
        — цвет
        — толщина линии
        — тип линии

        с последующим восстановлением этого состояния в другом файле.

        Просмотров: 8323

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        Регистрация: 15.08.2008
        Санкт-Петербург
        Сообщений: 1,702
        Программа на LISP?
        В чем сложность?
        Регистрация: 03.02.2006
        Сообщений: 5,737
        Язык не важен.
        Сложность в том, что мне нужна эта программа )))

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        LISP, C# (ACAD 200[9,12,13,14])

        Регистрация: 25.08.2003
        С.-Петербург
        Сообщений: 39,810
        Layer States Manager?

        __________________
        Моя библиотека lisp-функций

        Обращение ко мне — на «ты».
        Все, что сказано — личное мнение.

        Кулик Алексей aka kpblc
        Посмотреть профиль
        Посетить домашнюю страницу Кулик Алексей aka kpblc
        Найти ещё сообщения от Кулик Алексей aka kpblc

        Регистрация: 23.03.2009
        Сообщений: 120
        Сообщение от Кочетков Андрей
        Язык не важен.
        Сложность в том, что мне нужна эта программа )))
        Типа заказчик — По моему хотенью, по моему веленью.
        __________________
        Мой сайт ingnmb.wixsite.com/acad-s
        Регистрация: 15.08.2008
        Санкт-Петербург
        Сообщений: 1,702

        1. Запускаем программу №1 в чертеже-источнике. Она просит выделить объекты. Объекты выделяем, жмем энтер, программа сохраняет указанные свойства слоев во внешний текстовый файл.
        2. Запускаем программу №2 в чертеже-приемнике. Она считывает данные из текстового файла и создает слои со свойствами, указанными в файле.

        Регистрация: 03.02.2006
        Сообщений: 5,737
        Сообщение от Кулик Алексей aka kpblc
        Layer States Manager?

        В принципе, да. Но с помощью LSM переносятся состояния всех слоев чертежа, а нужно только выбранных объектов.

        Сообщение от Do$
        Как я себе представляю:
        .
        Так что ли?
        Примерно так я себе это и представлял.
        Но решения могут быть любыми.

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        Регистрация: 15.08.2008
        Санкт-Петербург
        Сообщений: 1,702
        Сообщение от Кочетков Андрей

        Прошу помочь в написании программы, которая сохраняет состояние слоев выделенных объектов:

        включен/выключен
        — цвет
        — толщина линии
        — тип линии

        с последующим восстановлением этого состояния в другом файле.

        А как выделять объекты на выключенном слое?
        Регистрация: 11.05.2005
        Сообщений: 6,991

        Кочетков Андрей, Если все делать в одном сеансе (типа открыл и чертеж-источник и чертеж приемник), то можно обойтись без файла (VL-PROPAGATE ). Так устроит?

        __________________
        Как использовать код на Лиспе читаем здесь
        Регистрация: 03.02.2006
        Сообщений: 5,737
        Сообщение от Do$
        А как выделять объекты на выключенном слое?

        Да, не подумал.
        Проблема изначально пошла из блоков: при вставке блока из одного файла в другой, его отображение нарушалось за счет иных настроек слоев файла-приемника (в том числе некоторые объекты не отображаются вообще, т.к. слой выключен).
        Блоки сложные, многоярусные. Вручную переопределять параметры достаточно сложно.

        Сообщение от VVA

        Если все делать в одном сеансе (типа открыл и чертеж-источник и чертеж приемник), то можно обойтись без файла (VL-PROPAGATE ). Так устроит?

        В связи с первым предыдущим замечанием я хотел бы изменить условие создание набора:
        в набор попадают объекты
        — выделенные вручную
        — входящие в состав выбранного вручную блока (в том числе в состав подблоков).

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        Регистрация: 29.10.2004
        Талды-Париж
        Сообщений: 5,989

        По-моему проще перед копированием слои переименовать, или к их именам добавить какой-нибудь индекс, чтоб имена не совпали и настройки сохранились. Или важно имена слоев сохранять?

        Регистрация: 03.02.2006
        Сообщений: 5,737

        Сохранение имен слоев предпочтительнее для моего случая.
        Иначе можем получить гигантский список с которым в дальнейшем невозможно будет работать.

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        Регистрация: 15.08.2008
        Санкт-Петербург
        Сообщений: 1,702
        Сообщение от Кочетков Андрей

        Прошу помочь в написании программы, которая сохраняет состояние слоев выделенных объектов:

        — включен/выключен
        — цвет
        — толщина линии
        — тип линии

        с последующим восстановлением этого состояния в другом файле.

        А как быть, если в чертеже-приемнике не загружены необходимые типы линий?
        Как их програмно перенести из чертежа-источника?
        Программу написал, но споткнулся на этом.

        Регистрация: 03.02.2006
        Сообщений: 5,737
        Сообщение от Do$
        А как быть, если в чертеже-приемнике не загружены необходимые типы линий?

        Типы линий у нас используются дефолтные, самодельных практически нет.
        Возможно для загрузки пригодится метод Load
        Файлы для загрузки acad.lin и acadiso.lin
        Если метод не отработал, то присваиваем обрабатываемому слою тип Continious

        Кочетков Андрей
        Посмотреть профиль
        Найти ещё сообщения от Кочетков Андрей

        Регистрация: 15.08.2008
        Санкт-Петербург
        Сообщений: 1,702
        Ну тогда не буду ломать голову пока.
        Пробуйте.

        (defun C:olscopy (/ select *error* objlayimp objlayexp repeat-member-remove-from-list block-item-list _dwgru-is-ent-block-reference _dwgru-property-get _dwgru-conv-ent-to-vla _dwgru-conv-pickset-to-list ) ;;;Основные функции программы: ;;;************************************************************************************************* (defun objlayimp (/ adoc layers lay) ;;;(objlayimp) (if *olsc:object_layer_state_list* (progn (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers adoc) linetypes (vla-get-Linetypes adoc) ) ;_ end of setq (prompt "\nИмпортированы слои и/или настройки слоев:") (foreach lay_state *olsc:object_layer_state_list* (setq lay (vla-add layers (car lay_state))) (prompt "\n\t\t") (prin1 (car lay_state)) (if (or (tblsearch "ltype" (setq linetype (cdr (assoc "Linetype" (cdr lay_state)))) ) ;_ end of tblsearch (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-load (list linetypes linetype "acad.lin") ) ;_ end of vl-catch-all-apply ) ;_ end of vl-catch-all-error-p ) ;_ end of not (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-load (list linetypes linetype "acadiso.lin") ) ;_ end of vl-catch-all-apply ) ;_ end of vl-catch-all-error-p ) ;_ end of not ) ;_ end of or (setq lay_state (cdr lay_state)) (setq lay_state (subst (cons "Linetype" "Continuous") (cons "Linetype" linetype) (cdr lay_state) ) ;_ end of subst ) ;_ end of setq ) ;_ end of if (foreach prop lay_state (if (vlax-property-available-p lay (car prop)) (vlax-put-property lay (car prop) (cdr prop)) ) ;_ end of if ) ;_ end of foreach ) ;_ end of foreach (setq word (vl-catch-all-apply (function (lambda () (initget "Да Нет _Yes No") (getkword "\nУдалить импортированные данные о состоянии слоев из памяти? [Да/ Нет]" ) ;_ end of getkword ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply ) ;_ end of setq (if (or (not word) (= word "Yes")) (progn (setq *olsc:object_layer_state_list* nil) (vl-propagate '*olsc:object_layer_state_list*) ) ;_ end of progn ) ;_ end of if ) ;_ end of progn (alert "Прежде чем импортировать состояния слоев, их нужно экспортировать!" ) ;_ end of prompt ) ;_ end of if ) ;_ end of defun (defun objlayexp (/ adoc layers selset obj_list layer_list) ;;;(objlayexp) (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)) layers (vla-get-Layers adoc) ) ;_ end of setq (while (not selset) (setq selset (vl-catch-all-apply (function (lambda () (prompt "\nУкажите объекты для определения экспортируемых слоев:" ) ;_ end of prompt (ssget) ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply ) ;_ end of setq (cond ((not selset) (prompt "\nНе указаны объекты!")) ((vl-catch-all-error-p selset) (prompt "\nПрервано пользователем!") ) (T (setq obj_list (_dwgru-conv-pickset-to-list selset))) ) ;_ end of cond ) ;_ end of while (if obj_list (progn (foreach ent obj_list (setq layer_list (cons (_dwgru-property-get ent (quote Layer)) layer_list) ) ;_ end of setq (if (_dwgru-is-ent-block-reference ent) (setq layer_list (append (mapcar (function (lambda (a) (_dwgru-property-get a (quote Layer))) ) ;_ end of function (block-item-list ent) ) ;_ end of mapcar layer_list ) ;_ end of append ) ;_ end of setq ) ;_ end of if ) ;_ end of foreach (setq *olsc:object_layer_state_list* (mapcar (function (lambda (b) (cons b (mapcar (function (lambda (a) (cons a (vlax-get-property (vla-Item layers b) a) ) ;_ end of cons ) ;_ end of lambda ) ;_ end of function (list "Linetype" "TrueColor" "Lineweight" "LayerOn" ) ;_ end of list ) ;_ end of mapcar ) ;_ end of cons ) ;_ end of lambda ) ;_ end of function (repeat-member-remove-from-list layer_list ) ;_ end of repeat-member-remove-from-list ) ;_ end of mapcar ) ;_ end of setq (vl-propagate (quote *olsc:object_layer_state_list*)) (prompt (strcat "\nЦвет, вес линии, тип линии, и состояние включен/выключен" "\nследующих слоев сохранены в памяти:" ) ;_ end of strcat ) ;_ end of prompt (foreach lay_name (mapcar (function car) *olsc:object_layer_state_list*) (prompt "\n\t\t") (prin1 lay_name) ) ;_ end of foreach ) ;_ end of progn ) ;_ end of if ) ;_ end of defun ;;;Вспомогательные функции собственной разработки: ;;;************************************************************************************************* (defun *error* (msg) (alert (strcat "В процессе работы программы возникла ошибка! Сообщите о ней разработчику!" "\n***\n" msg "\n***" ) ;_ end of strcat ) ;_ end of alert ) ;_ end of defun (defun repeat-member-remove-from-list (lst / memb rez) ;| Функция для удаления повторяющихся элементов списка. lst - список Возможен некорректный результат для списка из вещественных чисел. Пример вызова: (repeat-member-remove-from-list '("a" "b" "c" "b" "c" "c" "aa" "a" "bb")) ->("a" "b" "c" "aa" "bb") |; (while lst (setq memb (car lst) lst (vl-remove-if (function (lambda (m) (equal memb m)) ) ;_ end of function (cdr lst) ) ;_ end of vl-remove-if rez (cons memb rez) ) ;_ end of setq ) ;_ end of while (reverse rez) ) ;_ end of defun (defun block-item-list (blk / blocks lst memb rez block-item-list-recurse) ;| Функция получения списка VLA-указателей на объекты в составе блока, включая объекты в составе вложенных блоков. Список не содержит повторяющихся объектов. (setq test (block-item-list (car (entsel)))) |; (defun block-item-list-recurse (blk / item_list) ;| Функция получения списка VLA-указателей объекты в составе блока, включая объекты в составе вложенных блоков. Список может содержать повторяющиеся объекты, если они входят в состав блока несколько раз. (block-item-list-recurse (car (entsel "\nУкажите блок:"))) |; (if (_dwgru-is-ent-block-reference blk) (vlax-for item (vla-item blocks (_dwgru-property-get blk 'EffectiveName) ) ;_ end of vla-item (setq item_list (cons item item_list)) (if (_dwgru-is-ent-block-reference item) (setq item_list (append (block-item-list-recurse item) item_list) ) ;_ end of setq ) ;_ end of if ) ;_ end of vlax-for ) ;_ end of if item_list ) ;_ end of defun (setq blocks (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) ;_ end of vla-get-Blocks ) ;_ end of setq ;;; (while lst ;;; (setq memb (car lst) ;;; lst (vl-remove-if ;;; (function ;;; (lambda (m) (equal memb m)) ;;; ) ;_ end of function ;;; (cdr lst) ;;; ) ;_ end of vl-remove-if ;;; rez (cons memb rez) ;;; ) ;_ end of setq ;;; ) ;_ end of while (repeat-member-remove-from-list (block-item-list-recurse blk) ) ;_ end of repeat-member-remove-from-list ) ;_ end of defun ;;;Вспомогательные функции из библиотеки DWG.RU ;;;************************************************************************************************* (defun _dwgru-is-ent-block-reference (ent) ;| * Проверяет, является ли переданный примитив указателем на вхождение * блока (BlockReference). * Параметры вызова: ent проверяемый примитив. Допустимые значения: ename vla-object string ; обрабатывается как хендл примитива * Возвращает t (объект - вхождение блока) или nil (любой иной объект) * Примеры вызова: (_dwgru-is-ent-block-reference (car (entsel "\nУкажите любой объект : "))) |; (and (= (_dwgru-property-get ent 'objectname) "AcDbBlockReference" ) ;_ end of = (not (_dwgru-property-get ent 'path)) ) ;_ end of and ) ;_ end of defun (defun _dwgru-property-get (obj prop) ;| * Получение значения свойства объекта. * Параметры вызова: obj указатель на объект. Допускается применение ename, vla, строки (в последнем случае воспринимается как хендл объекта) prop имя свойства. Может быть строкой или атомом * Возвращает значение указанного свойства. Если свойства у объекта нет, * возвращает nil. * Примеры вызова: (_dwgru-property-get (vla-get-ActiveDocument (vlax-get-acad-object)) 'activelayer) ; # (_DWGRU-PROPERTY-GET (vla-get-ActiveDocument (vlax-get-acad-object)) 'layer) ; nil |; (if (and (setq obj (_dwgru-conv-ent-to-vla obj)) (vlax-property-available-p obj prop) ) ;_ end of and (vlax-get-property obj prop) ) ;_ end of if ) ;_ end of defun (defun _dwgru-conv-ent-to-vla (ent) ;| * Выполняет преобразование переданного указателя в vlax-вариант * Параметры вызова: ent обрабатываемый указатель. Может быть: ename vla-object строка (воспринимается как хендл примитива). * Примеры вызова: (setq entity (entmakex (list (cons 0 "POINT") (cons 10 (getpoint))))) (_dwgru-conv-ent-to-vla entity) ; # |; (cond ((= (type ent) 'vla-object) ent) ((= (type ent) 'ename) (vlax-ename->vla-object ent)) ;| ;; Оригинальный вариант: ((= (type ent) 'str) (vlax-ename->vla-object (handent ent))) |; ;; Исправления Alaspher от 28.11.2007. Начало. ((= (type ent) 'str) (if (setq ent (handent ent)) (vlax-ename->vla-object ent) ) ;_ end of if ) ;; Исправления Alaspher от 28.11.2007. Конец (t nil) ) ;_ end of cond ) ;_ end of defun (defun _dwgru-conv-pickset-to-list (value / tab item) (repeat (setq tab nil item (sslength value) ) ;_ end setq (setq tab (cons (ssname value (setq item (1- item))) tab)) ) ;_ end repeat ) ;_ end defun ;;;************************************************************************************************* (vl-load-com) (setq select (vl-catch-all-apply (function (lambda () (initget "Экспорт Импорт Выход _Export Import Quit") (getkword "\nКакое действие нужно выполнить?:[Экспорт/ Импорт/ Выход]" ) ;_ end of getkword ) ;_ end of lambda ) ;_ end of function ) ;_ end of vl-catch-all-apply ) ;_ end of setq (cond ((or (vl-catch-all-error-p select) (= select "Quit")) (prompt "\nПрервано пользователем!") ) ((or (not select) (= select "Export")) (objlayexp)) ((= select "Import") (objlayimp)) (T (prompt "\nЧто-то не так. ")) ) ;_ end of cond (princ) ) ;_ end of defun

        Последний раз редактировалось Do$, 13.01.2010 в 14:58 .

        LISP, C# (ACAD 200[9,12,13,14])

        Регистрация: 25.08.2003
        С.-Петербург
        Сообщений: 39,810
        Ну, и мой вариант Вроде все лишнее снес.

        LayerStatus.lsp (26.4 Кб, 122 просмотров)

        __________________
        Моя библиотека lisp-функций

        Обращение ко мне — на «ты».
        Все, что сказано — личное мнение.

        Кулик Алексей aka kpblc
        Посмотреть профиль
        Посетить домашнюю страницу Кулик Алексей aka kpblc
        Найти ещё сообщения от Кулик Алексей aka kpblc

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *