1. ModelExpansion
1.1. 初始化 new ModelExpansion(options)
BIM模型构件展开类,支持按构件或楼层展开、以及按指定条件的楼层或者房间展开(必须设置模型相关BOS后台接口参数)
Throws :
DeveloperError
options.model未定义或类型不匹配,无法进行任何展开操作.
DeveloperError
options.modelSite未定义,无法进行任何展开操作.
DeveloperError
options.modelDatabaseKey未定义,无法进行任何展开操作.
DeveloperError
options.geoModelKey未定义,无法进行任何展开操作.
Param | Type | Default | Description |
---|---|---|---|
options | Object |
||
options.model | Cesium3DTileset |
将要展开的模型对象 |
|
options.modelSite | String |
模型数据服务域名或IP地址,形如'https://bos3d-alpha.bimwinner.com' |
|
options.modelDatabaseKey | String |
模型数据BOS-Foundation链接的数据库key |
|
options.geoModelKey | String |
以'G-'开头的模型key值 |
|
[options.token] | Object |
BosConfig.defaultToken |
BOS后端接口操作的通关令牌,默认为空,当GeoMap中的token属性有赋值时为geoMap.token |
Example
var layerManager = geoMap.layerManager;
// 添加模型组
var modelLayer = layerManager.createLayer(
BOSGeo.LayerType.MODEL,
'model123',
{
customGroupId: 'model1'
}
);
// 添加BIM模型
var site = 'https://bos3d-alpha.bimwinner.com';
var databaseKey = 'hed8e9803a8c4eb9845160e4d9c42155';
var geoModelKey = 'G1635328717330';
var model = modelLayer.add({
name: 'BIM-test',
url: site + '/api/' + databaseKey + '/geomodels/' + geoModelKey + '/data/tileset.json',
// 'https://bos3d-alpha.bimwinner.com/api/hed8e9803a8c4eb9845160e4d9c42155/geomodels/G1635328717330/data/tileset.json',
featureType: BOSGeo.FeatureType.BIM,
position: [113.107767, 23.02872, 25.78],
});
var modelExpansion = new BOSGeo.ModelExpansion({
model: model,
modelSite: site,
modelDatabaseKey: databaseKey,
geoModelKey,
});
1.2. 属性
属性名 | Type | Default | Description |
---|---|---|---|
supportExpansion | Boolean |
undefined |
是否支持模型所有构件的爆炸展开(undefined表示还在调用接口验证中, false表示已验证不支持,需要检查对应参数是否正确) |
supportFloorExpansion | Boolean |
undefined |
是否支持楼层的展开(undefined表示还在调用接口验证中, false表示已验证不支持,需要检查对应参数是否正确) |
supportRoomExpansion | Boolean |
undefined |
是否支持房间的展开(undefined表示还在调用接口验证中, false表示已验证不支持,需要检查对应参数是否正确) |
1.3. 方法
1.3.1. modelExpansion.expandAllComponents(scalar)
展开所有构件
Throws :
DeveloperError
scalar类型判断.
Param | Type | Description |
---|---|---|
scalar | Number |
展开系数,每个构件离模型中心点的距离乘以该系数为最终的展开距离 |
Example
modelExpansion.expandAllComponents(3);
1.3.2. modelExpansion.expandAllFloors([scalar], [floorSpacing], [direction])
按楼层展开
Throws :
DeveloperError
scalar类型判断.
DeveloperError
floorSpacing类型判断.
DeveloperError
direction必须是BOSGeo.Cartesian4类型.
Param | Type | Default | Description |
---|---|---|---|
[scalar] | Number |
2 |
展开尺寸,最小值为1(不展开) |
[floorSpacing] | Number |
2.8 |
楼层间距,最小值为0(不展开) |
[direction] | Cartesian4 |
BOSGeo.Cartesian4.UNIT_Z |
展开方向,每个构件当前位置ENU坐标系下的方向(即正东、正北、正上方分别为XYZ轴正方向) |
Example
const scalar = 10;
const direction = BOSGeo.Cartesian4.UNIT_X;
const floorSpacing = 10;
modelExpansion.expandAllFloors(scalar, floorSpacing, direction);
1.3.3. modelExpansion.expandFloorByKey(componentKey, translation)
通过构件key展开其所属楼层
Throws :
DeveloperError
componentKey未定义.
DeveloperError
translation必须是BOSGeo.Cartesian4类型.
Param | Type | Description |
---|---|---|
componentKey | String |
构件key |
translation | Cartesian4 |
当前构件所属楼层的平移量(前三个值表示方向,第四个值表示平移距离) |
Example
var translation = new Cartesian4(1, 0, 0, 40);
var componentKey = 'M1635158791394_111931';
modelExpansion.expandFloorByKey(componentKey, translation);
1.3.4. modelExpansion.expandTargetFloors(translationOptions, [isFloorName], [defaultTranslation])
展开指定名称或索引的楼层
Throws :
DeveloperError
translationOptions平移键值对参数不合法.
DeveloperError
defaultTranslation必须是BOSGeo.Cartesian4类型.
Param | Type | Default | Description |
---|---|---|---|
translationOptions | Array.<(Array.<String>|Array.<Number>), Cartesian4> |
要素属性keyValues与对应平移的键值对,[[keyValues1, translation1], [keyValues2, translation2]], 注意translation中前三个值仅表示方向,第四个值表示平移量 |
|
[isFloorName] | Boolean |
true |
楼层平移配置key是否是楼层名称,false 则translationOptions中key用的是楼层名称的索引 |
[defaultTranslation] | Cartesian4 |
BOSGeo.Cartesian4.UNIT_X |
条件以外的要素平移量,第四个分量为0表示不平移 |
Example
var direction = new Cartesian4(1, 0, 0, 40);
// 按楼层序号
modelExpansion.expandTargetFloors([[[0, 2], direction]], false);
// 按楼层名称,注意第二个参数
modelExpansion.expandTargetFloors([[['Roof'], direction]], true);
1.3.5. modelExpansion.expandTargetRooms(translationOptions, [key], [defaultTranslation])
展开指定key属性的房间
Throws :
DeveloperError
translationOptions平移键值对参数不合法.
DeveloperError
defaultTranslation必须是BOSGeo.Cartesian4类型.
Param | Type | Default | Description |
---|---|---|---|
translationOptions | Array.<Array.<String>, Cartesian4> |
要素属性keyValues与对应平移的键值对,[[keyValues1, translation1], [keyValues2, translation2]], 注意translation中前三个值仅表示方向,第四个值表示平移量 |
|
[key] | String |
'key' |
房间列表接口返回的属性名称key,主要是name和key |
[defaultTranslation] | Cartesian4 |
BOSGeo.Cartesian4.UNIT_X |
条件以外的要素平移量,第四个分量为0表示不平移 |
Example
var direction = new Cartesian4(1, 0, 0, 40);
// 按房间key
modelExpansion.expandTargetRooms([[['M1635158791394_177313', 'M1635158791394_215101'], direction]]);
// 按房间名称
modelExpansion.expandTargetRooms([[['Office 127'], direction]]);
1.3.6. modelExpansion.reset()
还原模型展开前的初始状态
1.3.7. modelExpansion.destroy()
销毁