|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
24.05.2010, 23:12 | #1 | |
Как программно удалить слой(autolisp)
Начинающий проектировщик
Санкт-Петербург
Регистрация: 07.02.2008
Сообщений: 443
|
||
Просмотров: 11488
|
|
||||
Регистрация: 25.12.2005
Москва
Сообщений: 13,627
|
Да он у всех отсутствует изначально.
Из Справки. Удалить слой Постановка выделенных слоев в очередь на удаление. Физически слои удаляются при нажатии кнопок «Применить» или «OK». Можно удалять только неиспользуемые слои. Не могут быть удалены слои 0 и DEFPOINTS, слои с объектами на них (включая объекты, являющиеся частью блоков), текущий слой, а также слои, зависимые от ссылок. Слои в частично открытых рисунках также рассматриваются в качестве ссылочных и не могут быть удалены. Примечание Следует с особой осторожностью удалять слои, совместно используемые несколькими пользователями, или применяемые в качестве стандартных. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Вот как делается полное удаление слоя в ruCAD.
Основная программа, вызываемая из меню или кнопки: Код:
Код:
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
ru-layer-delete не проверяет вхождения внутри блоков... ИМХО ее бы на такое переделать:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
дороги Регистрация: 12.07.2019
СПб
Сообщений: 134
|
Уважаемые форумчане, помогите кто разбирается в кодах lisp.
1. используя шпаргалку https://dwg.ru/pub/9 не могу понять как называется команда из #7 и #8, чтобы прописать её в командной строке и запустить ЛИСП, просто чтобы проверить. Там написано, что имя команды идёт после "defun C:". В этих кодах я такого не вижу =( 2. если возможно, помогите сделать такой лисп, чтобы я в него сам вписал имена слоёв, которые мне надо просто удалять вместе со всеми содержащимися в нём объектами. слоёв порядка тридцати и неудобно каждый раз изолировать объекты этого слоя и удалять их, а потом и purge использовать... заранее благодарю как за ответ на первый вопрос (просто чтобы понимать как надо читать код) ну и за второй вопрос естественно |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
merkur1y, вот так:
Код:
Код Алексея из #8 должен быть загружен. Можно их объединить в одном файле с этим кодом. ----- добавлено через ~9 мин. ----- Ну и конечно, не стоит забывать про штатную команду _LAYDEL и ее опции. Там можно выбрать нужные слои (зажав Ctrl или Shift) в диалоговом окне - на мой взгляд, куда проще, чем каждый раз менять список слоев в коде (если, конечно, этот список не перманентный). |
|||
|
||||
Или так используя _-LayDel
Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 30.11.2019 в 11:21. |
||||
|
||||
дороги Регистрация: 12.07.2019
СПб
Сообщений: 134
|
skkkk, спасибо всё работает
понятно дело, дилетанту в lisp и такой двухшаговый способ подойдёт я уже нашёл ветку на форуме, которую буду изучать потихоньку: https://forum.dwg.ru/showthread.php?t=22894 т.к. пока даже для меня оказалось не под силу, спрашивать как это делать нарочно не буду - постараюсь разобраться сам VVA, спасибо за код в одном файле, всё работает как следует, польщён что Вы добрались до моего вопроса спасибо! итак, спустя час работы я понял следующее ----- добавлено через ~2 ч. ----- Уважаемые skkkk и VVA, я поторопился с выводом сначала я проверил Ваши коды на простых примерах удаляя созданные мною же объекты начав добавлять свои слои в Ваши коды, желаемого результата не достиг + оба кода удаляют созданные мною слои, если в них прописаны только новые (созданные мною) - если же я добавляю в коды свои слои то: 1. код skkk удаляет созданные мною объекты, а объекты из моего слоя не удаляет. в консоли при этом отображается следующее Команда: LAYERSDELETE Erased 2 entities; Can't erase 0 entities. Erased 2 entities; Can't erase 0 entities. Erased 2 entities; Can't erase 0 entities.(nil "\nErased 2 entities;\nCan't erase 0 entities." "\nErased 2 entities;\nCan't erase 0 entities." "\nErased 2 entities;\nCan't erase 0 entities.") 2. код VVA не удаляет ничего, в консоли только лишь: Команда: DELETEMYLAYER Последний раз редактировалось merkur1y, 29.11.2019 в 11:37. |
|||
|
||||
merkur1y,
1. Файл код_VVA.lsp не содержит моего кода 2. Приведенный выше код подразумевал, что слой обязательно есть в чертеже 3. Добавил проверку на отсутствие слоев в чертеже. Код во вложении ----- добавлено через ~4 мин. ----- Я думаю такая же проблема и в коде skkk Пробуй так Код:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Я имел в виду обычную вставку двух кодов друг за другом в один файл *.lsp.
Упс, виноват. Думал, что такая проверка уже есть в коде Алексея, поленился убедиться. Прошу прощения. |
|||
|
||||
лучше, наверное, выбирать
upd. краткая информация о слое по двойному клику Код:
Последний раз редактировалось koMon, 04.12.2019 в 08:55. |
||||
|
||||
дороги Регистрация: 12.07.2019
СПб
Сообщений: 134
|
данный код сработал как надо... всё что надо удалилось!
теперь точно спасибо, можно пользоваться у меня специфика процесса работы такая, что на каждый объект есть своя конструкция земляного полотна, и чертежи поперечных профилей дороги часто переделываются поэтому на каждый объект свой список слоёв для удаления, т.к. я их всё равно записываю в эл.вид - удобно чтобы это сразу было командой в КАДе скопировал Ваш код в блокнот, сохранил в формате .lsp и после загрузки кода в КАД даже не даёт ввести команду "select_layers" |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787
|
В кодировка-то почему UTF-8?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
добавил текстовый лисп к коду. Цитата:
|
||||
|
||||
дороги Регистрация: 12.07.2019
СПб
Сообщений: 134
|
До Вашего замечания никогда не обращал на это внимания, все коды при сохранении исправно работали... какую кодировку следует выбрать тогда?
просто загрузил в КАД Ваш .lsp файл и все равно не вижу команды... время покажет, что удобнее... пока ошибок не было я же и говорю, что каждый список у меня составлен в электронном виде, приходится его включать и сверять удаляемые слои не помню где услышал, но придерживаюсь такого принципа: если что-то повторяешь больше двух раз - пора делать код для этого действия |
|||
|
||||
это НЕ команда, функция. выполняется буквально - (select_layers)<cr>
ваще на первом скрине это показано да и на третьем впридачу собственно преимущество функции именно в том, что её можно легко встроить туда, где, в данном случае, требуется например список слоёв. естественно ANSI ----- добавлено через ~7 мин. ----- это 100-пудово, и не надо рассматривать мой коммент, как может захотеться, например - в качестве миссионерства ну, например, можно изменить команду VVA выше так. только надо иметь в виду, что функция (select_layers) д.б. загружена на момент исполнения команды LAYERSDELETE, ну или сливать всё в один код) и помнить про nil в случае отказа от выбора слоёв. Код:
Последний раз редактировалось koMon, 04.12.2019 в 11:18. |
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как удалить атрибут? | пончеГ | AutoCAD | 16 | 30.01.2020 13:13 |
Как программно удалить неиспользуемые стили мультивыносок. | Makswell | Программирование | 6 | 08.04.2009 13:43 |
как программно, в чертеже, выделить группы | vasyavip | Программирование | 2 | 21.01.2009 10:12 |
КАК программно написать многострочным текстом? | Александер | Программирование | 11 | 11.10.2006 16:19 |
подскажите как программно начертить линии разных типов | Александер | Программирование | 4 | 30.06.2005 07:17 |