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

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

Как перенести примитивы на слой 0, но с исходными свойствами

Ответ
Поиск в этой теме
Непрочитано 29.06.2010, 10:46 #1
Как перенести примитивы на слой 0, но с исходными свойствами
Alexander_Liseev
 
ОВ
 
Северная столица
Регистрация: 09.11.2005
Сообщений: 161

Есть куча примитивовов на разных слоях, допустим они имеют все свойства "по слою", нужно из этого создать блок, который будет в каком-то слое, чтобы потом без лишних телодвижений выключать его.
Как перенести примитивы в блоке на слой 0, но чтобы все цвета, типы линий и т.д остались прежними? Ну наверняка есть какоё-нибудь лиспик...
__________________
Да прибудет с вами сила
Просмотров: 3890
 
Непрочитано 29.06.2010, 10:59
#2
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Если проблема в выключении, то может быть вместо этого попробовать этот слой заморозить?
Makswell вне форума  
 
Непрочитано 29.06.2010, 11:10
#3
Кулик Алексей aka kpblc
Moderator

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


Alexander_Liseev, тебе приципиальное решение или готовый код?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.06.2010, 11:14
#4
Alexander_Liseev

ОВ
 
Регистрация: 09.11.2005
Северная столица
Сообщений: 161
<phrase 1=


to Makswell Плин, как все просто... перемудрил я чего-то.
to Кулик Алексей aka kpblc Ну если не напряжно, то не откажусь от кода на будущее. Заранее благодарен.
__________________
Да прибудет с вами сила
Alexander_Liseev вне форума  
 
Непрочитано 29.06.2010, 11:51
1 | #5
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(vl-load-com)

(defun _dwgru-ent-to-0 (ent / adoc prop_lst lst layer layers err)
          ; ent -> указатель на вхождение блока.
  (setq ent      (cond
                   ((= (type ent) 'ename) (vlax-ename->vla-object ent))
                   ((= (type ent) 'vla-object) ent)
                   ) ;_ end of cond
        ent      (vla-item (vla-get-blocks (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
                           (vla-get-effectivename ent)
                           ) ;_ end of vla-item
        layers   (vla-get-layers adoc)
        prop_lst (list (cons "color" 256)
                       (cons "lineweight" aclnwtbylayer)
                       (cons "linetype" -1)
                       ) ;_ end of list
        ) ;_ end of setq
  (vla-startundomark adoc)
  (vlax-for sub ent
    (setq layer (vla-item layers (vla-get-layer sub))
          layer (mapcar
                  (function
                    (lambda (x)
                      (cons (car x) (vlax-get-property layer (car x)))
                      ) ;_ end of lambda
                    ) ;_ end of function
                  prop_lst
                  ) ;_ end of mapcar
          lst   (mapcar
                  (function
                    (lambda (x)
                      (cons (car x)
                            (cond
                              ((= (vlax-get-property sub (car x)) (cdr x))
                               (cdr (assoc (car x) layer))
                               )
                              (t (vlax-get-property sub (car x)))
                              ) ;_ end of cond
                            ) ;_ end of cons
                      ) ;_ end of lambda
                    ) ;_ end of function
                  prop_lst
                  ) ;_ end of mapcar
          ) ;_ end of setq
    (if (vl-catch-all-error-p
          (vl-catch-all-apply
            (function
              (lambda ()
                (vla-put-layer sub "0")
                (foreach prop lst
                  (vl-catch-all-apply
                    (function
                      (lambda ()
                        (vlax-put-property sub (car prop) (cdr prop))
                        ) ;_ end of lambda
                      ) ;_ end of function
                    ) ;_ end of vl-catch-all-apply
                  ) ;_ end of foreach
                ) ;_ end of lambda
              ) ;_ end of function
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of vl-catch-all-error-p
      (setq err t)
      ) ;_ end of if
    ) ;_ end of vlax-for
  (if err
    (princ "\nБыли ошибки!")
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как перенести примитивы на слой 0, но с исходными свойствами



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проектирование человека. FOXAL Разное 283 25.05.2010 09:52
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как поведет себя облицовочный слой Fagot Прочее. Архитектура и строительство 12 25.03.2005 12:16
Как обьект переместтить из одного в другой слой? NTU AutoCAD 2 20.02.2005 16:20
Как перенести текст из AutoCAD'a в MS Word? sear_ch AutoCAD 4 12.01.2004 20:50