Точка интереса (POI)

Этот объект PMI представляет собой своего рода «метку», обычно используемую для обозначения любого привлекающего внимание элемента сцены. POI всегда отображается в плоскости, параллельной плоскости экрана. Содержимое этого объекта — это просто изображение, помещенное в его плоскость. Ниже мы рассмотрим этот объект подробно.

Объект POI

Объект

Обобщенный тип объекта POI (TypeScript):

export type C3DViewPoi = {
    type: C3DViewObjectTypes.Poi
    uuid?: string
    image: {
        src?: C3DViewResource
        position: C3DViewPoint
        origin?: {
            x: number
            y: number
        }
        size?: number
    }
    userData: C3DUserData
}

Свойства type, uuid и userData описаны здесь. Кроме того, для этого объекта PMI:

  • type может быть C3DViewObjectTypes.Poi или строкой "Poi";

  • Объект userData можно получить позже, используя команду с типом GetParametersTypes.AnnotationList.

  1. image — набор опций, необходимых для указания внутреннего изображения:

    • src — исходные данные, используемые для загрузки изображения;

    • position — точка объекта на сцене;

    • origin — возможность выравнивания изображения;

    • размер – размер изображения в пикселях.

Точка position всегда лежит в плоскости, в которой отображается объект POI.

origin выравнивает изображение:

  • на плоскости относительно положения объекта;

  • по горизонтали и вертикали через два внутренних параметра - x и y. x и y измеряются в диапазоне от 0 до 100%. Значения 0% и 0% соответственно определяют выравнивание слева вверху, а 100% и 100% — справа внизу.

size устанавливает одинаковый размер для внутреннего изображения и самого объекта, поскольку объект не применяет никаких полей или полей к своему содержимому.

Пример

Пример команды добавления нового объекта POI (TypeScript):

view.runCommand({
    name: "AddAnnotation",
    objs: [
        {
            type: "Poi",
            image: {
                src: {
                    id: '...',
                    load: id => {...}
                },
                position: {...},
                origin: { x: 50, y: 50 } // center alignment
                size: 32 // px
            },
            userData: {
                customField: 'custom data'
            }
        }
    ]
})