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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Что можно сделать со слоями (и объектами на них), которые не отображаются в Диспетчере свойств слоев (*IDW_BlockReferenceLayer)

Что можно сделать со слоями (и объектами на них), которые не отображаются в Диспетчере свойств слоев (*IDW_BlockReferenceLayer)

Ответ
Поиск в этой теме
Непрочитано 05.12.2018, 12:13 #1
Что можно сделать со слоями (и объектами на них), которые не отображаются в Диспетчере свойств слоев (*IDW_BlockReferenceLayer)
LcH
 
Регистрация: 24.03.2014
Сообщений: 15

Что можно сделать со слоями (и объектами на них), которые не отображаются в Диспетчере свойств слоев (*IDW_BlockReferenceLayer)

Добрый день.

Недавно получили чертежи, это чертежи оборудования, которое мы должны использовать в своем проекте.
На листе в видовых экранах - блоки видов оборудования с именами: *I20, *I12, *I30 и т.д. , в пространстве листа - размеры - также в виде блоков с аналогичными именами *I73, *I72 и т.д..
И все эти блоки вставлены на слой *IDW_BlockReferenceLayer. Этот слой не отображается в Диспетчере свойств слоев, а также не отображается в Палитре свойств, если выделить любой из этих блоков, различные другие свойства этих блоков отображаются в Палитре свойств, а строки Слой нет.
Это имя слоя можно увидеть только во всплывапющей подсказке Автокада при наведении курсора на любое из вхождений блоков. См. вложение - Слой.jpg.

Конечно, ни один из этих блоков не редактируется, редактор блоков их не видит, в пространстве Модели ничего не отображается.
Но с блоками то - ладно, оказалось в файле блоки этого оборудования присутствовали, только с другими именами, обычными, вполне редактируемые,
их можно было вставить в пространсво модели на любой слой и дальше с ними работать.
Да, изначально оборудование создавалось похоже в Inventor'е, а блоки *I.. - это 2D проекции 3D блоков Inventor'а.

Другое дело - слой *IDW_BlockReferenceLayer !!! Я в первый раз увидела подобные скрытые слои.
Вопрос такой - может быть кто-нибудь знает, какое программное обеспечение создает слои такого типа, что можно сделать с такими слоями и объектами на них.

К сожалению, выложить dwg не могу.

Миниатюры
Нажмите на изображение для увеличения
Название: Слой.jpg
Просмотров: 63
Размер:	6.3 Кб
ID:	208741  

Просмотров: 3439
 
Непрочитано 06.12.2018, 12:18
#2
kp+

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


Цитата:
Сообщение от LcH Посмотреть сообщение
Конечно, ни один из этих блоков не редактируется
Программа для работы с "безымянными" блоками здесь: https://forum.dwg.ru/showthread.php?t=66355

Цитата:
Сообщение от LcH Посмотреть сообщение
что можно сделать с такими слоями
Дустом _audit или _recover не пробовали?

Цитата:
Сообщение от LcH Посмотреть сообщение
К сожалению, выложить dwg не могу.
значит, дальше говорить не о чем.
__________________
Одно меня лишь радует - я это вижу сам! (С)

Последний раз редактировалось kp+, 06.12.2018 в 12:23.
kp+ вне форума  
 
Непрочитано 06.12.2018, 13:10
#3
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,250


Цитата:
Сообщение от LcH Посмотреть сообщение
К сожалению, выложить dwg не могу.
Вообще-то не проблема выложить малюсенький кусочек с вхождением пары блоков.
Цитата:
Сообщение от LcH Посмотреть сообщение
что можно сделать с такими слоями и объектами на них.
Turbocad Designer (версия 17 русская - бесплатная) переименовывает такие блоки автоматом, насколько я помню. Насчет слоя - не в курсе.
Другое дело, что он может попортить твердые тела, а может, и еще что-нибудь.
Oleg T вне форума  
 
Автор темы   Непрочитано 07.12.2018, 13:17
#4
LcH


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


Добрый день!
Спасибо, что откликнулись на мое сообщение.

Во вложении dwg, в котором скрытый слой *IDW_BlockReferenceLayer, см. предыдущее мое сообщение.
Этот слой не виден в Диспетчере свойств слоев, на этом слое - "анонимные блоки" типа "*I..", в пространстве Модели эти блоки не отображаются, а отображаются только в видовых экранах листа.
Если в видовом экране листа навести курсор на такой блок, то в подсказке Автокада отображается информация о том, на каком слое этот блок (Слой.jpg),
а в Палитре свойств (если выбрать такой блок) строка Слой вообще отсутствует.

Хочу уточнить, что, в данном случае, блоки меня уже не интересуют. Они есть в файле в классическом виде,
да и производитель уже прислал нам 3D модель этого оборудования, да и работа уже выполнена.
Еще, утилиты BGTOOLS мне известны, они подключены в моем файле адаптации, до этого пользовалась версией 3.1а, когда столкнулась с данной проблемой, скачала версию 3.8.2.
Но функции-команды UX и U2B не распознают анонимные блоки с именами *I..., в коде я нашла строки типа:
(wcmatch bname "`*U*,`*E*") и (wcmatch (setq bname (cdr (assoc 2 (entget uname)))) "`*U*,`*X*,`*E*"). А у меня , блоки *I17, *I14 и т.д.
Не буду подробно описывать свои эксперименты, я не настолько знаю Lisp, но у меня получилось, что команда UX как-то отработала, но при этом ругалась на слой:
Команда: UX
Выбери блок
bname= *I17
myrognОшибка Automation. НеприменимоОшибка Automation. Неверный слой
Команда:
Т.е. дело в закрытом слое *IDW_BlockReferenceLayer.

Если уважаемый всеми VVA заинтересуется и захочет внести дополнения в свой набор функций, может быть это кому-нибудь пригодится и поможет в работе.

У меня профессионально-спортивный интерес на будущее, если будут еще чертежи с такими скрытыми ("анонимными") слоями.

Кто-нибудь сталкивался с таким типом слоев? Можно ли как-то преобразовать их в слои, скажем так, классического типа?
Если у кого-нибудь возникнет спортивный, или какой-нибудь другой интерес, посмотрите, пожалуйста, файл Интересен скрытый слой_071218.dwg во вложении.
буду рада, если кто-нибудь выскажет свое мнение.
Миниатюры
Нажмите на изображение для увеличения
Название: Слой.jpg
Просмотров: 35
Размер:	6.3 Кб
ID:	208826  
Вложения
Тип файла: dwg
DWG 2013
Интересен скрытый слой_071218.dwg (9.63 Мб, 30 просмотров)
LcH вне форума  
 
Непрочитано 07.12.2018, 14:43
#5
Oleg T


 
Регистрация: 27.12.2011
Сообщений: 1,250


Цитата:
Сообщение от LcH Посмотреть сообщение
Можно ли как-то преобразовать их в слои, скажем так, классического типа?
Открыл файл в ODA Drawings Explorer 19.8.0 и переименовал слой )).
(Сам удивился. ODA рулит!)
Миниатюры
Нажмите на изображение для увеличения
Название: Сохраненное изображение 2018-12-7_14-41-47.88.jpg
Просмотров: 43
Размер:	62.1 Кб
ID:	208834  
Вложения
Тип файла: dwg
DWG 2013
Интересен скрытый слой_071218.dwg (9.54 Мб, 10 просмотров)
Oleg T вне форума  
 
Непрочитано 07.12.2018, 14:55
#6
frostmourn


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


Цитата:
Сообщение от LcH Посмотреть сообщение
Кто-нибудь сталкивался с таким типом слоев? Можно ли как-то преобразовать их в слои, скажем так, классического типа?
Это скрытый слой (у которого IsHidden установлено в true). В акаде поменять, наверное, только как-то так: https://adndevblog.typepad.com/autoc...ous-layer.html
frostmourn вне форума  
 
Непрочитано 07.12.2018, 15:35
#7
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,434


LcH, Хорошая задачка, интересная, с удовольствием покопался.... Тут самое интересное это слой, остальное ерунда.

Собственно интересно, что под .NET из таблицы блоков не получается получить слой со '*' и соответственно его в списке не видно, но вот через handel этот объект вполне себе можно получить и изменить. Забавно, видимо в .NET обертке предусмотрена проверка и обработка "неправильных" символов, чего в чистых плюсах нет...
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 07.12.2018, 23:11
#8
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,367
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
Собственно интересно, что под .NET из таблицы блоков не получается получить слой со '*' и соответственно его в списке не видно
Не пробовал LayerTable.IncludingHidden установить в true?
Александр Ривилис вне форума  
 
Непрочитано 08.12.2018, 08:07
1 | #9
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,434


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Не пробовал LayerTable.IncludingHidden установить в true?
Нет не пробовал, я утилитами MGDDBG и ARXDBG смотрел и меня насторожило, что MGDDBG скрытые слои не показывает... теперь понятно почему.

Метод LayerTable.IncludingHidden только для чтения (get), попробовал вот так:
Код:
[Выделить все]
 using System;
using App = Autodesk.AutoCAD.ApplicationServices;
using Db = Autodesk.AutoCAD.DatabaseServices;
using Ed = Autodesk.AutoCAD.EditorInput;
using Rtm = Autodesk.AutoCAD.Runtime;

[assembly: Rtm.CommandClass(typeof(HiddenLayer.Commands))]
namespace HiddenLayer
{
    public class Commands
    {
        [Rtm.CommandMethod("HiddenLayerOn")]
        public void HiddenLayerOn()
        {
            App.Document acDoc = App.Application.DocumentManager.MdiActiveDocument;
            if (acDoc == null) return;
            Db.Database acDb = acDoc.Database;
            Ed.Editor acEd = acDoc.Editor;

            using (Db.LayerTable lTbl = acDb.LayerTableId.Open(Db.OpenMode.ForRead) as Db.LayerTable)
            {
                foreach (Db.ObjectId id in lTbl.IncludingHidden)
                {
                    using(Db.LayerTableRecord lTblRec = id.Open(Db.OpenMode.ForWrite) as Db.LayerTableRecord)
                    {
                        acEd.WriteMessage($"\n{lTblRec.Name}");
                        lTblRec.IsHidden = false;
                    }
                }
            }
        }
    }
}
Все стало работать как надо. Во вложении собранный вариант, должен работать на автокаде 2014 и выше.
Еще раз спасибо автору темы за интересную задачку.
Вложения
Тип файла: zip HiddenLayerOn.zip (2.3 Кб, 29 просмотров)
__________________
_бложиг

Последний раз редактировалось Boxa, 08.12.2018 в 10:06. Причина: Поправил название команды...
Boxa вне форума  
 
Непрочитано 08.12.2018, 09:57
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 9,346


HiddenLayerOff - название команды неудачное, имхо. Всетаки с Off ассоциация обычно выключенного состояния.

----- добавлено через ~1 ч. -----
я бы написал скорее ShowHiddenLayers - однозначное прочтение операции. Ну и на русском желательно продублировать команду Показать_скрытые_слои.
Сергей812 вне форума  
 
Автор темы   Непрочитано 11.12.2018, 11:39
#11
LcH


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


Добрый день!
Всем большое спасибо за информацию.
Boxa, frostmourn, Oleg T, спасибо.
Boxa, подключила ваш dll в свой файл адаптации, чтобы не потерять,
разные ситуации могут случиться, может ваша функция когда-нибудь выручит.
LcH вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Что можно сделать со слоями (и объектами на них), которые не отображаются в Диспетчере свойств слоев (*IDW_BlockReferenceLayer)

Система Техэксперт дает уверенность в правильности и эффективности принимаемых инженерных решений!
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти нужный слой (в диспетчере свойств слоев) выделенного на чертеже примитива? Gedezuk5 AutoCAD 11 07.08.2018 12:19
В диспетчере слоев не отображаются некоторые существующие слои Гиляна AutoCAD 2 03.10.2014 14:50
перестал меняться вес линии в диспетчере свойств слоев (неизменно остается "по умолчанию") ИриSkа AutoCAD 9 06.08.2011 16:58
Что можно сделать с подобными телами? Miniril AutoCAD 3 28.09.2010 16:58
Не правильно отображаются слои в диспетчере слоев Nati3672 AutoCAD 1 24.07.2009 08:11