Процесс заметок (красный карандаш)
Заметки позволяют пользователю сообщать различную информацию об обновлениях, изменениях или чем-то важном. Набор инструментов предлагает пользователям различные возможности для управления и отображения дополнительного уровня информации поверх визуальной 3D-сцены.
Ниже мы рассмотрим процесс создания заметок.
Тип EditMarkupProcess (TypeScript):
export type EditMarkupProcess = {
name: "EditMarkup",
editing?: {
uuid: string,
cameraRestoringDuration?: number
}
options: MarkupOptions
events: {
onExit?: (uuid: string) => void
onCameraProjectionChanged?: (prj: CameraProjection) => void
onCameraRestored?: (uuid: string) => void
}
}
Этот процесс позволяет пользователю построить (рисовать) любой 2D-примитив, указанный в списке.
Построенные (нарисованные) примитивы хранятся в объекте разметки, который существует до тех пор, пока пользователь не удалит его со сцены. При построении любой примитив рисуется как фантом, а не добавляется мгновенно к конечному объекту разметки. Это позволяет безопасно прерывать построение любого примитива, и он больше не будет существовать в сцене, поскольку процесс очищает фантомный объект. После каждого успешного построения примитива процесс очищает фантом и добавляет построенный примитив к объекту разметки.
Примитивы в объекте разметки всегда рисуются в плоскости, параллельной плоскости экрана. Для этого процесс отключает все процессы камеры (панорамирование, масштабирование и т. д.), поэтому пользователь не может каким-либо образом изменить ее параметры (например, положение), пока процесс активен. Это приводит к тому, что объект разметки сильно зависит от параметров камеры. Поэтому процесс сохраняет камеру в объекте разметки каждый раз, когда он (процесс) запускается в режиме создания* и использует их для восстановления камеры каждый раз, когда он запускается в режиме редактирования.
После остановки процесса все процессы камеры восстанавливаются и ответственность за дальнейшее отображение объекта разметки возлагается на пользователя.
Режимы
Процесс может работать в двух режимах: создание и редактирование. Режим создания определяет, что процесс создает новый объект заметки. Режим редактирования определяет, что процесс редактирует существующий объект заметки. Очевидно, что процесс в таком режиме может быть успешно запущен только в том случае, если в сцене существует указанный объект.
Свойство ‘Editing’
Свойство editing позволяет запустить процесс разметки в режиме редактирования. Рассмотрим варианты данного объекта.
uuid — обязательное поле, необходимое для поиска объекта разметки с указанным uuid и подготовки его к редактированию. Если объект с uuid не найден, процесс отображает сообщение об ошибке на консоли и прекращает работу.
cameraRestoringDuration — необязательное поле, необходимое для установки продолжительности анимации восстановления параметров камеры.
По умолчанию, т.е. если свойство editing не передано, процесс запускается в режиме создания.
Дополнительные опции
Тип параметров разметки (Typescript):
export type MarkupOptions = {
type?: MarkupType
pen?: {
color?: C3DViewRGB
width?: number
}
phantomPen?: {
color?: C3DViewRGB
width?: number
}
}
options позволяет настроить параметры процесса:
type указывает тип начального примитива, который будет построен;
pen позволяет настроить внешний вид конечных примитивов заметки объекта (цвет и ширину линий);
phantomPen позволяет настроить внешний вид фантомных примитивов объекта.
Рассмотрим варианты:
Имя |
Описание |
|---|---|
|
Список доступных примитивов. По умолчанию |
|
Цвет пера разметки. По умолчанию используется |
|
Ширина пера разметки. По умолчанию – |
|
Цвет фантомного пера. По умолчанию используется |
|
Ширина фантомного пера. По умолчанию – |
Тип заметки
export enum MarkupType {
LineSegment = 'lineSegment',
Polyline = 'polyline',
Rectangle = 'rect',
Ellipse = 'ellipse',
Circle = 'circle',
Eraser = 'eraser',
None = 'none'
}
События
Доступные события.
onExit(uuid) вызывается, когда пользователь останавливает процесс и возвращает uuid созданного объекта разметки.
onCameraProjectionChanged(prj) вызывается, если процесс меняет проекцию камеры при восстановлении ее параметров и возвращает «новую» проекцию камеры prj. Это событие вызывается только тогда, когда процесс запущен в режиме редактирования и восстановленная проекция действительно отличается от текущей.
onCameraRestored(uuid) вызывается сразу после того, как процесс восстанавливает параметры камеры. Это событие вызывается только тогда, когда процесс запускается в режиме редактирования.
Запуск процесса
Чтобы запустить процесс, вам следует вызвать команду RunProcessCommand с именем EditMarkup процесса:
Пример запуска процесса EditMarkup (TypeScript):
view.runCommand({
name: "RunProcessCommand",
process: {
name: "EditMarkup",
options: {
type: MarkupType.LineSegment
},
events: {}
}
})
или то же самое в режиме редактирования:
view.runCommand({
name: "RunProcessCommand",
process: {
name: "EditMarkup",
editing: {
uuid: "..."
},
options: {
type: MarkupType.LineSegment
},
events: {}
}
})
Обновление процесса
Обновление позволяет изменить опции, которые устанавливаются при запуске процесса.
Обобщенный тип команды обновления (TypeScript):
type UpdateProcess = {
name: "UpdateProcessCommand"
options: { name: "EditMarkup" } & MarkupOptions
}
Пример команды для обновления создаваемого примитива разметки (TypeScript):
view.runCommand({
name: "UpdateProcessCommand",
options: {
name: "EditMarkup",
type: MarkupType.LineSegment
}
})