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

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

Как переместить отрезки различных слоев из одного слоя в другие слои по цветам?

Ответ
Поиск в этой теме
Непрочитано 25.03.2013, 20:46
Как переместить отрезки различных слоев из одного слоя в другие слои по цветам?
Dyuk
 
ПГС
 
Санкт-Петербург
Регистрация: 25.11.2007
Сообщений: 280

Здравствуйте. Помогите с решением такой задачи:

Имеется чертеж, в котором все отрезки находятся в нулевом слое. Различные отрезки имеют свой цвет. (например синий, красный и зеленый).

Необходимо переместить эти отрезки из нулевого слоя в отдельные слои соответствующие цветам отрезкам.
например отрезки с цветом "синий" переместить в "слой 1", "красный" в "слой 2" и зеленый соответственно в "слой 3".

Всё это нужно сделать в автоматизированном режиме.

Может быть есть какой плагин подходящий? : Помощь: Спасибо за внимание.

Зачем мне это надо?
Я обнаружил, что из Sketchup можно экспортировать в автокад любые виды и разрезы (аналог команды flatshot, sectionplane).
Но преимущество Sketchup в том, что при экспорте в автокад можно задать линиям цвет соответствующий определенному слою.

более подробно об этом можно посмотреть ссылке в видео ниже
http://youtu.be/0Qd4z5t0Ns8
Просмотров: 12491
 
Непрочитано 23.05.2013, 14:02
#21
pers2

Конструктор
 
Регистрация: 18.02.2005
Москва
Сообщений: 125


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
там же добавь (vla-put-lineweight obj acLnWtByLayer)
и Вам поклон низкий!!!

Ну и что б два раза не вставать (сам-то уже пробывал - не получилось...)
Всё в слой 0, цвет остаётся, тип и вес линий по слою... Можно??? Пожалуйста

Последний раз редактировалось pers2, 23.05.2013 в 15:13.
pers2 вне форума  
 
Непрочитано 27.11.2015, 11:32
#22
Bjarki

геолог
 
Регистрация: 27.11.2015
Сообщений: 2


Огромное человеческое спасибо, необходимость в подобной функции была очень давно.
И еще большая просьба, может кто помочь модернизировать код, чтобы цвет слоя был от отрезка.
Bjarki вне форума  
 
Непрочитано 27.11.2015, 12:35
#23
VVA

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



Так там вроде так и делается?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.11.2015, 06:35
#24
Bjarki

геолог
 
Регистрация: 27.11.2015
Сообщений: 2


Дома autocad нет под рукой, у меня несколько расширенная задача.
Так же постоянно экспортируем в dfx из горно-геологического программного комплекса, все вылезает отрезками, для своего удобства выгоняем различными цветами (зачастую более одного десятка цветов), потом ручками разносим послоям и дальше работаем. Времени уходит уйма.
Пробовал Lisp из сообщения #18 работает идеально, создает слои Color_"номер цвета", все разносит, но цвет слоя белый.
Только сейчас увидел, что нужно был попробовать нужно код из #10. На работе все попробую.
Еще раз огромное спасибо, сократили нам огромный объем работы.
Bjarki вне форума  
 
Непрочитано 30.11.2015, 15:01
1 | #25
VVA

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


Цитата:
Сообщение от Bjarki Посмотреть сообщение
что нужно был попробовать нужно код из #10. На работе все попробую
Обрати внимание, я внес в #10 небольшие изменения.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.06.2016, 10:44
#26
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 82


К VVA
А вот можно ли переименовать слой, но не в соответствии с цветом объекта, а в соответствии с цветом самого слоя?
sergeev_2005 вне форума  
 
Непрочитано 03.06.2016, 11:08
#27
VVA

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


sergeev_2005,
Кратко - можно.
А дальше одни вопросы.
Есть слой "0", цвет слоя "красный", его нужно переименовать в "0_1", где 1 - красный?
Есть слой "Стена", цвет слоя "синий",его нужно переименовать в "Стена_5"?
Есть слой "Оси", цвет слоя "119,213,34",его нужно переименовать в "Оси_119_213_34"?
Что делать, если есть слой "Стена", цвет слоя "синий" и слой "Стена_5" так же еcть в перечне слоев?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.06.2016, 11:29
#28
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 82


VVA, спасибо!
Нет, не так.
Как в твоей программе C2L иметь возможность самому давать название слоя для переименования в зависимости от цвета.
Если цвет слоя с любым названием "119,213,34", то дать слою новое название (вручную), например "Мойслой1", как в твоей программе C2L.
Если цвет слоя с любым названием "4", то дать слою новое название (вручную), например "Мойслой2".
sergeev_2005 вне форума  
 
Непрочитано 03.06.2016, 11:41
#29
VVA

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


Ну так а чем #18 не устраивает?
В коде есть коментарии. Создаешь layFilter по своим правилам и все
 
Код:
[Выделить все]
(defun C:L2LC (/ tmp txt count TrueColor layFilter lay)
;;; Layer To Layer by Color
;;; layFilter - список фильтров слоев
  (setq layFilter
         (list
           '((207 42 213) "МойСлой1") ;_ (207 42 213) - слой с цветом R=143 G=134 B=112 переименуется в слой Мойслой1
           '((5) "Синий")             ;_ (2) - слой с цветом 5 переименуется в слой Синий
         ) ;_ end of list
  ) ;_ end of setq
  (vl-load-com)
  (vlax-for Layer (vla-get-layers
                    (vla-get-activedocument (vlax-get-acad-object))
                  ) ;_ end of vla-get-layers
    (if (snvalid (vla-get-name Layer))
      (progn
        (setq tmp
               (if
                 (= (vla-get-colormethod
                      (setq TrueColor (vla-get-truecolor Layer))
                    ) ;_ end of vla-get-ColorMethod
                    accolormethodbyrgb
                 ) ;_ end of =
                  (list (vla-get-red TrueColor)
                        (vla-get-green TrueColor)
                        (vla-get-blue TrueColor)
                  ) ;_ end of list
                  (cond ((eq (vla-get-color Layer) acbyblock)
                         nil
                        )
                        ((eq (vla-get-color Layer) acbylayer)
                         nil
                        )
                        (t (list (vla-get-color Layer)))
                  ) ;_ end of cond
               ) ;_ end of if
        ) ;_ end of setq
        (or (setq lay (cadr (assoc tmp layFilter)))
;;;            (setq
;;;              lay (strcat
;;;                    "Color"
;;;                    (apply
;;;                      'strcat
;;;                      (mapcar '(lambda (x) (strcat "_" (itoa x))) tmp)
;;;                    ) ;_ end of apply
;;;                  ) ;_ end of strcat
;;;            ) ;_ end of setq
        ) ;_ end of or
        (if (and lay (not (tblobjname "Layer" lay)))
          (vl-catch-all-apply 'vla-put-name (list Layer lay))
        ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of vlax-for
  (princ)
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 03.06.2016 в 13:05.
VVA вне форума  
 
Непрочитано 03.06.2016, 12:01
#30
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 82


Все бы устраивало, но примитивы имеют цвет "по слою".
А в этом случае ничего не происходит.
А мне нужно все слои с цветом 119,213,34 назвать "Мойслой1" и т.д.
То есть все примитивы, "лежащие" на разный слоях с одним и тем же цветом, оказались на новом слое, название которому я сам могу дать.

----- добавлено через ~38 мин. -----
Да, именно это и нужно!
Но, наверное, я много хочу.
По программе L2LC самопроизвольно создались новые слои типа "Color_182_181_180" и "Color_7". Это не нужно.
А вот два "старых" слоя с одинаковым цветом повели себя следующим образом: первый получил новое название, которое я задал, а вот второй как был, так и остался с прежним названием.
А хотелось бы, чтобы слои с одинаковым цветом слились в один слой. И объекты с этих слоев попали на один новый слой.
Ну очень надо!

----- добавлено через ~58 мин. -----
VVA, можно надеяться на помощь?
sergeev_2005 вне форума  
 
Непрочитано 03.06.2016, 13:08
#31
VVA

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


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
"Color_182_181_180" и "Color_7". Это не нужно
Исправил в #29
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
два "старых" слоя с одинаковым цветом повели себя следующим образом
Это требует пояснения. Как появляются два слоя с одинаковым цветом?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 03.06.2016, 13:20
#32
sergeev_2005

Проектирование гражданских зданий
 
Регистрация: 25.03.2010
Санкт-Петербург
Сообщений: 82


Нет, они не появились. Они были. Конкретно, их названия были "A-WALL-PATT1" с цветом "133,169,214" и слой "A-WALL-PATT4" с цветом "133,169,214".
На первом и втором слое лежали "одинаковые" объекты (полилинии с заливкой). И мне надо в идеале, чтобы эти объекты перешли на новый слой "Мой слой...", а "A-WALL-PATT1" и "A-WALL-PATT4" удалились.
Фактически сейчас получается, что объекты, лежавшие на слое "A-WALL-PATT1" перешли на новый слой "Мой слой...", причем слой "A-WALL-PATT1" удалился. А вот слой "A-WALL-PATT4" остался, и объекты на нем остались.

----- добавлено через ~4 мин. -----
Может быть сформулировать иначе?
Все объекты, лежащие на слоях с одинаковым цветом, должны перейти на новый слой, название которому я задам вручную, а слои, на которых они лежали, удаляются.
sergeev_2005 вне форума  
 
Непрочитано 23.10.2019, 10:25
#33
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 398


немногог добавил чтобы в новом слое было имя исходного слоя и цвет нового слоя являлся цветом примитива
Код:
[Выделить все]
(defun C:C2L (/ tmp txt count TrueColor layFilter lay tmp_L_N)
;;;http://forum.dwg.ru/showthread.php?p=1069183
;;;http://www.cadtutor.net/forum/showthread.php?533-Lisp-colour-change-for-all-layers-and-blocks/page10
;;; Color To Layer
;;; layFilter - Layer List
;;;If the colors are not in the list of layers, the layer will be called Color_Number.
;;;For example, for 123 colors -> Layer name "Color _123"
;;;color R = 12 G = 32 B = 65  -> Layer name "Color _12_32_65"
 (setq layFilter
        (list
          '((143 134 112) "MyLay1") ;_entity with color R = 143 G = 134 B = 112 is transferred to the layer "MyLay1"
          '((110 87 168) "MyLay2")  ;_entity with color R = 110 G = 87 B = 168 is transferred to the layer "MyLay2"
          '((1) "Red")  ;_entity with color ACI = 1 is transferred to the layer "Red"
          '((2) "Yellow") ;_entity with color ACI = 2 is transferred to the layer "Yellow"
          '((3) "Green")  ;_entity with color ACI = 3 is transferred to the layer "Green"
) ;_ end of list
 ) ;_ end of setq
 (vl-load-com)
 (vlax-for Blk (vla-get-blocks
                 (vla-get-activedocument (vlax-get-acad-object))
               ) ;_ end of vla-get-Blocks
   (if (eq (vla-get-isxref Blk) :vlax-false)
     (progn
       (setq count 0
             txt   (strcat "Changed " (vla-get-name Blk))
       ) ;_ end of setq
       (grtext -1 txt)
       (vlax-for Obj Blk
         (setq count (1+ count))
         (if (zerop (rem count 10))
           (grtext -1 (strcat txt " : " (itoa count)))
         ) ;_ end of if
         (if (and (vlax-write-enabled-p Obj)
                  (vlax-property-available-p Obj 'Color)
             ) ;_ end of and
           (setq tmp
                  (if
                    (= (vla-get-colormethod
                         (setq TrueColor (vla-get-truecolor Obj))
                       ) ;_ end of vla-get-ColorMethod
                       accolormethodbyrgb
                    ) ;_ end of =
                     (list (vla-get-red TrueColor)
                           (vla-get-green TrueColor)
                           (vla-get-blue TrueColor)
                     ) ;_ end of list
                     (cond ((eq (vla-get-color obj) acbyblock)
                            nil
                           )
                           ((eq (vla-get-color obj) acbylayer)
                            nil
                           )
                           (t (list (vla-get-color obj)))
                     ) ;_ end of cond
                  ) ;_ end of if
				  tmp_L_N
						(vla-get-Layer Obj)
           ) ;_ end of setq
           (setq tmp nil)
         ) ;_ end of if
         (or (setq lay (cadr (assoc tmp layFilter)))
             (setq
               lay (strcat
                      tmp_L_N "_" "Color"
                     (apply
                       'strcat
                       (mapcar '(lambda (x) (strcat "_" (itoa x))) tmp)
                     ) ;_ end of apply
                   ) ;_ end of strcat
             ) ;_ end of setq
         ) ;_ end of or
         (if (and tmp (listp tmp) (vlax-write-enabled-p Obj))
           (entmod
             (subst
               (cons
                 8
                 lay
               ) ;_ end of cons
               (assoc 8 (entget (vlax-vla-object->ename obj)))
               (entget (vlax-vla-object->ename obj))
             ) ;_ end of subst
           ) ;_ end of entmod
         ) ;_ end of if
		 (setq tmp_L_N nil)
		 (vla-put-truecolor (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (vla-get-layer obj)) (vla-get-truecolor obj))
		(vla-put-Color obj acByLayer)
       ) ;_ end of vlax-for
     ) ;_ end of progn
   ) ;_ end of if
 ) ;_ end of vlax-for
 (vl-cmdf "_regenall")
 (princ)
) ;_ end of defun

Последний раз редактировалось Composter, 23.10.2019 в 11:50.
Composter вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как переместить отрезки различных слоев из одного слоя в другие слои по цветам?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 671 03.11.2019 16:26
1000 слоев. Нормально или плохо? И другие аспекты правильного черчения в автокаде Vova AutoCAD 96 07.09.2019 16:26
Для чего нужны фильтры слоев?Как ими пользоваться? Aysulu AutoCAD 43 17.04.2019 10:59
Unreconciled new layers при Xref Red Nova AutoCAD 17 10.01.2019 13:00
Почему не проходит теплорасчет? Suom Конструкции зданий и сооружений 15 10.08.2011 17:22