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

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

Выключить слой при переходе из модели в лист.

Ответ
Поиск в этой теме
Непрочитано 30.01.2015, 18:07 #1
Выключить слой при переходе из модели в лист.
solo123
 
Регистрация: 19.08.2009
Сообщений: 91

Уважаемые программисты подскажите пожалуйста, возможно ли используя реактор выключить нужный слой, при переходе из пространства модели в пространство листа? На простом примере. Или такие манипуляции делают с помощью других функций?
Просмотров: 3058
 
Непрочитано 30.01.2015, 18:18
#2
Кулик Алексей aka kpblc
Moderator

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


А не проще ли будет внутри ВЭ замораживать слой?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.01.2015, 18:45
#3
solo123


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


Хорошо, тогда как замораживать требуемые слои при переключение по листам?

Последний раз редактировалось solo123, 30.01.2015 в 19:03.
solo123 вне форума  
 
Непрочитано 30.01.2015, 20:29
#4
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


http://docs.autodesk.com/ACD/2011/RU...a30d6b4139.htm
http://docs.autodesk.com/ACD/2011/RU...2106b-7fff.htm
trir вне форума  
 
Автор темы   Непрочитано 31.01.2015, 20:04
#5
solo123


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


Включать и выключать слои, замораживать и тд можно с помощью панели инструментов в акаде, это и так понятно, Вы подскажите как это сделать программно, да, так, чтобы нужные слои выключались или включались при переходе из модели в лист, или из листа на другой лист? Если не трудно подскажите хотябы с помощью каких функций это можно осуществить?

Последний раз редактировалось solo123, 31.01.2015 в 20:15.
solo123 вне форума  
 
Непрочитано 31.01.2015, 20:44
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,107


Попробуй
Код:
[Выделить все]
Autodesk.AutoCAD.DatabaseServices.LayoutManager
Public Event LayoutSwitched(sender As Object, e As Autodesk.AutoCAD.DatabaseServices.LayoutEventArgs)
trir вне форума  
 
Непрочитано 01.02.2015, 05:48
#7
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Цитата:
Сообщение от solo123 Посмотреть сообщение
возможно ли используя реактор выключить нужный слой, при переходе из пространства модели в пространство листа?
Можно. См. :VLR-Miscellaneous-Reactor и событие LayoutSwitched
Цитата:
Сообщение от solo123 Посмотреть сообщение
На простом примере.
Можно и на примере (на очень-очень простом):
Код:
[Выделить все]
 (vl-load-com)

;;; Создаем реактор на изменение активной вкладки:
(vlr-miscellaneous-reactor
  nil
  (list '(:VLR-layoutSwitched . layoutSwitched))
) ;_ end of vlr-miscellaneous-reactor


;;; Описываем функцию, которая сработает при изменении активной вкладки:
(defun layoutSwitched (reac data /)
  (if (= (getvar "CTAB") "Лист1") ;;; если имя листа "Лист1",
    (vla-put-LayerOn ;;; то свойству "включенности" слоя,
      (vla-Item ;;; выбранного
		(vla-get-Layers ;;; из всех слоев
		  (vla-get-ActiveDocument (vlax-get-acad-object)) ;;; активного документа Автокада
		) ;_ end of vla-get-Layers
		"0" ;;; под именем "0",
      ) ;_ end of vla-Item
      0 ;;; устанавливаем значение "выключить" (0)
    ) ;_ end of vla-put-LayerOn
  ) ;_ end of if
) ;_ end of defun
Подчеркну, это всего лишь простой пример. Он выполнит задачу в том минимуме, который описан в вопросе темы:
Цитата:
Сообщение от solo123 Посмотреть сообщение
выключить нужный слой, при переходе из пространства модели в пространство листа
Вот только зачем? Думаю, вопрос поставлен не в том объеме, который реально необходим.
Все же, я предполагаю, есть смысл выключать "нужные" слои не просто так на листе, а внутри видового экрана. Если так, то пример уже будет не настолько простым. Так ведь есть и стандартная возможность, зайдя внутрь видового экрана и открыв Диспетчер свойств слоев, найти колонку Замороженный на ВЭ и заморозить "нужный" слой на текущем видовом экране. Не проще ли, чем писать код, создать шаблон, в котором будут все необходимые слои, листы и в нужных листах будут выключены нужные, точнее, ненужные слои? А если имя слоя изменится, или такого листа нет в чертеже, что делать? Править код каждый раз? Ведь в правильном, надежно работающем коде должна быть еще и проверка: а есть ли такой слой? Если нет, то нужно его создать с нужными параметрами. Да много там еще может возникнуть "если". Считаю, что в подобных случаях лучше обходиться стандартными возможностями, а код (учиться) писать тогда, когда их действительно не хватает.

Последний раз редактировалось skkkk, 01.02.2015 в 05:54.
skkkk вне форума  
 
Автор темы   Непрочитано 02.02.2015, 12:55
#8
solo123


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


БОЛЬШОЕ СПАСИБО! ТО, ЧТО НАДО.
solo123 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выключить слой при переходе из модели в лист.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из модели в лист Зодчий AutoCAD 119 30.12.2007 01:39
Как перевести трассу с поворотами из модели в лист, чтобы она выглядела как прямая? nexexxx AutoCAD 17 12.12.2007 17:26
Глюк с модели в лист kitep AutoCAD 6 10.03.2007 00:11
Переход типа линии из модели в лист 1 Владимир Егорьев AutoCAD 5 05.04.2006 14:21
Перенос объектов из Модели в Лист ===AAA=== Программирование 11 19.01.2006 13:09