模型操作
# 模型加载
把模型渲染到场景中实现查看
警告
不管使用哪种方式把模型加载进入场景,同一个模型文件仅支持一种方式加载,超出一次会导致场景崩溃。
# 加载流程图
提示
- 矩形为
BIM API
操作 - 菱形为
Web
操作
# 单模型加载
参数说明
- ModelName: 模型名称
- DuplicateName: 副本名称(可选参数)。如果该属性值为空,自动换算模型名称;否则使用参数值,若重名也会自动换算 V2.7+
let jsonData = {
"ModelName":"ModelName",
"DuplicateName": "Name"
}
cloudRender.SuperAPI("BIM51API_LoadSingleModel", jsonData)
# 指定位置加载
参数说明
- ModelName: 模型名称
- ModelLocation: 模型坐标点,X、Y、Z轴坐标点
- UseGis: 是否使用GIS坐标, 详细说明见 使用须知#常见参数
- DuplicateName: 副本名称(可选参数)。如果该属性值为空,自动换算模型名称;否则使用参数值,若重名也会自动换算 V2.7+
let jsonData = {
"ModelName": "ModelName",
"ModelLocation": "100,-100,100",
"UseGis": "0",
"DuplicateName": "Name"
}
cloudRender.SuperAPI("BIM51API_LoadSingleModelWithTrans", jsonData)
注意
- 有些模型本身就存在极大的内坐标偏差,暂时无法控制和影响其正确性
- 指定位置加载暂不支持批量操作
# 批量加载
let jsonData = {
"ModelNames":[ "ModelName1", "ModelName2" ]
}
cloudRender.SuperAPI("BIM51API_LoadMultiModels", jsonData)
# 拖拽加载
从模型文件列表中拖拽模型到指定位置
提示
- 矩形为
BIM API
接口 - 圆形为
浏览器
标准事件
# 开始监听鼠标位置
cloudRender.SuperAPI("BIM51API_OpenMouseEvent")
# 获取鼠标位置信息
cloudRender.SuperAPI("BIM51API_GetMouseLocation")
# 回调监听
{
"command": "event",
"func_name": "BIM51API_GetMouseLocation",
"args": {
"Coord": {
"bHit": "1",
"GisCoord": "X,Y,Z"
}
}
}
提示
- bHit 是否有值,
1
表示有值 - GisCoord 文件拖放的GIS坐标信息,分别为 经度、纬度、高度
# 结束监听鼠标位置
cloudRender.SuperAPI("BIM51API_CloseMouseEvent")
# 加载上次模型
用来自动加载上次关闭/退出页面时没有卸载的模型
cloudRender.SuperAPI("BIM51API_LoadBeforeModel")
# 获取加载进度
cloudRender.SuperAPI("BIM51API_GetModelLoadPercent")
# 回调监听
// 进度值为0-1.0
{
"command": "event",
"func_name": "GetModelLoadPercent",
"args": {
"GetModelLoadPercent": "1.0"
}
}
提示
需要监听OnMeshLoadComplete
回调事件判断是否加载结束
# 加载回调
参数说明
bRoot: 加载的类型
- 1: 表示BIM模型加载
- 0: 表示BIM构件加载
# 开始加载
{
command: "event",
func_name: "OnMeshLoadStart",
args: {
LoadInfo: {
"FileName": "模型名称",
"bRoot": "1 or 0"
}
}
}
# 加载完成
{
command: "event",
func_name: "OnMeshLoadComplete",
args: {
LoadInfo: {
"FileName": "模型名称",
"bRoot": "1 or 0"
}
}
}
# 文件加载偏移自适应
# 开启
通常用于模型加载后偏移巨大的情况,可以尝试使用,在不考虑相对位置的情况下。但依然不能保证正确显示,且原点为程序计算的位置,无法指定原点。
cloudRender.SuperAPI("BIM51API_OpenZeroOffset")
注意
- 需要在加载
FBX
文件到场景之前调用一次即可 - 需要及时关闭,否则之后加载的所有模型都会自动处理偏移
# 关闭
cloudRender.SuperAPI("BIM51API_CloseZeroOffset")
# 模型卸载
# 单模型卸载
let jsonData = {
"ModelName":"ModelName"
}
cloudRender.SuperAPI("BIM51API_UnloadSingleModel", jsonData)
# 批量卸载
let jsonData = {
"ModelNames":[ "ModelName1", "ModelName2" ]
}
cloudRender.SuperAPI("BIM51API_UnloadMultiModels", jsonData)
# 模型激活/取消激活
# 激活
let jsonData = {
"ModelName":"ModelName"
}
cloudRender.SuperAPI("BIM51API_ActiveModel", jsonData)
# 回调监听
{
"command": "event",
"func_name": "OnMeshActived",
"args": {
"OnMeshActived":"ModelName"
}
}
# 取消激活
cloudRender.SuperAPI("BIM51API_DeactiveModel")
# 获取激活模型
cloudRender.SuperAPI("BIM51API_GetActivedModel")
# 回调监听
{
"command": "event",
"func_name": "GetActivedModel",
"args": {
"GetActivedModel": "ModelName"
}
}
# 模型聚焦
切换场景视角到模型所在位置
let jsonData = {
"ModelName": "ModelName"
}
cloudRender.SuperAPI("BIM51API_FocusModel", jsonData)
注意
模型必须已经加载到场景中
# 模型显隐
控制模型整体显隐
参数说明
- ModelName:模型名称
- IsVisible:
- 0: 隐藏模型
- 1: 显示模型
let jsonData = {
"ModelName": "ModelName",
"IsVisible": "1 or 0"
}
cloudRender.SuperAPI("BIM51API_SetModelVisibility", jsonData)
注意
模型可以不激活但是必须加载
# 模型删除 更新
把模型从场景底板中物理删除,删除后无法通过模型获取找到
# 单模型删除
let jsonData = {
"ModelName": "ModelName"
}
cloudRender.SuperAPI("BIM51API_DeleteSingleModel", jsonData)
注意
- 模型名称必须有值,不可传
null
或者undefined
- 母本和副本作用效果有所不同:
- 母本:卸载该母本、删除磁盘源文件、清除保存文件,移除所有副本信息
- 副本:卸载该副本,清除保存文件
# 批量删除
let jsonData = {
"ModelNames": ["Name1", "Name2"]
}
cloudRender.SuperAPI("BIM51API_DeleteMultiModels", jsonData)
注意
- 模型名称必须有值,不可传
null
或者undefined
- 母本和副本作用效果有所不同:
- 母本:卸载该母本、删除磁盘源文件、清除保存文件,移除所有副本信息
- 副本:卸载该副本,清除保存文件
# 模型坐标
获取模型变化参数
let jsonData = {
"ModelName": "ModelName"
}
cloudRender.SuperAPI("BIM51API_GetModelTransform", jsonData)
# 回调监听
{
"command": "event",
"func_name": "GetModelTransform",
"args": {
"Transform": {
"GisCoord": "Lon,Lat,Height",
"Location": "X,Y,Z",
"Rotaion": "Roll,Pitch,Yaw",
"Scale": "1,1,1"
}
}
}
返回参数说明
- GisCoord: 模型GIS坐标
- Location:模型UE坐标
- Rotaion:模型旋转角
- Scale:模型缩放比例
注意
模型可以不激活但是必须加载
上次更新: 2023/08/24, 17:11:34