|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
AutoLisp Разморозить слой
Регистрация: 01.07.2010
Сообщений: 521
|
||
Просмотров: 7716
|
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Zaghim, у меня вроде все работает, правда последние "" в каждой строке лишние. Можно попробывать рамораживать слой так
Код:
__________________
cadtools |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
|
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Олег (jr.), См. пост #1
И что? (Command "_layerp") Вы восстановили предыдущее состояние слоя, т. е. разморозили все слои, которые были заморожены автором темы командой (command "-layer" "f" "*" "" ""), а надо-то разморозить конкретный слой.
__________________
cadtools |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Зато работает
![]()
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Цитата:
Zaghim, на самом деле Лиспер предложил очень даже правильный код, но если хочешь что-нибудь попроще Код:
__________________
cadtools |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Цитата:
Он и так не для отдельного вызова. Просто добавь в начало своего лисп файла описании функции unfreeze , а теперь в любом месте твоего кода вызывай функцию (unfreeze (list sloyz2 sloyv2)) Т.е. так Код:
Цитата:
__________________
cadtools |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Открыл твой чертеж. Ввел (command "_-layer" "_f" "*" "") - заморозилиь все слои, кроме "0" (так как он текущий). Ввел (unfreeze '("Организация рельефа" "Точки")) - оба слоя разморозились.
Могу предложить сдледующие. Открываешь чертеж, входишь в Visual Lisp IDE (в ком. строке ввести _vlide или "Сервис" -> "AutoLisp" -> "Редактор Visual Lisp"). Открываешь свой lisp файл и в пошаговом режиме проверяешь код.
__________________
cadtools |
|||
![]() |
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Да собственно код вот
Код:
Вообще мне нужно вначале разморозить один, а второй чуть позже... и там цикл, нужно его размораживать делать действие и опять замораживать....и так несколько раз...вот |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Zaghim, выяснился интересный момент. На самом деле слои размораживатся (причем именно все, указанные в списке), но вот объекты расположенные на втором и последующих слоях указанных для разморозки не перерисовываются. Код предложенный Липер эту проблему решает. Так как Тебе он показался слишком длинным, вот его укороченный вариант
Код:
__________________
cadtools |
|||
![]() |
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Да, да... именно так и есть, в слоях горит лампочка и солнышко, а на чертеже его не видно...
Сейчас попробую данный код. Супер. Даже не знаю как благодарить. СПАСИБО, ТЕПЕРЬ ВСЕ РАБОТАЕТ!!! Но я все же удивлен почему не работает двумя командами... Предложение. Что бы прикончить тему и помочь окончательно всем нуждающимся, может сделать 4 кусочка кода, в котором будет следующее: заморозка всех слоев, разморозка нужного(ых) слоя(ев), заморозка их же, ну и под конец возвращение всех слоев в первоначальное состояние. Последний раз редактировалось Zaghim, 02.12.2010 в 14:01. |
|||
![]() |
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 575
|
Ну почему не работает, можно и командными методами
Код:
__________________
cadtools |
|||
![]() |
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Понятно))
Тогда еще вопрос (раньше в этом необходимости не было). Так как я туда сюда кручу слои, т.е. замораживаю и размораживаю, восстановить в итоге состояние всех слоев, как до начала работы программы, командой -layerp не получится...Если только запоминать сколько раз я менял слои, что бы вернутся к начальному варианту повторяя эту команду много раз. Есть какой-то способ запомнить состояние всех слоев и потом не сложными телодвижениями вернуть его в первозданный вид? |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
Намного проще будет переработать алгоритм, избегая замораживания слоев. Ну или второй вариант - в начале пройтись по всем слоям файла, исключая слои внешних ссылок, запомнить их состояние, потом в конце из этого списка восстанавливать состояния слоев.
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
сан-техник на пенсии Регистрация: 23.05.2005
Сообщений: 140
|
Часто надо заморозить/разморозить один слой.
Написал такой лиспик, морозит нормально, но при разморозке иногда не срабатывает, вернее слой размораживается (метится как не замороженный), а на экран не выдается. что здесь не хватает? Код:
__________________
Спасибо Последний раз редактировалось Gaa, 22.01.2015 в 17:42. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Добавь принудительное обновление: (redraw) либо (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acallviewports)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как переместить блоки на определённый слой | digar | Программирование | 22 | 21.01.2022 14:35 |
Как скриптом VBA заморозить слой в одном вьюпорте? | K_O_S_T_ | Программирование | 1 | 09.09.2009 16:45 |
Эллипс + слой ? | Piton | AutoCAD | 10 | 09.08.2006 13:06 |
Не печатается выбранный нижний слой полностью | maslina | AutoCAD | 11 | 26.04.2006 15:10 |