Изображение

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

Объект изображения

Объект

Обобщенный тип объекта изображения (TypeScript):

export type C3DViewImage = {
    type: C3DViewObjectTypes.Image
    uuid?: string
    position: C3DViewPoint
    rotation?: {
        aboutX?: number
        aboutY?: number
        aboutZ?: number
    }
    image: {
        src?: C3DViewResource
        origin?: {
            x: number
            y: number
        }
        size?: number
    }
    userData: C3DUserData
}

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

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

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

  1. position — точка объекта на сцене.

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

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

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

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

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

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

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

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

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

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

Пример

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

view.runCommand({
    name: "AddAnnotation",
    objs: [
        {
            type: "Image",
            position: { x: 0, y: 0, z: 0 },
            rotation: { aboutX: 1.57 }, // rotate ~90 degrees along X
            image: {
                src: {
                    id: '...',
                    load: id => {...}
                },
                origin: { x: 50, y: 50 } // center alignment
                size: 32 // px
            },
            userData: {
                customField: 'custom data'
            }
        }
    ]
})