Процесс редактирования сечения блоком

Ниже мы рассмотрим процесс, позволяющий создавать и редактировать сечение блоком.

Сечение блоком

Подробную информацию о самом секущем блоке можно найти здесь.

Функции

Тип EditSectionPlaneProcess (TypeScript):

export type EditSectionBoxProcess = {
    name: "EditSectionBox"
    id?: number
    options: EditSectionBoxOptions
    events: {
        onRun?: (params: C3DSectionOBB) => void
        onUpdate?: (params: C3DSectionOBB) => void
    }
}

В дополнение к options этот процесс имеет необязательное свойство id. Если указано, это позволяет редактировать поле раздела, уже добавленное с помощью команды.

Примечание

На данный момент в сцену можно добавить только один блок.

Примечание

Можно создать секущий блок, запустив процесс с пустым параметром id.

Интерактивная трансформация

Этот процесс также дает возможность интерактивно трансформировать размещение секущего блока с помощью так называемого контроллера (создается автоматически после запуска процесса). Это представляет собой своего рода объект Vision, который добавляется в сцену. Контроллер обеспечивает следующие виды трансформации:

  • линейное перемещение по осям X, Y и Z;

  • плоскостное движение по плоскостям XY, XZ и YZ;

  • вращение по осям X, Y и Z;

  • масштабирование (изменение размера) по осям X, Y и Z.

Внешний вид контроллера зависит от того, какой тип трансформации вам нужен:

  • линейное и плоскостное движение

Линейное и плоскостное движение

  • вращение

Вращение

  • масштабирование

Масштабирование

Параметры

Тип блока сечения (Typescript):

export type EditSectionBoxOptions = {
    box: C3DSectionAABB | C3DSectionOBB
    transform?: SectionBoxTransform
    colors?: {
        lines: C3DViewRGB
        rect: C3DViewRGB
        // 0.0 - 1.0
        transparent: number
    }
}

Имя

Описание

box

Размещение блока раздела (подробнее)

transform

Перечисляемый тип контроллера трансформации блока. По умолчанию используется SectionBoxTransform.Move.

colors.lines

Цвет контура плоскости RGB. По умолчанию используется {r: 255, g: 0, b: 0}.

colors.rect

Цвет заполнения плоскости RGB. По умолчанию используется {r: 255, g: 0: b: 0}.

colors.transparent

Прозрачность боковин секции. По умолчанию установлено значение 0.4.

Примечание

Все параметры можно изменить во время выполнения процесса с помощью команды обновления.

Обратные вызовы

Доступные события:

Запуск

Пример запуска процесса (TypeScript):

view.runCommand({
    name: "RunProcessCommand",
    process: {
        name: "EditSectionBox",
        id: 1,
        options: {
            box: {
                min: {
                    x: 0,
                    y: 0,
                    z: 0
                },
                max: {
                    x: 10,
                    y: 10,
                    z: 10
                }
            }
        },
        events: {}
    }
})

Обновление

Любые изменения в блоке сечения доступны только через команду обновления.

Обобщенный тип команды обновления (TypeScript):

type UpdateProcess = {
    name: "UpdateProcessCommand"
    options: {
        name: "EditSectionBox"
        box: C3DSectionAABB | C3DSectionOBB
        transform?: SectionBoxTransform
        colors?: {
            lines: C3DViewRGB
            rect: C3DViewRGB
            // 0.0 - 1.0
            transparent: number
        }
    }
}

Пример команды для обновления блока сечения (TypeScript):

view.runCommand({
    name: "UpdateProcessCommand",
    options: {
        name: "EditSectionBox",
        box: {
            min: {
                x: 0,
                y: 0,
                z: 0
            },
            max: {
                x: 10,
                y: 10,
                z: 10
            }
        }
    }
})