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

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

Удалить слои которые выключены

Ответ
Поиск в этой теме
Непрочитано 07.11.2007, 09:58 #1
Удалить слои которые выключены
maksimys
 
генплана нет
 
spb
Регистрация: 15.08.2007
Сообщений: 305

Нужно написать маленький лиспик - по удалению всех слоев которые
выключены - или хотя бы - все приметивы на этих слоях.
Просмотров: 6628
 
Непрочитано 07.11.2007, 10:25
#2
Pilot

Проектировщик свиноводство
 
Регистрация: 21.08.2003
Сообщений: 2,260


Прога не моя, но работает.
Код:
[Выделить все]
;--------------------------------------------------------------------------;
;  DelLay
;  для стирания всех примитивов, отрисованных на указанном слое.;
;  Версия 2.0 обновлена для стирания примитивов как в пространстве листа,
;  так и пространства модели. При необходимости слои размораживаются.
;  Пакетные файлы, использующие предыдущую версию данной процедуры,
;  следует обновить для соответствия новым запросам.
;--------------------------------------------------------------------------;
(defun dellerr (s)  ;Если встретилась ошибка (такая как CTRL-C) пока эта команда активна...
  (if (/= s "Функция прервана")
    (princ (strcat "\nОшибка: " s)))
  (setq sset_1 nil)                   ;Очистить, если существует набор
  (setq sset_2 nil)
  (setvar "CMDECHO" ocmd)             ;Восстан. режимы
  (setq *error* olderr)               ;Восстановить старый обработчик *error*
  (princ))

(defun c:DelLay ( / sset_1 sset_2 prg num count ex)
   (setq olderr *error*
        *error* dellerr)
   (setq ocmd (getvar "CMDECHO"))(setvar "CMDECHO" 0)
   (setq lname (strcase (getstring "\nСлой(и) для стирания: ")))
   ;Получить все примитивы на слое
   (setq sset_1 (ssget "X" (list (cons 8 lname))))
   (if sset_1
      (progn
         ;(initget "Да Нет")(setq prg (getkword "\nПодготовить слой для стирания <Д>/Н:"))
         ;(if (= prg nil)
            (setq prg "Да")
         ;)
         (setq num (sslength sset_1))

         (setq count 0)                      ;стереть примитивы
         (repeat (sslength sset_1)
            (entdel (ssname sset_1 count))
            (setq count (1+ count))
         )
         ;Проверить, все ли сделано
         (if
            (ssget "X" (list (cons 8 lname)))
            ;And if anything is left
            (progn
              (setq tm (getvar "tilemode"))
                (if (= 1 tm)
                  (setvar "tilemode" 0)
                )
                ;Перейти в пространство листа
                (if (/= 1 (getvar "cvport"))
                 (progn
                  (princ "\nПереключаюсь в пространство листа.")
                  (command "_.pspace")
                 )
                )
                ;И попробовать еще раз
                (setq sset_2 (ssget "X" (list (cons 8 lname))))
                (setq count 0)
                 (repeat (sslength sset_2)
                   (entdel (ssname sset_2 count))
                   (setq count (1+ count))
                 )
              (setvar "tilemode" tm)
            )
         )
         (if (= prg "Да")
           (progn
             ;Подготовить слой для стирани
             ;Отключить, разморозить и разблокировать
             (setq ex (getvar "expert"))
             (setvar "expert" 5)
             (command "_.layer"
             ;"_off" lname
             "_thaw" lname "")
               (if (= 0 (getvar "tilemode"))
                 (command "_.vplayer" "_vpvisdflt" lname "_thaw" "_reset"
                 lname "_all" "")
               )
             (Alert (strcat "На слое " lname " стерто " (itoa num) " примитивов."))
             (setvar "expert" ex)
           )
           (princ (strcat "\n примитивы на слое " lname " стерты."))
         )
      )
      (alert (strcat " На слое " lname " объектов не найдено."))
      ;(princ (strcat " Слой " lname " пуст."))
   )
   (setq sset_1 nil)       ;Освободить наборы
   (setq sset_2 nil)
   (setvar "CMDECHO" ocmd) ;Восстановить сохраненные режимы
   (setq *error* olderr)   ;Восстановить старый обработчик *error*
   (princ)
);c:DelLay
Pilot вне форума  
 
Автор темы   Непрочитано 07.11.2007, 12:05
#3
maksimys

генплана нет
 
Регистрация: 15.08.2007
spb
Сообщений: 305


Прога работает - но пользоваться.
А че посложнее нету ?
Писать название слоя - не очень удобно.
Тем более хотелось чтобы - она сама удаляла - все именно выключенные слои.
maksimys вне форума  
 
Непрочитано 07.11.2007, 13:48
| 1 #4
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Попробуй:
Код:
[Выделить все]
(defun c:delofl (/ acaddoc blocks lay-freeze lay-lock lay-off layers)
  (setq acaddoc (vla-get-activedocument (vlax-get-acad-object))
        blocks  (vla-get-blocks acaddoc)
        layers  (vla-get-layers acaddoc)
  )
  (vla-startundomark acaddoc)
  (vlax-for l layers
    (if (= (vla-get-freeze l) :vlax-true)
      (progn (vla-put-freeze l :vlax-false) (setq lay-freeze (cons l lay-freeze)))
    )
    (if (= (vla-get-lock l) :vlax-true)
      (progn (vla-put-lock l :vlax-false) (setq lay-lock (cons l lay-lock)))
    )
    (if (= (vla-get-layeron l) :vlax-false)
      (setq lay-off (cons l lay-off))
    )
  )
  (delete-invisible
    blocks
    (mapcar (function vla-get-name) lay-freeze)
    (mapcar (function vla-get-name) lay-off)
  )
  (foreach l lay-off
    (vl-catch-all-apply (function vla-delete) (list l))
    (if (vlax-write-enabled-p l)
      (vla-put-layeron l :vlax-false)
    )
  )
  (foreach l lay-freeze
    (vl-catch-all-apply (function vla-delete) (list l))
    (if (vlax-write-enabled-p l)
      (vla-put-freeze l :vlax-true)
    )
  )
  (foreach l lay-lock
    (if (vlax-write-enabled-p l)
      (vla-put-lock l :vlax-true)
    )
  )
  (vla-endundomark acaddoc)
  (princ)
)
(defun delete-invisible (blocks lay-fr lay-of / obj-name)
  (vlax-for i blocks
    (setq obj-name (vla-get-objectname i))
    (cond ((and (= obj-name "AcDbBlockTableRecord") (= (vla-get-isxref i) :vlax-false))
           (delete-invisible i lay-fr lay-of)
           (if (and (= (vla-get-islayout i) :vlax-false) (zerop (vla-get-count i)))
             (progn (foreach b (mapcar (function cdr)
                                       (vl-remove-if-not
                                         (function (lambda (x) (= 331 (car x))))
                                         (entget (vlax-vla-object->ename i))
                                       )
                               )
                      (vl-catch-all-apply (function vla-delete) (list (vlax-ename->vla-object b)))
                    )
                    (vl-catch-all-apply (function vla-delete) (list i))
             )
           )
          )
          ((= obj-name "AcDbViewport"))
          ((or (vl-position (vla-get-layer i) lay-fr)
               (and (vl-position (vla-get-layer i) lay-of) (/= obj-name "AcDbBlockReference"))
           )
           (vl-catch-all-apply (function vla-delete) (list i))
          )
    )
  )
)
(vl-load-com)
Переделано из совсем другой программы, без тестов, так что могут быть "чудеса". Удаляет примитивы в том числе и из описаний блоков. В общем, аккуратнее при использовании!
Alaspher вне форума  
 
Непрочитано 07.11.2007, 14:39
#5
Кулик Алексей aka kpblc
Moderator

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


Те же яйца, только в профиль:
Код:
[Выделить все]
(defun c:erase-off (/ adoc lst_layers)
                   ;|
*    удаляет все примитивы, лежащие на выключенных слоях.
|;
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (vlax-for lay (vla-get-layers adoc)
    (if (and (equal (vla-get-layeron lay) :vlax-false)
             (equal (vla-get-freeze lay) :vlax-false)
             (not (wcmatch (vla-get-name lay) "*|*,*$*"))
             ) ;_ end of and
      (setq lst_layers (cons (vla-get-name lay) lst_layers))
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vlax-for blk_def (vla-get-blocks adoc)
    (vlax-for subent blk_def
      (if (member (vla-get-layer subent) lst_layers)
        (vl-catch-all-apply '(lambda () (vla-erase subent)))
        ) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
Предупреждения те же, попытка исключить из обработки слои внешних ссылок; не тестировал вообще.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.11.2007, 12:11 Зацените мой простецкий вариант
#6
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Зацените мой простецкий вариант.
Работает долго и топорно, с перебором Layout'ов, но не суется туда, куда не просят - в блоки.
Большая часть кода взята из DWG.RU и Autocad.ru, только не помню, из каких тем.
Спасибо тем, кто мне тогда помог, прошу не бить ногами за плагиат

Код:
[Выделить все]
;удаление всего на всех выключенных/замороженных слоях на всех листах и в модели
(defun c:kp_ldi (/ t1 La1 k La_List La_name_List ss i x to_del_list c_tab layout_dict L_OUT1)
  (setq t1 T i 0)
  (while  (setq La1 (TBLNEXT "LAYER" t1))
    (setq t1 nil)
    (if (and
	  (or
	    (minusp (cdr (assoc 62 La1)));layer is off
	    (= 1 (logand 1 (cdr (assoc 70 La1))));layer is frozen 
          )
	  (/= 16 (logand 16 (cdr (assoc 70 La1))));xref layer
	)
	
      (setq La_List (append La_List (list La1)))
    );eoIF
  );eoWHILE

  (setq La_name_List (mapcar '(lambda (x) (cons 8 (cdr (assoc 2 x)))) La_List))

  
  (setq t1 T)
  (setq c_tab (getvar "ctab"))
  (setq layout_dict (cdr (assoc -1 (DICTSEARCH (NAMEDOBJDICT) "ACAD_LAYOUT"))))

  
  (while (setq L_OUT1 (dictnext layout_dict t1))
    (setq t1 nil)
    (setq L_OUT1 (vla-get-name (vlax-ename->vla-object (cdar L_OUT1))))
    (setvar "ctab" L_OUT1)
     
    (foreach x La_name_List
      (setq ss (ssget "_X" (list x)))
      (if ss
       (progn
        (setq to_del_list (ssnamex ss));преобразование набора в список
        (setq to_del_list (mapcar 'cadr to_del_list));выкидывание номеров набора из списка
        (mapcar 'entdel to_del_list)
       )
      )
      (setq i (1+ i))
      (setq ss nil)
    )
  )
 (setvar "ctab" c_tab)
)
kp+ вне форума  
 
Непрочитано 13.11.2007, 13:44
#7
VVA

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


>kp+
Что бы я сделал не так:
1. ssget "_X" итак выбирает все объекты со слоев, независимо от того, в каком пространстве они находятся. Entdel удаляет из текущего пространства, vla-erase из документа.
Прыгать по layuot'am только из-за того, чтобы там выполнить entdel и заставлять ssget каждый раз в каждом layout'e делать выбор имхо не рационально. Раз уж у тебя промелькнуло vlax-ename->vla-object, будем считать, что и vla-erase можно использовать.
Все остальное оставил как у тебя, немного оптимизировал, получил вот это
Код:
[Выделить все]
;_ удаление всего на всех выключенных/замороженных слоях на всех листах и в модели
;_ Вариант 2
(defun c:kp_ldi (/ La1 La_name_List ss)
  (vl-load-com)
  (while (setq La1 (tblnext "LAYER" (null La1)))
    (if (and
          (or
            (minusp (cdr (assoc 62 La1))) ;_layer is off
            (= 1 (logand 1 (cdr (assoc 70 La1)))) ;_layer is frozen 
          ) ;_ end of or
          (/= 16 (logand 16 (cdr (assoc 70 La1)))) ;_xref layer
        ) ;_ end of and
      (progn
        (if (setq
              ss (ssget "_X"
                        (list (cons 8 (setq La1 (cdr (assoc 2 La1)))))
                 ) ;_ end of ssget
            ) ;_ end of setq
          (progn
            (mapcar '(lambda (x)
                       (if (vlax-write-enabled-p
                             (setq x (vlax-ename->vla-object x))
                           ) ;_ end of vlax-write-enabled-p
                         (vla-erase x)
                       ) ;_ end of if
                     ) ;_ end of lambda
                    (mapcar 'cadr (ssnamex ss)) ;_преобразование набора в список
            ) ;_ end of mapcar
            (princ (strcat "\nУдалено "
                           (itoa (sslength ss))
                           " объестов со слоя "
                           La1
                   ) ;_ end of strcat
            ) ;_ end of princ
          ) ;_ end of progn
        ) ;_ end of if
        (setq ss nil)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of while
  (princ)
) ;_ end of defun
2. Даже если прыгаешь по layuot'am, есть лисповская ф-ция LAYOUTLIST, которая возвращает имена листов. Не обязательно их брать из словаря ACAD_LAYOUT
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.11.2007, 14:39
#8
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Век живу, век, учусь
Огромное спасибо за поправки!
kp+ вне форума  
 
Непрочитано 13.11.2007, 17:56
#9
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


>VVA:
Один ламерский вопрос: как ты расставляешь маркировки окончания выражений (типа ;_ end of while)? Не вручную же?
Какой-то примочкой пользуешься для автоматической их расстановки?
kp+ вне форума  
 
Непрочитано 13.11.2007, 18:21
#10
VVA

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


Для работы с лиспом использую встроенный в Автокад редактор (_VLIDE в командной строке)
Далее см скриншоты
Миниатюры
Нажмите на изображение для увеличения
Название: Capture.jpg
Просмотров: 181
Размер:	65.5 Кб
ID:	773  Нажмите на изображение для увеличения
Название: Capture1.jpg
Просмотров: 158
Размер:	71.4 Кб
ID:	775  
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 14.11.2007 в 12:50.
VVA вне форума  
 
Непрочитано 14.11.2007, 11:21
#11
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Извини, скриншотов не вижу . Скриншоты в http://dwg.ru/art/8 тоже не об этом.
Команда "Форматировать код в редакторе" CTRL-ALT-F тоже не расставляет
[code];_ end of while[\CODE]
и прочие маркировки
Специально облазил все пункты меню встроенного редактора VISUAL LISP, но ничего подходящего не нашел
kp+ вне форума  
 
Непрочитано 14.11.2007, 12:19
#12
Кулик Алексей aka kpblc
Moderator

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


А если так?
Миниатюры
Нажмите на изображение для увеличения
Название: fille001.jpg
Просмотров: 164
Размер:	60.6 Кб
ID:	772  
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.11.2007, 12:44
#13
VVA

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


странно, вчера были. Хорошо, что не успел удалить. У меня для русского када, у Алексея то же по английски
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 14.11.2007, 12:47
#14
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Век живу, век учусь.
Спасибо!
kp+ вне форума  
 
Непрочитано 01.12.2007, 11:06 Нашла коса на камень
#15
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Цитата:
Сообщение от VVA Посмотреть сообщение
>kp+
Что бы я сделал не так:
1. ssget "_X" итак выбирает все объекты со слоев, независимо от того, в каком пространстве они находятся. Entdel удаляет из текущего пространства, vla-erase из документа.
Прыгать по layuot'am только из-за того, чтобы там выполнить entdel и заставлять ssget каждый раз в каждом layout'e делать выбор имхо не рационально. Раз уж у тебя промелькнуло vlax-ename->vla-object, будем считать, что и vla-erase можно использовать.
Все остальное оставил как у тебя, немного оптимизировал, получил вот это
Код:
[Выделить все]
;_ удаление всего на всех выключенных/замороженных слоях на всех листах и в модели
;_ Вариант 2
(defun c:kp_ldi (/ La1 La_name_List ss)
  (vl-load-com)
  (while (setq La1 (tblnext "LAYER" (null La1)))
    (if (and
          (or
            (minusp (cdr (assoc 62 La1))) ;_layer is off
            (= 1 (logand 1 (cdr (assoc 70 La1)))) ;_layer is frozen 
          ) ;_ end of or
          (/= 16 (logand 16 (cdr (assoc 70 La1)))) ;_xref layer
        ) ;_ end of and
      (progn
        (if (setq
              ss (ssget "_X"
                        (list (cons 8 (setq La1 (cdr (assoc 2 La1)))))
                 ) ;_ end of ssget
            ) ;_ end of setq
          (progn
            (mapcar '(lambda (x)
                       (if (vlax-write-enabled-p
                             (setq x (vlax-ename->vla-object x))
                           ) ;_ end of vlax-write-enabled-p
                         (vla-erase x)
                       ) ;_ end of if
                     ) ;_ end of lambda
                    (mapcar 'cadr (ssnamex ss)) ;_преобразование набора в список
            ) ;_ end of mapcar
            (princ (strcat "\nУдалено "
                           (itoa (sslength ss))
                           " объестов со слоя "
                           La1
                   ) ;_ end of strcat
            ) ;_ end of princ
          ) ;_ end of progn
        ) ;_ end of if
        (setq ss nil)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of while
  (princ)
) ;_ end of defun
2. Даже если прыгаешь по layuot'am, есть лисповская ф-ция LAYOUTLIST, которая возвращает имена листов. Не обязательно их брать из словаря ACAD_LAYOUT
Нашла коса на камень: в одном из чертежей, к которому применялась эта прога, был какой-то proxy-объект. На нем метод vla-erase выдал ошибку: "не разрешено для этого заместителя".
Я попробовал заменить проверку
Код:
[Выделить все]
(vlax-write-enabled-p
    (setq x (vlax-ename->vla-object x))
 )
на
Код:
[Выделить все]
(vlax-method-applicable-p
    (setq x (vlax-ename->vla-object x))
    'erase
 )
но это не дало результатов: метод vla-erase формально вроде как применим к тому proxy-объекту, а выполнить его нельзя.

О проге Александра Ривилиса для удаления proxy-объектов знаю, но мне они особо не мешают (не мешали до сих пор )

Как можно сделать так, чтобы прога "обходила стороной" эти объекты?
kp+ вне форума  
 
Непрочитано 03.12.2007, 10:01
#16
VVA

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


Попробуй vla-erase "обернуть" в VL-CATCH-ALL-APPLY
Код:
[Выделить все]
(if (vlax-write-enabled-p
      (setq x (vlax-ename->vla-object x))
      ) ;_ end of vlax-write-enabled-p
  (VL-CATCH-ALL-APPLY 'vla-erase (list x))
  ) ;_ end of if
Если dxf группа 0 что-то вроде (0 . "*PROXY*"), то можно так
Код:
[Выделить все]
(if (and
      (not(wcmatch (cdr(assoc 0 (entget x))) "*PROXY*"))
      (vlax-write-enabled-p
      (setq x (vlax-ename->vla-object x))
      ) ;_ end of vlax-write-enabled-p
      )
  (VL-CATCH-ALL-APPLY 'vla-erase (list x))
  ) ;_ end of if
Или в ssget сразу исключить
Код:
[Выделить все]
(setq ss (ssget "_X" (list
                       (-4 . "<NOT")
                       (0 . "*PROXY*")
                       (-4 . "NOT>")
                       (cons 8 (setq La1 (cdr (assoc 2 La1))))
                       )
                 ) ;_ end of ssget
            ) ;_ end of setq
PS. Стороной то эти объеткы она обходить может быть и будет, но слои-то удалять не будет. Так-что советую все-таки прогу Александра Ривилиса.
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.12.2007 в 10:14.
VVA вне форума  
 
Непрочитано 03.12.2007, 10:09
#17
VVA

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


Я вот для себя такую вот кнопку сделал
Код:
[Выделить все]
^C^C(mip_purge_proxy);EXPLODEALLPROXY;REMOVEALLPROXY;_AUDIT;_Y;
Вот и загрузчик
Код:
[Выделить все]
(vl-load-com)
(defun whatAcadVer ( / Aver)
;;;Ф-ция возвращает версию Автокада ввиде 2004 2005 2006 2007 2008 2009
;;;(setq Aver (atof (substr (getvar "ACADVER") 1 4)))
;;;(cond
;;;((= Aver 18.0) 2010)  
;;;((= Aver 17.2) 2009)
;;;((= Aver 17.1) 2008)
;;;((= Aver 17.0) 2007)
;;;((= Aver 16.2) 2006)    
;;;((= Aver 16.1) 2005)
;;;((= Aver 16.0) 2004)
;;;((= Aver 15.06) 2002)
;;;(t 2011)
;;;)
  ;;;Get from Elpanov Evgeniy http://www.theswamp.org/index.php?topic=36606.msg416187
  (atoi (substr (ver) 13))
 ;;; (atoi (vl-string-trim "VISUALP " (strcase (ver))))
)
(defun Acad64Bit-version ()
;;;http://forum.dwg.ru/showthread.php?t=31568
;;;; (defun gc:IsAcad64   ()
;;;  (vlax-property-available-p
;;;    (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
;;;    'ObjectId32
;;;  )
;;;)  
;;;Функция возвращает T если Автокад 64 разрядный
;;;Функция возвращает NIL если Автокад 32 разрядный
  (vl-load-com)
  (> (strlen (vl-prin1-to-string (vlax-get-acad-object))) 40)
)
(defun mip_purge_proxy ( / aver noerr ret dict)
  (setq noerr t)
  (if (null
	(vl-remove-if-not '(lambda(x)(wcmatch x "explodeproxy*"))(arx))
	)
    (cond ((= (setq aver (whatAcadVer)) 2002)
	   (arxload "explodeproxy2000")
	   )
	  ((member aver '(2004 2005 2006))
	   (arxload "explodeproxy2006")
	   )
	  ((member aver '(2007 2008))
	   (arxload "explodeproxy2007")
	   )
	  ((member aver '(2009))
	   (if (Acad64Bit-version)
	     (arxload "ExplodeProxy2009x64.arx")
	     (arxload "ExplodeProxy2009x32.arx")
	     )
	   )
	  ((member aver '(2010 2011 2012))
	   (if (Acad64Bit-version)
	     (arxload "ExplodeProxy2010x64.arx")
	     (arxload "ExplodeProxy2010x32.arx")
	     )
	   )
	  ((member aver '(2013 2014 2015))
	   (if (Acad64Bit-version)
	     (arxload "ExplodeProxy2013x64.arx")
	     (arxload "ExplodeProxy2013x32.arx")
	     )
	   )
	  (t
	   (setq noerr nil)
	   (defun C:EXPLODEALLPROXY()(princ))
           (defun C:REMOVEALLPROXY()
	   (alert "mip_purge_proxy\nДля данной версии Автокада\nНет explodeproxy"))
	   )
	  )
    )
    (if noerr
      (progn
	;;;От разработчиков GEONICS
	(defun del_dist_GeoniCS (/ dict1)
	(if (setq dict1 (cdr (assoc -1 (dictsearch (namedobjdict) "GEONICS"))))
    		(progn
			(dictremove (namedobjdict) "GEONICS")
 		) ;_ end of progn
	) ;_ end of if
	  (princ)
	  ) ;_ end of defun
	(del_dist_GeoniCS)
	(setq del_dist_GeoniCS nil)
	(princ)
	)
      )
  )
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 02.09.2013 в 18:41. Причина: новая версия
VVA вне форума  
 
Непрочитано 28.11.2019, 11:15
| 1 #18
merkur1y

дороги
 
Регистрация: 12.07.2019
СПб
Сообщений: 134


#4 для удаления из модели - идеально сработала
и объекты в выключенных слоях удалила и сами выключенные слои
merkur1y вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Удалить слои которые выключены

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для чего нужны фильтры слоев?Как ими пользоваться? Aysulu AutoCAD 43 17.04.2019 10:59
Как удалить слои??? sanekmgsu AutoCAD 7 09.06.2007 12:25
как удолить лишние слои float AutoCAD 6 24.01.2007 22:16
Невозможно удалить слои. а их за 2 сотни.. Cotomister AutoCAD 7 10.01.2006 17:43
Как удалять слои???????? Абдула AutoCAD 2 03.10.2005 19:07