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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 19-05-2016, 16:26:30

Название: Проверка. является ли элементы базы данных графическим
Отправлено: Алексей (IdeaSoft) от 19-05-2016, 16:26:30
Добрый день!
Открываю базу чертежа в части блока записей таблицы ModelSapce

Код - vb.net [Выбрать]
  1. dim bt as BlockTable = transact.GetObject(db.BlockTableID)
  2. dim Btr as BlockTableRecord = transact.GetObject(bt(BlockTableRecord.ModelSapce))
Далее в цикле делаю перебор по объектам.

Код - vb.net [Выбрать]
  1. For Each obj as ObjectID  In btr
  2. ...
  3. Next

Вопрос следующий
Нужно ли проверять объект таблицы ModelSpace на то, что он является именно графическим объектом или они в этой таблице все графические.
Если нужна такая проверка то как это сделать? Есть ли какая либо функция для проверки?

Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Александр Пекшев aka Modis от 19-05-2016, 16:30:11
или они в это таблице все графические
конечно нет
Нужно ли проверять объект таблицы ModelSpace на то что он является именно графическим объектов
Вы нас спрашиваете? ))) Это вам нужно решать - оно вам надо?
Если нужна такая проверка то как это сделать?
тут могу быть не прав: но все графические примитивы унаследованы от Entity, значит проверить можно
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Алексей (IdeaSoft) от 19-05-2016, 16:34:39
унаследованы от Entity
Ну т.е. получается что таблица ModelSpace содержит только объекты классов от класса Entity
Не может получится так,  в следствии кокой либо ошибки, что в эту таблицу попадет запись какого либо абстрактного объекта?
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Алексей (IdeaSoft) от 19-05-2016, 16:37:30
значит проверить можно
А ну тогда понятно. Я могу просто проверить является ли объект записи таблицы Entity и этого мне вполне хватит!
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Александр Ривилис от 19-05-2016, 16:38:44
Нужно ли проверять объект таблицы ModelSpace на то, что он является именно графическим объектом или они в этой таблице все графические.
В этой таблице могут содержаться только примитивы (объекты класса Entity) - они все по определению графические.
Чтобы проверить является ли DBObject графическим его следует привести к Entity и проверить на null (это самый простой способ).
Код - C# [Выбрать]
  1. DBObject obj = ...
  2. Entity ent = obj as Entity;
  3. if (obj != null) {
  4.  // это графический объект...
  5. }
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Александр Ривилис от 19-05-2016, 16:39:13
конечно нет
Конечно да.
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Привалов Дмитрий от 20-05-2016, 07:43:15
поправочка...
...
Entity ent = obj as Entity;
if (ent != null) {
....

Нужно ли проверять объект таблицы ModelSpace на то, что он является именно графическим объектом или они в этой таблице все графические.

Встречный вопрос, а что собственно планируешь сделать с графическими объектами? Ты можешь встретить Entity которые по разным причинам не видно на экране, потому и спрашиваю. Будут ли для тебя такие объекты являться графическими?
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Алексей (IdeaSoft) от 20-05-2016, 09:12:56
Entity которые по разным причинам не видно на экране
Вопрос видимости для меня не актуален, т.к. мне нужно прочитать
в объектах геометрические характеристики. Не важно виден объект или нет.
Даже если он не виден мне такой объект нужно будет обработать.
Название: Re: Проверка. является ли элемента базы данных графическим
Отправлено: Привалов Дмитрий от 20-05-2016, 13:24:56
мне нужно прочитать
в объектах геометрические характеристики
для считывания геометрии в любом случае придется приводить к соответствующим типам, т.е. проверка на Entity возможно и не нужна.