@i3yun/viewergallery
Version:
BIM轻量化平台是一个互联网三维可视化解决方案。包括BIM轻量化引擎和业务组件。
145 lines (141 loc) • 4.81 kB
TypeScript
declare namespace Sippreep {
namespace Extensions {
namespace Markup {
/**
* 标记插件
* 标记有三部分,热点指示 + 偏移线 + 内容, 大概看起来是 o---口
* 标记内容框是一个div,所以标记数量不要建立过多,开发机测试200个标记会有明显卡顿,热点和偏移线倒是没什么性能问题
*/
export interface Markup3DExtension {
/**
* 开始设置,停止视图层的数据刷新
* 大量标记设置请一定先使用此方法,设置完成后使用endUpdate()
*/
beginUpdate(): void;
/**
* 设置完成,刷新视图
*/
endUpdate(): void;
/**
* 获取标记数据
*/
getItems(): IMarkup3DCollecton;
/**
* 导出JSON对象
*/
exportItems(): string;
/**
* 导入JSON对象
* @param data
*/
importItems(data: string): void;
/**
* 获取 热点、偏移线和依附的部件 的空间盒子
*/
getBox(item: IMarkup3D): THREE.Box3;
}
/**
* 标记数据
*/
export interface IMarkup3DCollecton {
/**
* 获取标记数量
*/
readonly count: number;
/**
* 获取指定索引的标记
* @param index
*/
get(index: number): IMarkup3D;
/**
* 获得所有标记
*/
toArray(): IMarkup3D[];
/**
* 添加一个标记
*/
add(): IMarkup3D;
/**
* 移除一个标记
* @param item 指定标记对象
*/
remove(item: IMarkup3D): boolean;
/**
* 移除所有标记
*/
clear(): void;
}
/**
* 标记类型
*/
export type AnchorType = Point | Polyline | Polygon;
/**
* 标记对象
*/
export interface IMarkup3D {
/**
* 依附模型(当模型隐藏或透明时,标记不可见)
*/
anchorDbid?: number;
/**
* 标记对象(点、线、面)
*/
anchor: AnchorType;
/**
* 标记对象的偏移量
*/
offset?: THREE.Vector3;
/**
* 标记对象投影到屏幕坐标时显示的内容
*/
content?: string | HTMLElement;
/**
* 内容相对于屏幕的偏移量
*/
contentOffset?: THREE.Vector2;
/**
* 一些外观设置
*/
appearance?: {
/**
* 标记颜色
*/
anchorColor?: THREE.Color,
/**
* 偏移线颜色
*/
offsetColor?: THREE.Color,
};
/**
* 自定义数据
*/
tag?: object;
}
/**
* 点,是一个三维的几何图形,可用于描述需要精确定位的对象。
*/
export class Point {
value: THREE.Vector3
}
/**
* 线,是一个有序路径的集合
*/
export class Polyline {
/**
* 有序点的集合(至少需要2个点)
*/
path: THREE.Vector3[];
}
/**
* 面,是环(Ring)的集合,环是一种封闭的路径。
*
*/
export class Polygon {
/**
* 有序点的集合(围绕第一个点组成的面,至少需要3个点)
*/
vertices: THREE.Vector3[];
}
}
}
}