AutoLisp Разморозить слой - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp Разморозить слой

AutoLisp Разморозить слой

Ответ
Поиск в этой теме
Непрочитано 09.11.2010, 15:56
AutoLisp Разморозить слой
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Друзья, такая проблема. Две команды в связке в середине кода:
Код:
[Выделить все]
(command "-layer" "f" "*" "" "")
      (command "-layer" "t" sloyv2 "" "")
, где sloyv2 - имя слоя.
Так вот этот слой после заморозки всего не размораживается. Вот хоть убей. И тут же фантастика, если расставить брейки и поставить один сразу после выполнения разморозки - все ОК. Все размораживается. А если просто, то как-будто пролетает мимо. В чем может быть проблема?
Просмотров: 7716
 
Непрочитано 02.12.2010, 14:23
1 | #21
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от Zaghim Посмотреть сообщение
Но я все же удивлен почему не работает двумя командами...
Ну почему не работает, можно и командными методами
Код:
[Выделить все]
(defun unfreeze(lst_layers / )
  (foreach item lst_layers
    (vl-cmdf "_-layer" "_T" item "")
    )
  ); end unfreeze
Просто использовать командные методы - это так называемый (книга "САПР на базе AutoCAD как это делается" от ShaggyDoc) "инженерный" стиль программирования у программистов не в почете.
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 02.12.2010, 15:37
#22
Zaghim


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


Понятно))
Тогда еще вопрос (раньше в этом необходимости не было). Так как я туда сюда кручу слои, т.е. замораживаю и размораживаю, восстановить в итоге состояние всех слоев, как до начала работы программы, командой -layerp не получится...Если только запоминать сколько раз я менял слои, что бы вернутся к начальному варианту повторяя эту команду много раз. Есть какой-то способ запомнить состояние всех слоев и потом не сложными телодвижениями вернуть его в первозданный вид?
Zaghim вне форума  
 
Непрочитано 02.12.2010, 15:43
#23
Лиспер


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


Намного проще будет переработать алгоритм, избегая замораживания слоев. Ну или второй вариант - в начале пройтись по всем слоям файла, исключая слои внешних ссылок, запомнить их состояние, потом в конце из этого списка восстанавливать состояния слоев.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 02.12.2010, 16:38
#24
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Ну если чисто тупо командными методами, то попробуй не двумя, а тремя командами, авось получится.
Код:
[Выделить все]
(command "-layer" "f" sloyv1 "" )
(command "-layer" "s" sloyv2 "" )
 (command "-layer" "t" sloyv1 "" )

Последний раз редактировалось E-degtyarev, 02.12.2010 в 16:48.
E-degtyarev вне форума  
 
Непрочитано 22.01.2015, 17:26
#25
Gaa

сан-техник на пенсии
 
Регистрация: 23.05.2005
Сообщений: 140


Часто надо заморозить/разморозить один слой.
Написал такой лиспик, морозит нормально, но при разморозке иногда не срабатывает, вернее слой размораживается (метится как не замороженный), а на экран не выдается.

что здесь не хватает?

Код:
[Выделить все]
 (defun c:FC () ;_********************** freeze/THAW Layer --Cons    
  (setq ed (entget (setq obj (tblobjname "layer" "--Cons"))))
  (if (= (cdr (assoc 70 ed)) 0)
    (setq G_freeze 1)
    (setq G_freeze 0)
  ) ;_if
;;;  (TYPE (cdr (assoc 70 ed)))
;;;  (TYPE (assoc 70 ed))
  (setq ed (subst (cons 70 G_freeze) (assoc 70 ed) ed))
  (entmod ed)
) ;_defun 
__________________
Спасибо

Последний раз редактировалось Gaa, 22.01.2015 в 17:42.
Gaa вне форума  
 
Непрочитано 22.01.2015, 17:28
#26
Кулик Алексей aka kpblc
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-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > AutoLisp Разморозить слой



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как переместить блоки на определённый слой 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