Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP: Видимость замороженного слоя в видовом экране

LISP: Видимость замороженного слоя в видовом экране

Ответ
Поиск в этой теме
Непрочитано 25.01.2015, 16:09 #1
LISP: Видимость замороженного слоя в видовом экране
WhiteShark
 
Регистрация: 30.03.2012
Сообщений: 101

Уважаемые форумчане!
Кто-нибудь знает, как (где) хранится информация о видимости слоя в том или ином видовом экране?
В свойствах слоёв такого параметра не нашел: там есть глобальный Freeze, относящийся к модели.
В свойствах вьюпортов тоже не нашел и, если правильно понял, инфа через vlax-dump-object выводится для текущего (*active) ВЭ.
Функция setpropertyvalue позволяет назначить свойство "IsFrozenInCurrentViewport" слою для опять же текущего активного видового экрана.
Правильно ли получается, что, для того чтоб мне заморозить слой только в некоторых видовых экранах, нужно пройтись циклом по ним всем? Или где то имеется таки список типа "в каком видовом экране какие слои погашены"\"какой слой погашен в каких видовых экранах"?
Просмотров: 2726
 
Непрочитано 25.01.2015, 18:11
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 38,328


http://forum.dwg.ru/showthread.php?t=28244
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.01.2015, 12:48
#3
WhiteShark


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


Всем привет. Хорошие новости )
Так как по факту окончательного решения по указанной ссылке нет, выкладываю своё изобретение.
Одна функция возвращает список вьюпортов и замороженных в них слоев, вторая - гасит слой по его имени в указанном вьюпорте некоммандным методом. Без обработки ошибок так что критика и улучшения приветствуются.

Код:
[Выделить все]
 (defun WS-VpFreezedLays ( / k VpFrLaysList sset nextVP ExData sset)
  (vl-load-com)
  (setq k 0)  
  (and
    (setq sset (ssget "_x" (list '(0 . "VIEWPORT") )))
    (repeat (sslength sset)
      (setq nextVP (ssname sset k))
      (setq k (1+ k))
      (setq ExData (cdr (assoc -3 (entget nextVP '("*")))))
      (setq VpFrLaysList (cons (cons nextVP (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 1003 (car x)) )
							 (cdar ExData))))
				VpFrLaysList))      
      )
    )
  (vl-remove-if-not 'cdr VpFrLaysList)
  )
Вторая

Код:
[Выделить все]
 (defun WS-VpLayFreeze (LayName VpEnt / xDataNew xValueNew)
  (vl-load-com)
  (vla-GetXData (vlax-ename->vla-object VpEnt) "ACAD" 'xData 'xValue)
  (setq xDataNew (vlax-make-safearray vlax-vbinteger (cons 0 (1+ (vlax-safearray-get-u-bound xData 1)))))
  (setq xValueNew (vlax-make-safearray vlax-vbvariant (cons 0 (1+ (vlax-safearray-get-u-bound xValue 1)))))
  (vlax-safearray-fill xDataNew (reverse (append '(1002 1002 1003) (cddr (reverse (vlax-safearray->list xData))))))
  (vlax-safearray-fill xValueNew (reverse (append (mapcar 'vlax-make-variant (list "}" "}" LayName)) (cddr (reverse (vlax-safearray->list xValue))))))  
  (vla-SetXData (vlax-ename->vla-object VpEnt) xDataNew xValueNew)
  )
Примеры вызова

$ (WS-VpFreezedLays)
((<Entity name: 7fffe74d150> "22222" "44444") (<Entity name: 7fffe74d1d0> "0" "33333"))

$ (WS-VpLayFreeze "0" (car (entsel)))
nil

Последний раз редактировалось WhiteShark, 07.02.2015 в 11:18.
WhiteShark вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP: Видимость замороженного слоя в видовом экране

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбивается масштаб в видовом экране, при панарамировании модели в видовом экране Оле AutoCAD 6 29.03.2021 16:47
Видимость блока на видовом экране.. VilandIR AutoCAD 3 24.04.2014 11:02
Вопрос по масштабу полилинии в видовом экране AlexeiFCB AutoCAD 3 01.07.2012 23:54
Почему не проходит теплорасчет? Suom Конструкции зданий и сооружений 15 10.08.2011 17:22
Как сделать объекты, отображенные в Видовом Экране, невидимыми, не пользуясь слоями. ant_bar AutoCAD 15 25.02.2009 14:49