Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Luca от 03-11-2019, 16:07:38

Название: Как получить дескриптор слоя по имени?
Отправлено: Luca от 03-11-2019, 16:07:38
Уважаемы форумчане, как получить дескриптор слоя по имени?
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 16:08:52
Уважаемы форумчане, как получить дескриптор слоя по имени?
В AutoCAD нет понятия "дескриптор слоя". Что ты имеешь в виду? ObjectId?
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Luca от 03-11-2019, 16:13:42
В AutoCAD нет понятия "дескриптор слоя". Что ты имеешь в виду?
нужно перебрать все блоки и задать отношение порядка, а для этого, как я себе это представляю, мне сначала необходимо получить ссылку на слой, зная его имя, а потом уже используя свойство слоя(пока не знаю какое) получить коллекцию блоков для дальнейшей обработки.
или я не правильно себе это представляю и в иерархии слой не является контейнером для блоков?
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 16:15:51
или я не правильно себе это представляю и в иерархии слой не является контейнером для блоков?
Всё абсолютно неправильно. Слой - это свойство примитивов AutoCAD, а не контейнер для объектов.
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 16:17:09
нужно перебрать все блоки
Что ты понимаешь под блоками? Есть описание блока (BlockTableRecord) и есть вставка блока (BlockReference). Определись с терминологией.
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Luca от 03-11-2019, 16:18:39
Что ты понимаешь под блоками?
в автокаде есть "Создать блок" - именно это и понимаю
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 16:20:33
Что ты понимаешь под блоками?
в автокаде есть "Создать блок" - именно это и понимаю
Создать блок - это действие. При создании блока создаётся и BlockTableRecord и один BlockReference (хотя потом можно вставить этих BlockReference сколько угодно)
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Luca от 03-11-2019, 16:20:41
надо другую тему создать, а эту в утил
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 16:22:25
надо другую тему создать, а эту в утил
Не вижу смысла. Тема очень поучительная. Надеюсь, что она тебе поможет разобраться с иерархией классов в AutoCAD .NET API и поможет четче формулировать вопросы.
Итак контейнером для "блоков" (вставок блоков - BlockReference), да и любых других примитивов (наследников Entity) является блок (описание блока BlockTableRecord). В частности это может быть блок с именем "*ModelSpace" или "*PaperSpace", т.е. Пространство модели или Пространство листа.
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Luca от 03-11-2019, 16:44:28
Не вижу смысла. Тема очень поучительная. Надеюсь, что она тебе поможет разобраться с иерархией классов в AutoCAD .NET API и поможет четче формулировать вопросы.
Посмотрел доки и что-то такое наваялось.
BlockTableRecord BTR;
BlockTableRecordEnumerator BTRE = BTR.GetEnumerator();
тип блока (какой?)    Block;
тип блока(какой?)[]  filteredBlocksArray;
While ( Block = BTRE.MoveNext() ){
  Block.name == 'desiredName' ? filteredBlocksArray.push(Block) : break;
}
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 17:07:23
Посмотрел доки и что-то такое наваялось.
Пока полный бред. Надеюсь на продвижение в правильном направлении.
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Александр Ривилис от 03-11-2019, 17:10:12
Начни с этих статей:
https://adn-cis.org/kak-najti-vse-vstavki-dinamicheskogo-bloka.html
https://adn-cis.org/vyibor-vstavok-blokov-s-ispolzovaniem-filtra.html

P.S.: Кстати, тема ушла очень далеко от названия. Про слой и "дескриптор слоя" мы уже забыли.
Название: Re: Как получить дескриптор слоя по имени?
Отправлено: Luca от 04-11-2019, 05:19:39
P.S.: Кстати, тема ушла очень далеко от названия. Про слой и "дескриптор слоя" мы уже забыли.
я предлагал создать новую тему именно по этой причине.
давайте я создам новую тему, тк назавание этой совсем не отражает содержание и задачи, которые необходимо решить