// 创建实例需要传入的参数,部署环境serviceConfig 和 用户有效期getAccessToken
const applicationOptions = {
getAccessToken: this.getAccessToken,
refreshAccessToken: this.getAccessToken,
serviceConfig: { // 引擎内部的请求路径通过origin + apiContextPath拼接,同样会被代理到远程引擎服务的地址
origin: `${window.location.protocol}//${window.location.host}`, // host
apiContextPath: '/zt/obv/bimserver/viewing/v3' // path
}
}
// 返回token
getAccessToken(callBack) {
callBack(this.obvToken, 36000)
}
// 点云模型文件标识,文件轻量化完成后生成
let urn1 = 'urn:bimbox.file:1CdIsX5fxM0/1Dl798ReiB1?version=1';
let urn2 = 'urn:bimbox.file:1CdIsX5fxM0/1Dl798ReiB2?version=1';
let urnList = [];
urnList.push(urn1);
urnList.push(urn2);
// 实例化 Builder,用于模型加载
builder = new OBV.Api.ObvBuilder();
// 创建 Application 对象
const application = await builder.buildApplication(applicationOptions);
// 创建 viewer 容器, 创建API
obvApi = await builder.buildViewer3d(application, document.getElementById('viewer-one-div'));
window.obvApi = obvApi;
//分别创建每个模型的document 管理视图
urnMap = new Map();
for(let i = 0; i < urnList.length; i++) {
// 创建 document 管理视图,加载完成后可以调用接口
const document = await builder.loadDocument(application, urnList[i], 'las-lod');
urnMap.set(urnList[i], document);
}
options = {
applicationId: application.id
}
//加载指定的点云模型
await obvApi.createPntsTileset(urnMap.get(urn1), options);
await obvApi.createPntsTileset(urnMap.get(urn2), options);
// 加载BIM模型,实现合模
let urn = 'urn:bimbox.file:1CdIsX5fxM0/1DweTTm30Tu?version=1';
const bimDocument = await builder.loadDocument(applicationOptions, urn, 'rvt-lod');
const viewer3dItems = bimDocument.get3dGeometryItems();
builder.load3dModels(obvApi, {
obvDocument: bimDocument,
viewer3dItem: viewer3dItems[0],
});