首页 / 浏览问题 / 三维GIS / 问题详情
前端js webgl加载带有bim模型的场景 通过smid 着色 不成功
2EXP 2019年11月25日

问题描述:  我是revit导入生成的场景发布后  通过前端 js  已经知道的SMID号  给   图层着色     网上查了好多方法 技术中心也看了   还是不成功  用的就是官网实例bim模型的改的 无论是循环不循环的都不行  特咨询

//场景添加S3M图层服务

var promise = scene.open("http://60.30.92.78:8090/iserver/services/3D-shengyazhan2/rest/realspace");

Cesium.when(promise, function(layers) {

var s3mLayer = layers[0];

viewer.zoomTo(s3mLayer);

var layer = scene.layers.find('A100');

//读取子图层信息,通过数组的方式返回子图层的名称以及子图层所包含的对象的IDs

s3mLayer.setQueryParameter({

url: "http://60.30.92.78:8090/iserver/services/data-shengyazhan/rest/data",

dataSourceName: "A100",

isMerge: true

});

//根据smid给构件着色

var ids = [8, 11, 14, 17];

//var Colors = ['#152664', '#0d2680', '#002eb3', '#0041a2']

var colors = new Cesium.Color.fromCssColorString("rgba(23,92,239,0.5)");

layer.setObjsColor(ids,colors);

//根据smid给构件着色

//var ids = [8, 11, 14, 17];

//var Colors = ['#152664', '#0d2680', '#002eb3', '#0041a2']

// var ids = new Array("8", "11", "14", "17");

//for (var i = 0; i < ids.length; i++) {

// layer.setObjsColor([ids[i]], Cesium.Color.fromCssColorString(Colors[i]))

//}

// 初始化选中颜色

var color = new Cesium.Color.fromCssColorString("rgba(23,92,239,0.5)");

layer.selectedColor = color;

2 个回答

首先先通过var layer = scene.layers.find('A100');找到对应的图层,确认layer中是否有东西。然后在此基础上可以通过ID进行着色

layer.setObjsColor(ids, color)

其中ids为id的数组,color需要单独定义一个颜色
6,215EXP 2019年11月25日

你好,请问我图层里面有信息,我再使用

layer.setObjsColor([387], Cesium.Color.fromCssColorString("#eeaa00"))这个方法还是不行
不应该使用smid来着色,应该使用图元id,使用layer.getselection()这个方法可以找到点击的图元id
qzg
38EXP 2020年12月03日
...