Управление объектами аннотаций
Ниже мы рассмотрим команды, позволяющие добавлять и удалять объекты аннотаций из/в сцену.
Добавление объекта
Пример добавления объекта Comment (TypeScript):
view.runCommand({
name: "AddAnnotation",
objs: [
{
type: C3DViewObjectTypes.Comment, // "Comment"
uuid: '<UUID>',
targetUuid: '<targetUUID>',
points: {
target: {
x: 10,
y: 10,
z: 0,
},
shelf: {
x: 120,
y: 10,
z: 0,
},
},
options: {
text: 'Comment text',
},
}
]
})
Команда содержит параметр objs, представляющий собой массив добавляемых объектов. Для каждого типа объектов существует свой собственный способ представления. Все их можно найти здесь.
Команда возвращает объект, содержащий асинхронное свойство для получения списка UUID.
Добавление аннотации (TypeScript):
type AddAnnotationResult = {
name: api.ResultTypes.AnnotationUUID, // "AnnotationUUID"
result: Promise<string[]>
}
Эта команда может использоваться для обновления объектов, если используемый UUID уже принадлежит другому объекту.
Добавление нового объекта сферы с получением UUID, пример кода (TypeScript):
const command = view.runCommand({
name: "AddAnnotation",
objs: [
{
type: "Sphere",
center: {x: 10, y: 0, z: 0},
radius: 30,
options: {
fill: {r: 255, g: 0, b: 0},
},
}
]
})
if (command.name !== "AnnotationUUID")
console.error("Invalid command result: ", command.name)
command.result.then((uuids: string[]) => {
const uuid = uuids.pop()
console.log(`Added a sphere with UUID "${uuid}".`)
})
Добавлено в версии 1.6.0: uuid — необязательный параметр для объектов. При его отсутствии будет сгенерирован новый UUID.
Команда AddAnnotation асинхронно возвращает список UUID в том же порядке, что и полученные objs.
Удаление объекта
Пример удаления объекта аннотации (TypeScript):
view.runCommand({
name: "DeleteAnnotation",
objs: ['<UUID1>', '<UUID2>', '<UUID3>']
})
В приведенном примере команда удаляет объекты с UUID, переданными в параметре objs.
Важно
Выполнение команды без параметра objs (даже с пустым массивом) удалит все объекты аннотаций из сцены.