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

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

Одинаковые слои разных ссылок

Ответ
Поиск в этой теме
Непрочитано 09.03.2011, 20:42 #1
Одинаковые слои разных ссылок
sergeev_2005
 
Проектирование гражданских зданий
 
Санкт-Петербург
Регистрация: 25.03.2010
Сообщений: 90

В последних версиях AutoCAD есть кнопки отключения и замораживания слоя внешней ссылки, на котором расположен выбранный курсором объект.
В ранних версиях эти команды находились в Express Tools.
Кто знает, есть ли возможность (также одной командой) отключать и замораживать одноименные слои различных ссылок?
Например выбором объекта, расположенного на слое File1|АР-СТЕН-ШТРИХ,
заморозить не только этот слой, но и слои File2|АР-СТЕН-ШТРИХ, File3|АР-СТЕН-ШТРИХ и т. д.
Просмотров: 3411
 
Непрочитано 09.03.2011, 21:01
#2
Кулик Алексей aka kpblc
Moderator

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


Используй фильтры слоев...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.03.2011, 00:58
#3
sergeev_2005

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


Спасибо, Алексей!
Фильтры по свойствам и применяю. Однако:
1. Многодельно - определить слой объекта (либо почесать в затылке и напрячься, либо открыть ссылочный файл), открыть диспетчер слоев, создать фильтр, заморозить все слои, закрыть фильтр. Сравни: нажать кнопку и кликнуть по объекту!
2. Эти операции спецам-исполнителям осозновать и запоминать лениво. Их можно понять - рука на эти операции не набита, а голова направлена на существо вопроса.
А хотелось бы отделаться одной командой. Файл подложка для инженеров (план здания целиком) формируется, как правило, из многочисленных файлов, содержащих отдельные секции здания.
sergeev_2005 вне форума  
 
Непрочитано 10.03.2011, 01:58
#4
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
В последних версиях AutoCAD есть кнопки отключения и замораживания слоя внешней ссылки
Почему слоя только внешней ссылки? Любого выбранного слоя, кроме текущего. А по существу: нельзя-ли все элементы подосновы расположить в одном слое, скажем, подосноова? Еще такой вариант для сокрытия блока/хрефа без замораживания. _xclip, если предварительно переменную xclipframe выставить в 2. Тогда на рамке подрезки (которой следует окружить блок снаружи) появится флажок, нажатие на который приведет к невидимости блока. А если в новый блок собрать все куски-хрефы, то всего одно нажатие закроет все. И-почитай тему под названием Подоснова
Vova вне форума  
 
Автор темы   Непрочитано 11.03.2011, 01:55
#5
sergeev_2005

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


Понятно, Владимир.
Но мой вопрос связан со способом совместной работы архитекторов и инженеров. Инженерные разделы проекта выполняются на планах-ссылках архитектурных чертежей. Если здание небольшое, то один план этажа всего здания находится в одном файле, и проблем с замораживанием и изменением свойств слоев ссылки не возникает.
Если же здание состоит из 10 - 30 секций, то архитектурный план этажа каждой секции может находится в своем файле, и тогда инженеры используют сборку из ссылок.
В этом случае операции по "причесыванию" подосновы (работы со слоями ссылок) приходится выполнять многократно, либо пользоваться фильтром по свойствам (см. пост 2).
В тоже время на форуме обсуждалось:
- возможность извлечения названия слоя;
- обрезка текстовой строки по определенному символу.
Почему бы не существовать набору команд, работающих со слоями, содержащими в названии общую часть?
Вроде бы такая возможность имеется. Сам я в программировании застыл на Фортране и PL1 80-х. А на форуме - явные корифеи.
sergeev_2005 вне форума  
 
Непрочитано 11.03.2011, 08:52
#6
Лиспер


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


Это так, что ли, хотелось?
Код:
[Выделить все]
 (vl-load-com)

(defun c:freeze-by-nent (/ adoc ent layer)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq ent (vl-catch-all-apply
                           (function
                             (lambda ()
                               (car (nentsel "\nУкажите примитив на замораживаемом слое <Отмена> : "))
                               ) ;_ end of lambda
                             ) ;_ end of function
                           ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'ename
         ) ;_ end of =
    (if (wcmatch (setq layer (cdr (assoc 8 (entget ent)))) "*|*")
      (progn
        (setq layer (strcat "*" (strcase (substr layer (1+ (vl-string-search "|" layer))))))
        (foreach layer ((lambda (/ res)
                          (vlax-for item (vla-get-layers adoc)
                            (if (wcmatch (strcase (vla-get-name item)) layer)
                              (setq res (cons item res))
                              ) ;_ end of if
                            ) ;_ end of vlax-for
                          (reverse res)
                          ) ;_ end of lambda
                        )
          (vl-catch-all-apply
            (function
              (lambda ()
                (vla-put-freeze layer :vlax-true)
                ) ;_ end of lambda
              ) ;_ end of function
            ) ;_ end of vl-catch-all-apply
          ) ;_ end of foreach
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 11.03.2011, 11:55
#7
sergeev_2005

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


Ага! Это именно то, что хотелось. СПАСИБО!!!
Обнаружил одну особенность. Если на ссылке в качестве объекта я выбирю блок, то программа обнаруживает не тот слой, на котором сидит блок, а слой, на котором блок сделан.
То есть программа копает на всю глубину, и, соответственно, если примитивы блока сидят на слое "0", то замораживания нужного слоя не происходит.
sergeev_2005 вне форума  
 
Непрочитано 11.03.2011, 12:33
#8
Лиспер


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


А если и сам блок помещен на слой "0"? Чего тогда делать? Тем не менее:
Код:
[Выделить все]
 (vl-load-com)

(defun c:freeze-by-nent (/ adoc ent layer)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (= (type (setq ent (vl-catch-all-apply
                           (function
                             (lambda ()
                               (nentsel "\nУкажите примитив на замораживаемом слое <Отмена> : ")
                               ) ;_ end of lambda
                             ) ;_ end of function
                           ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'list
         ) ;_ end of =
    (progn
      (setq ent (if (> (length (last ent)) 1)
                  (car (last ent))
                  (car ent)
                  ) ;_ end of if
            ) ;_ end of setq
      (if (wcmatch (setq layer (cdr (assoc 8 (entget ent)))) "*|*")
        (progn
          (setq layer (strcat "*" (strcase (substr layer (1+ (vl-string-search "|" layer))))))
          (foreach layer ((lambda (/ res)
                            (vlax-for item (vla-get-layers adoc)
                              (if (wcmatch (strcase (vla-get-name item)) layer)
                                (setq res (cons item res))
                                ) ;_ end of if
                              ) ;_ end of vlax-for
                            (reverse res)
                            ) ;_ end of lambda
                          )
            (vl-catch-all-apply
              (function
                (lambda ()
                  (vla-put-freeze layer :vlax-true)
                  ) ;_ end of lambda
                ) ;_ end of function
              ) ;_ end of vl-catch-all-apply
            ) ;_ end of foreach
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of progn
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 11.03.2011, 14:04
#9
sergeev_2005

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


Это здорово!
А если кто поместит блок или внешнюю ссылку на слой "0", тому общественное порицание и исправительные работы по перемещению блоков и ссылок на соответствующие рабочие слои, отличные от нуля и др.
Вот так и получилось. Из девяти ссылок одна оказалась на нулевом слое.
Естественно, слои не замораживались при кликах на объекты этой ссылки.
А при указании некоторых объектов (по-моему тех, которые не блоки) "правильных" ссылок замораживался слой ссылки.
Еще раз благодарность профессионалу!
С годами их у нас становится все меньше.
sergeev_2005 вне форума  
 
Непрочитано 11.03.2011, 15:40
#10
Лиспер


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


Так надо было определить имена (и, возможно, расположение) внешних ссылок и блоков, лежащих на определенном слое? Или принудительно перенести все внешние ссылки на определенный слой?
Так это можно сделать вообще не запрашивая ничего у пользователя
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 11.03.2011, 15:59
#11
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


И все-же мне кажется вариант с xclip более мобильный. Если у рамочки поместить пояснение, что она в себе скрывает, то мобильность управления видимостью блока очень высока
Vova вне форума  
 
Автор темы   Непрочитано 11.03.2011, 19:42
#12
sergeev_2005

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


Архитектор разрабатывает чертежи (прежде всего планировки) здания на стадии "П" или "Р".
Инженер (ВК, ОВ, ЭО ...) копирует к себе в файл чертеж архитектора и начинает его чистить. Стирать ненужные размеры, обозначения, маркировки дверей, окон, проемов, помещений, пояснения. Каждый своё.
Вся эта с точки зрения инженера "грязь" разбросана по всему чертежу. Что-то в виде блоков, что-то в виде примитивов. Некоторые линии делают тоньше, изменяют цвет и т. д. В общем создают из архитектурного чертежа подоснову для нанесения оборудования, трубопроводов и т. д.
Конечно, работать с копией архитектуры - путь тупиковой. При появлении нового варианта надо либо заново проделать всю работу, либо внимательно внести изменения в уже обработанную копию.
Поэтому вместо копии используем ссылку. А все вышеперечисленные операции выполняем со слоями ссылки.
А часто архитекторы не делают единого чертежа, а распределяют секции и этажи здания по отдельным файлам. Тогда приходится иметь дело со сборкой из ссылок.
Отсюда мой вопрос и возник (см. последние две строки поста 1).
Лиспер дал исчерпывающий ответ.
Честно говоря, я не понял, как способом, предложенным Владимиром, можно все это проделать.
Конечно, хотелось бы не только уметь одним движением заморозить одинаковые слои на всех ссылках, но выполнять другие действия, например, изменять вес линии слоёв или их цвет. А также определять имена слоев, на которых лежат объекты и примитивы ссылок. Но это уже не столь насущная задача.
sergeev_2005 вне форума  
 
Непрочитано 11.03.2011, 20:16
#13
Лиспер


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


Изменить вес и цвет линии слоя внешней ссылки в текущем файле удастся, не вопрос. Но вот дальше возникает вопрос - а visretain менять на 1? Или на 0? Или вообще не менять?
Цитата:
Сообщение от sergeev_2005 Посмотреть сообщение
определять имена слоев, на которых лежат объекты и примитивы ссылок
Допустим, определили. А дальше чего?
P.S. Пока экспериментировал только с внешними ссылками одного уровня вложенности, второго и дальше не пробовал. И не проверял, соответственно, как код будет работать с наложенными и вставленными ссылками.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 11.03.2011, 21:07
#14
sergeev_2005

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


Лисперу
Определили название слоя и решили, что с ним делать. Файл ссылки-то для инженера чужой, названия слоёв в памяти не сидят. Вот и приходится для справки открывать файл архитектора и, тыкая в объекты, смотреть, на каком слое они лежат. Часто, ведь, и ошибки встречаются.
visretain всегда 1.
Сейчас я вижу, что мой вопрос можно обобщить.
Какие могут быть инструменты для работы с группой слоев ссылок, автоматически отфильтрованных по названию без префикса имени ссылки, прямо из чертежа, минуя диспетчер свойств слоёв?
sergeev_2005 вне форума  
 
Непрочитано 06.06.2012, 12:02
#15
vlig

ГАП
 
Регистрация: 29.09.2009
Липецк
Сообщений: 17


Если ещё актуально.
Можно всего-навсего внедрить все внешние ссылки вставкой - при этом произойдёт слияние слоев внешних ссылок с идентичными внутренними именами слоев. Ну и далее, несколькими кликами изменить необходимые свойства слоев для соответствия их запросам смежников. Минус в том, что вся структура внешних ссылок превратится в один единственный файл подосновы, хотя может это даже достоинство - многие умудренные опытом инженерА затрудняются даже папку скопировать в проводнике что уж там умничать им про внешние ссылки какие-то... Хотя в принципе полученные блоки вполне можно сконвертить снова во внешние ссылки инструментом из Express Tools (не помню каким, но вроде такой есть) - но это уже изврат имхо.
__________________
!БДИ!
vlig вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Одинаковые слои разных ссылок



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слои внешних ссылок Werwolf AutoCAD 20 25.07.2020 01:21
Для чего нужны фильтры слоев?Как ими пользоваться? Aysulu AutoCAD 43 17.04.2019 10:59
Странный блок. В "BLOCKS Section" выдаются одинаковые координаты центров разных окружностей! KAI Программирование 12 08.11.2010 21:41
AutoCAD 2007 создает новые слои Sneginka_Clan AutoCAD 7 26.05.2009 21:09
Как удалять слои???????? Абдула AutoCAD 2 03.10.2005 19:07