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

ADN Club => Civil 3D API => Тема начата: SergeyK от 16-01-2017, 16:05:10

Название: Узнать размерность FDO-класса (2D, 3D).
Отправлено: SergeyK от 16-01-2017, 16:05:10
Здравствуйте всем!
Прошу вашей помощи. Имеется экземпляр MgLayerBase. Из него необходимо узнать размерность Ораклового FDO-класса в Map3D - 2D или 3D. Наивно полагал, что можно ориентироваться на ZTolerance из MgSpatialContextReader. Но он возвращает то-же значение, что и XYTolerance. Можно ли как-то получить сведения из DIMINFO таблицы USER_GEOM_METADATA так, чтобы тупо запрос к ней не делать?

Всем большое спасибо.
Название: Re: Узнать размерность FDO-класса (2D, 3D).
Отправлено: Александр Ривилис от 16-01-2017, 16:44:03
А какое это отношение имеет к AutoCAD .NET API? Тему перенёс.
Название: Re: Узнать размерность FDO-класса (2D, 3D).
Отправлено: SergeyK от 16-01-2017, 21:07:47
Всем еще раз добра!

Немного о проблеме. В двух словах - проблема связана с правильным созданием FDO-объекта, который будет положен в оракл. При попытке положить 2D-геометрию в 3D-таблицу  (и наоборот) возникает ошибка несовместимость размерностей. Для того, чтобы правильно формировать геометрию, необходимо знать размерность таблицы-приемника данных.

Всем с уважением.
Название: Re: Узнать размерность FDO-класса (2D, 3D).
Отправлено: German от 17-01-2017, 10:28:31
Чисто теоретически, может надо копать в сторону схемы?
На приложенной картинке очень "русский" ))

(https://s27.postimg.org/i9lvsa27z/image.png) (https://postimg.org/image/i9lvsa27z/)
Название: Re: Узнать размерность FDO-класса (2D, 3D).
Отправлено: SergeyK от 17-01-2017, 11:27:01
Чисто теоретически, может надо копать в сторону схемы?
Вы совершенно правы. Надо смотреть в сторону метаданных геометрического поля.

Код - C# [Выбрать]
  1. private bool IsLayer3D(MgLayerBase mgLayer)
  2. {
  3.         MgGeometricPropertyDefinition mgGeomPropDef = mgLayer.GetClassDefinition().GetProperties().GetItem(
  4.                 mgLayer.GetClassDefinition().DefaultGeometryPropertyName) as MgGeometricPropertyDefinition;
  5.  
  6.         return mgGeomPropDef.HasElevation;
  7. }

Немного недоглядел. Спасибо за наводку!