Как перенести слои из одного рисунка Автокада в другой?
Форумы 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. сам рисунок нужно копировать вручную, при этом вставлять по исх. координатам.
Возможно я сделал что-то неправильно. Если есть ошибки — напишите пожалуйста какие именно.
Как перенести слои в автокаде из одного чертежа в другой
- Все форумы
- Технологический форум
- Машиностроение
- Металлургия
- Химия, нефтехимия и топливная промышленность
- Деревообработка
- Пищевая промышленность
- Животноводство, рыбоводство и растениеводство
- Другие темы
- Общие вопросы
- Промышленность стройматериалов
- Экология
- Охрана труда и техника безопасности
- Биржа труда
- Генеральные планы
- Сооружения транспорта
- Автомобильные дороги
- Железнодорожные пути
- Мостостроение
- Другие темы
- Общие вопросы
- Инженерные изыскания
- Биржа труда
- Архитектурные решения
- Дизайн интерьеров
- Ландшафтное проектирование
- Реконструкция и реставрация зданий
- Градостроительство
- Общие вопросы
- Другие темы
- Светотехника
- Биржа труда
- Основания и фундаменты, механика грунтов
- Конструкции железобетонные
- Конструкции деревянные
- Конструкции металлические
- Обследование и усиление строительных конструкций
- Ограждающие конструкции, кровли
- Общие вопросы
- Другие темы
- Строительная теплотехника
- Защита от шума и вибрации
- Программы 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,190pomka
Просто Вам надо решить что Вы копируете. Если слой как объект — тогда 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 в чертеже-источнике. Она просит выделить объекты. Объекты выделяем, жмем энтер, программа сохраняет указанные свойства слоев во внешний текстовый файл.
- Запускаем программу №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
- Технологический форум