Lisp. Функция отключения видимости подобъекта блока или вн. ссылки.
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Функция отключения видимости подобъекта блока или вн. ссылки.

Lisp. Функция отключения видимости подобъекта блока или вн. ссылки.

Ответ
Поиск в этой теме
Непрочитано 17.11.2014, 15:37 #1
Lisp. Функция отключения видимости подобъекта блока или вн. ссылки.
Yuriy-I
 
сп. САПР, архитектор
 
Санкт-Петербург
Регистрация: 25.05.2008
Сообщений: 116

Здравствуйте.
Имеется функция отключения видимости выбранного объекта.
Но она не работает с подобъектами блока или внешней ссылки.
Не подскажете, как откорректировать функцию, чтобы видимость отключалась и у подобъектов?

Код:
[Выделить все]
 (defun c:HO ()
  (setq _e (car(nentsel)))
  (princ(assoc 0 (entget _e)))
  (redraw _e 2)
(princ))
__________________
"лучше" или "хуже" - понятия относительные
Просмотров: 1742
 
Непрочитано 17.11.2014, 16:24
#2
Кулик Алексей aka kpblc
Moderator

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


Лень вспоминать DXF...
Код:
[Выделить все]
 (vl-load-com)

(defun c:ho (/ _e)
  (if (setq _e (car (nentsel)))
    (progn
      (princ (assoc 0 (entget _e)))
      (vla-put-visible (vlax-ename->vla-object _e) :vlax-false)
      (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.11.2014, 16:56
#3
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


Сработало!
Спасибо!!!
А возможно ли вместо регенерации всего видового экрана
(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
отрегенерировать только объект, который указал?
__________________
"лучше" или "хуже" - понятия относительные
Yuriy-I вне форума  
 
Непрочитано 17.11.2014, 17:03
#4
Кулик Алексей aka kpblc
Moderator

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


(vla-update (vlax-ename->vla-object _e))

----- добавлено через 32 сек. -----
Но я не уверен, что это сработает. Может быть, потребуется определять владельца _e и обновлять уже его.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.11.2014, 17:30
#5
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


так и есть
при обновлении владельца все работает
Код:
[Выделить все]
 (defun c:ho (/ _e _nen)
  (if
    (setq _nen (nentsel))
    (progn
      (setq _e (car _nen))
      (princ (assoc 0 (entget _e)))
      (vla-put-visible (vlax-ename->vla-object _e) :vlax-false)
      ;(vla-regen (vla-get-activedocument (vlax-get-acad-object)) acactiveviewport)
      (vla-update (vlax-ename->vla-object (if (=(type(car(last _nen)))'ENAME)(car(last _nen))_e)))
      ) ;_ end of progn
    ) ;_ end of if
  (princ)
) ;_ end of defun
Алексей, СПАСИБО!!!
__________________
"лучше" или "хуже" - понятия относительные
Yuriy-I вне форума  
 
Непрочитано 17.11.2014, 19:44
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


А если таких блоков вставлено несколько?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.11.2014, 20:31
#7
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


Опробовал ...
Видимость подобъекта отключается только у одного блока, у остальных видимость не отключается.
(может быть где нибудь и пригодится... )

Мне управлять видимостью нужно больше не для блоков, а для внешних ссылок.
Часто использую команды управления видимостью на уровне объектов а не слоев :
Command: _.ISOLATEOBJECTS
Command: _.UNISOLATEOBJECTS
Command: _hideobjects
но они не работают с подобъектами блоков и ссылок.

Жаль все таки что ф-ция "redraw" не работает с подобъектами.
Мне обычно требуется только временное отключение видимости мешающих в данный момент подобъектов, позднее необходимо все включить.
Если видимость отключить "redraw" то после регенерации она включится автоматически.
А применяя "vla-put-visible" потребуется дополнительная ф-ция включения.

Вот еще, что интересно - если вдруг случайно забуду включить видимость объектов в чужом чертеже то его без наличия програмки и включить будет невозможно?.
__________________
"лучше" или "хуже" - понятия относительные

Последний раз редактировалось Yuriy-I, 17.11.2014 в 20:37.
Yuriy-I вне форума  
 
Непрочитано 17.11.2014, 20:35
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Yuriy-I Посмотреть сообщение
Видимость подобъекта отключается только у одного блока, у остальных видимость не отключается.
(может быть где нибудь и пригодится... )
Отключается у всех, но видишь ты только у одного пока не выполнишь регенерацию или обновление всех вставок блока.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 17.11.2014, 20:45
#9
Yuriy-I

сп. САПР, архитектор
 
Регистрация: 25.05.2008
Санкт-Петербург
Сообщений: 116


Да, так и есть )))
__________________
"лучше" или "хуже" - понятия относительные
Yuriy-I вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Функция отключения видимости подобъекта блока или вн. ссылки.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция чтения свойств и их значений динамического блока Supermax Библиотека функций 11 16.03.2020 09:11
Lisp. авто-нумерация атрибута блока. DonJad LISP 10 26.10.2014 02:04
Как с помощью lisp получить список всех состояний видимости динамического блока crosandr LISP 4 11.04.2012 22:33