var OASISViewer = function (){ var view = new SCOASIS.OASView(); /** * 获取Viewer的dom对象。将Viewer加载到别的div对象里。 * @returns 返回viewer的dom对象 */ this.GetDomElement=function(){ return view.DivViewer; }; /** * 添加事件监听。 * @param event - 事件类型,该值为字符串类型。 * "ModelSelectEvent"-选中对象触发事件。 * "LoadModelEvent"-加载模型事件。 * "ImageLabelClickEvent"-图像标签事件。 * "TextLabelClickEvent"-文字标签事件。 * "SphereSelectEven"-球体点击事件。 * @param callback - 事件执行的回调。 * 当监听"ModelSelectEvent"事件时,返回{type:"ModelSelectEvent",id:选中的模型id}。 * 当监听"LoadModelEvent"事件时,返回{type:"LoadModelEvent",statusText:状态字符串}。 * 当监听"ImageLabelClickEvent"事件时,返回{type:"ImageLabelClickEvent",id:图像标签关联的模型id}。 * 当监听"TextLabelClickEvent"事件时,返回{type:"TextLabelClickEvent",id:文字标签关联的模型id}。 * 当监听"SphereSelectEvent"事件时,返回{type:"SphereSelectEvent",id:选中球体的id}。 */ this.AddEventListener=function(event,callback){ view.addEventListener(event,callback); }; /** * 移除事件监听。 * @param event - 事件类型,该值为字符串类型。 * "ModelSelectEvent"-选中对象触发事件。 * "LoadModelEvent"-加载模型事件。 * "ImageLabelClickEvent"-图像标签事件。 * @param callback - 事件执行的回调。 */ this.RemoveEventListener=function(event,callback){ view.removeEventListener(event,callback); }; /** * 更新Viewer大小。 * @param width - 宽度。像素值。例如800。 * @param height - 高度。像素值。例如600。 */ this.Resize=function(width,height){ view.onsize(width,height); }; /** * 清空viewer,调用此接口将清空viewer里所有元素,包括模型、标签等。 */ this.Reset=function(){ view.reset(); }; /** * 添加模型。 * @param jsonobject - 需要添加进当前场景的模型地址,地址存放在json对象的"files"字段。格式为{"files":["文件1的url地址","文件2的url地址",等]}。 */ this.AddModels=function(jsonobject){ view.addModels(jsonobject); }; /** * 移除模型。 * @param jsonobject - 需要从当前场景中被移除的模型地址,地址存放在json对象的"files"字段。格式为{"files":["文件1的url地址","文件2的url地址",等]}。 */ this.RemoveModels=function(jsonobject){ view.removeModels(jsonobject); }; /** * 修改指定id的模型颜色。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。 * @param hexcolor - 模型的颜色。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。 */ this.EditColor=function(id,hexcolor){ view.editColor(id,hexcolor); }; /** * 恢复指定id的模型颜色。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。 */ this.RestoreColor=function(id){ view.restoreColor(id); }; /** * 修改指定id的模型透明度。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。 * @param alpha - 模型的透明度。 */ this.EditAlpha=function(id,alpha){ view.editAlpha(id,alpha); } /** * 恢复指定id的模型透明度。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。 */ this.RestoreAlpha=function(id){ view.restoreAlpha(id); }; /** * 编辑指定id的模型可见性。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。 * @param visible - 可见性,true显示,false隐藏。 */ this.EditVisibility=function(id,visible){ view.editVisibility(id,visible); }; /** * 设置对象是否隔离。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。 * @param isolation - 是否隔离,true隔离,false取消隔离。 */ this.SetIsolation=function(id,isolation){ view.setModelIsolation(id,isolation); } /** * 查询对象是否被隔离。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。 */ this.IsIsolation=function(id){ return view.isIsolation(id); } /** * 给指定id的模型对象添加图像标签。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。 * @param url - 图像标签显示图片的url地址。 * @param width - 指定宽度。 * @param height - 指定高度。 */ this.AddImageLabel=function(id,url,width,height){ view.addImageLabel(id,url,width,height); }; /** * 移除指定id模型的图像标签。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。 */ this.RemoveImageLabel=function(id){ view.removeImageLabel(id); }; /** * 移除所有图像标签。 */ this.RemoveAllImageLabel=function(){ view.removeAllImageLabel(); }; /** * 给指定id模型对象添加文字标签。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。 * @param text - 文字标签的文本内容。 * @param parameters - 文字标签的配置参数。改值为json对象,可设置的参数为。 */ this.AddTextLabel=function(id,text,parameters){ view.addTextLabel(id,text,parameters); }; /** * 修改指定id模型对象的文字标签。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。 * @param text - 文字标签的文本内容。 * @param parameters - 文字标签的配置参数。改值为json对象,可设置的参数为。 */ this.EditTextLabel=function(id,text,parameters){ view.editTextLabel(id,text,parameters); }; /** * 移除指定id模型对象的文字标签。 * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。 */ this.RemoveTextLabel=function(id){ view.removeTextLabel(id); }; /** * 移除所有文字标签。 */ this.RemoveAllTextLabel=function(){ view.removeAllTextLabel(); }; /** * 设置视图。 * @param type - 视图类型。SCOASIS.ViewType.Front表示前视图,SCOASIS.ViewType.Back表示后视图,SCOASIS.ViewType.Left表示左视图,SCOASIS.ViewType.Right表示右视图,SCOASIS.ViewType.Top表示顶视图,SCOASIS.ViewType.Bottom表示底视图。 */ this.SetView=function(type){ view.lookTo(type); }; /** * 开启剖切面。 * @param type - 剖切面类型。CutPlaneType.XY表示XY平面剖切面,该剖切面垂直于Z轴。CutPlaneType.XZ表示XZ平面剖切面,该剖切面垂直于Y轴。CutPlaneType.YZ表示YZ平面剖切面,该剖切面垂直于X轴。 * @param percent - 剖切面在整个场景中的百分比。取值0-100。0表示最小剖切,即模型刚开始剖切,100表示最大剖切,即模型剖切完毕。 */ this.SetCuttingPlane=function(type,percent){ view.SetCuttingPlane(type,percent); } /** * 移除剖切面。 * @param type- */ this.RemoveCuttingPlane=function(type){ view.removeCuttingPlane(type); } /** * 开始捕捉模型坐标操作。(进入捕捉状态,鼠标在无按键按下的状态下移动捕捉坐标,鼠标左键按下确认坐标,且坐标数据以json格式传入callback。) * @param callback - 确认坐标时调用的回调方法,该方法参数为json格式。例如{x:0,y:0,z:0}。 */ this.StartPickupCoordinate=function(callback){ view.startSelectVertice(callback); } /** * 结束捕捉模型坐标。 */ this.EndPickupCoordinate=function(){ view.endSelectVertice(); } /** * 开始测量。 * @param type 测量类型,1-坐标测量。2-距离测量。 */ this.StartMeasure=function(type){ view.startMeasure(type); } /** * 结束测量。 */ this.EndMeasure=function(){ view.endMeasure(); } /** * 根据坐标创建求体。 * @param coordinate - 创建求体的中心点。json格式的数据。例如{x:0,y:0,z:0}。 * @param radius 求体的半径。如果该值小于了0.00001则按0.00001计算。 * @param defcolor 创建时的颜色值。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。 * @returns 返回被创建好的求体id。 */ this.CreateSphereByCoordinate=function(coordinate,radius,defcolor){ return view.createSphere(coordinate,radius,defcolor); } /** * 移除球体。 * @param jsonobject - 需要从当前场景中被移除的球体id,id存放在json对象的"ids"字段。格式为{"ids":["球体id1","球体id2",等]}。 */ this.RemoveSphere=function(jsonobject){ return view.removeSphere(jsonobject); } /** * 根据id修改球体颜色。 * @param id - 球体的id。可通过SphereSelectEvent事件返回。 * @param hexcolor - 模型的颜色。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。 */ this.EditSphereColor=function(id,hexcolor){ view.editSphereColor(id,hexcolor); }; /** * 修改背景颜色。 * @param type -背景渐变类型,0-上下渐变,1-左右渐变。 * @param color1 -颜色值1,类型为十六进制颜色的字符串,例如"#FF0000"表示红色。当type为0时,该值表示顶部颜色值。当type为1时,该值表示左边颜色值。 * @param color2 -颜色值2,类型为十六进制颜色的字符串,例如"#FF0000"表示红色。当type为0时,该值表示底部颜色值。当type为1时,该值表示右边颜色值。 */ this.EditBackground=function(type,color1,color2){ view.editBackground(type,color1,color2); } /** * 缩放视角到合适位置。当该方法不传参数的时候,剧中整个场景。当id为模型时,居中模型。 * @param id - 对象的id。可传入模型id、球体id。也可不传参数,不传参数则缩放整个场景。 * @param factor - 缩放的系数。 */ this.ZoomScene=function(id,factor){ view.zoomScene(id,factor); } /** * 选中高亮模型。 * @param id - 对象的id。可传入模型id、球体id。支持id的数组对象[]。 * @param status - 状态,该值为数值,传1为追加,其余值为高亮当前。 */ this.SelectModel=function(id,status){ view.highlightModel(id,status); } /** * 正常炸开模型。 * @param explode - 控制是否炸开,true为开启炸开模型效果,false为恢复正常模型效果。 * @param factor - 当explode为true时,控制炸开的距离系数。取值0-1之间。0为正常模式效果,1为最远炸开效果。 */ this.NormalExplodeModel=function(explode,factor){ view.normalExplodeModel(explode,factor); } /** * 坐标轴可见性设置。 * @param visible - true显示坐标轴,fasle隐藏坐标轴。 */ this.ShowAxis=function(visible){ view.setAxisVisible(visible); } /** * 获取摄像机位置信息,返回字符串。 * @returns 返回字符串,可使用该字符串作为SetCamera方法的参数用来恢复摄像机位置。 */ this.GetCamera=function(){ return view.getCamera(); } /** * 恢复摄像机位置信息。 * @param values 摄像机信息字符串,通过GetCamera方法返回的值。 */ this.SetCamera=function(values){ view.setCamera(values); } /** * 设置最小特性剔除 * @param pixelValue 剔除值。 */ this.SetSmallFeatureCulling=function(pixelValue){ view.setSmallFeatureCulling(pixelValue); } };