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

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

Видовые экраны на листа одним кликом в слой Defpoints

Ответ
Поиск в этой теме
Непрочитано 10.10.2014, 12:18 #1
Видовые экраны на листа одним кликом в слой Defpoints
casaatik
 
Проектирование
 
Киев
Регистрация: 14.09.2007
Сообщений: 147

Добрый день.
Есть файл с несколькими листами (листов многовато). На листах видовые экраны. Как с минимумом телодвижений переместить ВСЕ видовые экраны в файле DWG (на листах) в слой Defpoints или любой другой слой?
Возможно лисп, макрос...
Заранее благодарен за ответ.

Последний раз редактировалось casaatik, 10.10.2014 в 12:41.
Просмотров: 5639
 
Непрочитано 10.10.2014, 12:32
#2
Кулик Алексей aka kpblc
Moderator

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


Лиспом - легко. Но, поскольку вопрос в разделе "AutoCAD" - то ответ будет "руками на каждый лист и через быстрый выбор или Ctrl+A устанавливать свойства"
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2014, 12:43
#3
casaatik

Проектирование
 
Регистрация: 14.09.2007
Киев
Сообщений: 147


Возможно есть уже готовые решения реализованные с помощью лиспа. Ткните пожалуйста, так как искал и не нашел.
casaatik вне форума  
 
Непрочитано 10.10.2014, 16:41
1 | #4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Как-то так
Код:
[Выделить все]
(defun C:vpFind (/ vpLayer id1 pl)
  ;;;Перенести видовые экраны на слой
  ;;;Включить блокировку экрана
 (vl-load-com)
 (setq vpLayer "ViewPortLayer")  ;;_Имя слоя видового экрана
(if (not(tblobjname "LAYER"  vpLayer)) 
(entmake (list (cons 0 "LAYER")
                 (cons 100 "AcDbSymbolTableRecord")
                 (cons 100 "AcDbLayerTableRecord")
                 (cons 2 vpLayer)
                 (cons 70 0)))
  )
    (mip:layer-status-save)
  (vlax-for lay (vla-get-layouts
                  (vla-get-activedocument (vlax-get-acad-object))
                ) ;_ end of vla-get-layouts
    (setq id1 nil)                                ; ignore the first vp
    (if (eq :vlax-false (vla-get-modeltype lay))
      (progn
        (princ (strcat "\n*** Лист - " (vla-get-name lay) "  ***"))
        (vlax-for obj (vla-get-block lay)         ; for each obj in layout
          (if (and (= (vla-get-objectname obj) "AcDbViewport")
                   (vlax-write-enabled-p obj)
                   (or id1 (not (setq id1 t))) ;_Пропускаем первый ВЭ
              ) ;_ end of and
            (progn
              (vla-put-layer obj vpLayer)  ;;; Видовой экран на слой
              (vla-put-color obj acbylayer) ;;; Цвет послою
              (vla-put-displaylocked obj :vlax-true) ;;;_ Включаем блокировку видового экрана
;;;Если ВЭ подрезан полилинией, туда же и полилинию
              (if (and (setq pl
                              (cdr (assoc 340
                                          (entget (vlax-vla-object->ename obj))
                                   ) ;_ end of assoc
                              ) ;_ end of cdr
                       ) ;_ end of setq
                       (setq pl (vlax-ename->vla-object pl))
                       (vlax-write-enabled-p pl)
                  ) ;_ end of and
                (progn                       ;;;Если ВЭ подрезан полилинией, туда же и полилинию
                  (vla-put-layer pl vpLayer)
                  (vla-put-color pl acbylayer)
                ) ;_ end of progn
              ) ;_ end of if
            ) ;_ end of progn
          ) ;_ end of if
        ) ;_ end of vlax-for
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of vlax-for
  (mip:layer-status-restore)
  (princ)
)
(defun mip:layer-status-restore ()
    (foreach item *MIP_LAYER_LST*
      (if (not (vlax-erased-p (car item)))
        (vl-catch-all-apply
          '(lambda ()
             (vla-put-lock
               (car item)
               (cdr (assoc "lock" (cdr item)))
             ) ;_ end of vla-put-lock
             (vla-put-freeze
               (car item)
               (cdr (assoc "freeze" (cdr item)))
             ) ;_ end of vla-put-freeze
           ) ;_ end of lambda 
        ) ;_ end of vl-catch-all-apply 
      ) ;_ end of if 
    ) ;_ end of foreach
    (setq *MIP_LAYER_LST* nil)
  ) ;_ end of defun 

  (defun mip:layer-status-save ()
    (setq *MIP_LAYER_LST* nil)
    (vlax-for item
                   (vla-get-layers
                     (vla-get-activedocument (vlax-get-acad-object))
                   ) ;_ end of vla-get-layers
      (setq *MIP_LAYER_LST*
             (cons (list item
                         (cons "freeze" (vla-get-freeze item))
                         (cons "lock" (vla-get-lock item))
                   ) ;_ end of cons 
                   *MIP_LAYER_LST*
             ) ;_ end of cons 
      ) ;_ end of setq 
      (vla-put-lock item :vlax-false)
      (if (= (vla-get-freeze item) :vlax-true)
        (vl-catch-all-apply
          '(lambda () (vla-put-freeze item :vlax-false))
        ) ;_ end of vl-catch-all-apply
      ) ;_ end of if
    ) ;_ end of vlax-for
  ) ;_ end of defun 
(princ "\nType VpFind in command line")(princ)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 14.10.2014, 00:40
#5
casaatik

Проектирование
 
Регистрация: 14.09.2007
Киев
Сообщений: 147


Спасибо огромное. Самое то.
casaatik вне форума  
 
Непрочитано 12.08.2019, 09:27
#6
Алексей Шебаниц

Инженер БТИ
 
Регистрация: 25.01.2018
Киев
Сообщений: 3


Спасибо, мне тоже помогло!
Алексей Шебаниц вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Видовые экраны на листа одним кликом в слой Defpoints

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исчезли видовые экраны. Вкладка лист копирует модель Саша1983 AutoCAD 7 19.02.2013 08:33
Lisp - не сохраняются созданные видовые экраны Psyakrev LISP 1 03.07.2012 20:53
Проблема с весом линий при печати векторного чертежа через видовые экраны, есть решение? Кравченко Александр AutoCAD 3 18.05.2011 16:14
Видовые экраны и слои. stule AutoCAD 4 05.06.2009 15:52
Панель - Видовые экраны Ztn AutoCAD 5 25.02.2009 00:40