OASISViewer.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. var OASISViewer = function (){
  2. var view = new SCOASIS.OASView();
  3. /**
  4. * 获取Viewer的dom对象。将Viewer加载到别的div对象里。
  5. * @returns 返回viewer的dom对象
  6. */
  7. this.GetDomElement=function(){
  8. return view.DivViewer;
  9. };
  10. /**
  11. * 添加事件监听。
  12. * @param event - 事件类型,该值为字符串类型。
  13. * "ModelSelectEvent"-选中对象触发事件。
  14. * "LoadModelEvent"-加载模型事件。
  15. * "ImageLabelClickEvent"-图像标签事件。
  16. * "TextLabelClickEvent"-文字标签事件。
  17. * "SphereSelectEven"-球体点击事件。
  18. * @param callback - 事件执行的回调。
  19. * 当监听"ModelSelectEvent"事件时,返回{type:"ModelSelectEvent",id:选中的模型id}。
  20. * 当监听"LoadModelEvent"事件时,返回{type:"LoadModelEvent",statusText:状态字符串}。
  21. * 当监听"ImageLabelClickEvent"事件时,返回{type:"ImageLabelClickEvent",id:图像标签关联的模型id}。
  22. * 当监听"TextLabelClickEvent"事件时,返回{type:"TextLabelClickEvent",id:文字标签关联的模型id}。
  23. * 当监听"SphereSelectEvent"事件时,返回{type:"SphereSelectEvent",id:选中球体的id}。
  24. */
  25. this.AddEventListener=function(event,callback){
  26. view.addEventListener(event,callback);
  27. };
  28. /**
  29. * 移除事件监听。
  30. * @param event - 事件类型,该值为字符串类型。
  31. * "ModelSelectEvent"-选中对象触发事件。
  32. * "LoadModelEvent"-加载模型事件。
  33. * "ImageLabelClickEvent"-图像标签事件。
  34. * @param callback - 事件执行的回调。
  35. */
  36. this.RemoveEventListener=function(event,callback){
  37. view.removeEventListener(event,callback);
  38. };
  39. /**
  40. * 更新Viewer大小。
  41. * @param width - 宽度。像素值。例如800。
  42. * @param height - 高度。像素值。例如600。
  43. */
  44. this.Resize=function(width,height){
  45. view.onsize(width,height);
  46. };
  47. /**
  48. * 清空viewer,调用此接口将清空viewer里所有元素,包括模型、标签等。
  49. */
  50. this.Reset=function(){
  51. view.reset();
  52. };
  53. /**
  54. * 添加模型。
  55. * @param jsonobject - 需要添加进当前场景的模型地址,地址存放在json对象的"files"字段。格式为{"files":["文件1的url地址","文件2的url地址",等]}。
  56. */
  57. this.AddModels=function(jsonobject){
  58. view.addModels(jsonobject);
  59. };
  60. /**
  61. * 移除模型。
  62. * @param jsonobject - 需要从当前场景中被移除的模型地址,地址存放在json对象的"files"字段。格式为{"files":["文件1的url地址","文件2的url地址",等]}。
  63. */
  64. this.RemoveModels=function(jsonobject){
  65. view.removeModels(jsonobject);
  66. };
  67. /**
  68. * 修改指定id的模型颜色。
  69. * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。
  70. * @param hexcolor - 模型的颜色。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。
  71. */
  72. this.EditColor=function(id,hexcolor){
  73. view.editColor(id,hexcolor);
  74. };
  75. /**
  76. * 恢复指定id的模型颜色。
  77. * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。
  78. */
  79. this.RestoreColor=function(id){
  80. view.restoreColor(id);
  81. };
  82. /**
  83. * 修改指定id的模型透明度。
  84. * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。
  85. * @param alpha - 模型的透明度。
  86. */
  87. this.EditAlpha=function(id,alpha){
  88. view.editAlpha(id,alpha);
  89. }
  90. /**
  91. * 恢复指定id的模型透明度。
  92. * @param id - 模型的id。可通过ModelSelectEvent事件返回。传入""对所有模型操作。
  93. */
  94. this.RestoreAlpha=function(id){
  95. view.restoreAlpha(id);
  96. };
  97. /**
  98. * 编辑指定id的模型可见性。
  99. * @param id - 模型的id。可通过ModelSelectEvent事件返回。
  100. * @param visible - 可见性,true显示,false隐藏。
  101. */
  102. this.EditVisibility=function(id,visible){
  103. view.editVisibility(id,visible);
  104. };
  105. /**
  106. * 设置对象是否隔离。
  107. * @param id - 模型的id。可通过ModelSelectEvent事件返回。
  108. * @param isolation - 是否隔离,true隔离,false取消隔离。
  109. */
  110. this.SetIsolation=function(id,isolation){
  111. view.setModelIsolation(id,isolation);
  112. }
  113. /**
  114. * 查询对象是否被隔离。
  115. * @param id - 模型的id。可通过ModelSelectEvent事件返回。
  116. */
  117. this.IsIsolation=function(id){
  118. return view.isIsolation(id);
  119. }
  120. /**
  121. * 给指定id的模型对象添加图像标签。
  122. * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。
  123. * @param url - 图像标签显示图片的url地址。
  124. * @param width - 指定宽度。
  125. * @param height - 指定高度。
  126. */
  127. this.AddImageLabel=function(id,url,width,height){
  128. view.addImageLabel(id,url,width,height);
  129. };
  130. /**
  131. * 移除指定id模型的图像标签。
  132. * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。
  133. */
  134. this.RemoveImageLabel=function(id){
  135. view.removeImageLabel(id);
  136. };
  137. /**
  138. * 移除所有图像标签。
  139. */
  140. this.RemoveAllImageLabel=function(){
  141. view.removeAllImageLabel();
  142. };
  143. /**
  144. * 给指定id模型对象添加文字标签。
  145. * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。
  146. * @param text - 文字标签的文本内容。
  147. * @param parameters - 文字标签的配置参数。改值为json对象,可设置的参数为。
  148. */
  149. this.AddTextLabel=function(id,text,parameters){
  150. view.addTextLabel(id,text,parameters);
  151. };
  152. /**
  153. * 修改指定id模型对象的文字标签。
  154. * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。
  155. * @param text - 文字标签的文本内容。
  156. * @param parameters - 文字标签的配置参数。改值为json对象,可设置的参数为。
  157. */
  158. this.EditTextLabel=function(id,text,parameters){
  159. view.editTextLabel(id,text,parameters);
  160. };
  161. /**
  162. * 移除指定id模型对象的文字标签。
  163. * @param id - 模型的id。可通过ModelSelectEvent事件返回。(支持传入创建的球体id,CreateSphereByCoordinate返回值)。
  164. */
  165. this.RemoveTextLabel=function(id){
  166. view.removeTextLabel(id);
  167. };
  168. /**
  169. * 移除所有文字标签。
  170. */
  171. this.RemoveAllTextLabel=function(){
  172. view.removeAllTextLabel();
  173. };
  174. /**
  175. * 设置视图。
  176. * @param type - 视图类型。SCOASIS.ViewType.Front表示前视图,SCOASIS.ViewType.Back表示后视图,SCOASIS.ViewType.Left表示左视图,SCOASIS.ViewType.Right表示右视图,SCOASIS.ViewType.Top表示顶视图,SCOASIS.ViewType.Bottom表示底视图。
  177. */
  178. this.SetView=function(type){
  179. view.lookTo(type);
  180. };
  181. /**
  182. * 开启剖切面。
  183. * @param type - 剖切面类型。CutPlaneType.XY表示XY平面剖切面,该剖切面垂直于Z轴。CutPlaneType.XZ表示XZ平面剖切面,该剖切面垂直于Y轴。CutPlaneType.YZ表示YZ平面剖切面,该剖切面垂直于X轴。
  184. * @param percent - 剖切面在整个场景中的百分比。取值0-100。0表示最小剖切,即模型刚开始剖切,100表示最大剖切,即模型剖切完毕。
  185. */
  186. this.SetCuttingPlane=function(type,percent){
  187. view.SetCuttingPlane(type,percent);
  188. }
  189. /**
  190. * 移除剖切面。
  191. * @param type-
  192. */
  193. this.RemoveCuttingPlane=function(type){
  194. view.removeCuttingPlane(type);
  195. }
  196. /**
  197. * 开始捕捉模型坐标操作。(进入捕捉状态,鼠标在无按键按下的状态下移动捕捉坐标,鼠标左键按下确认坐标,且坐标数据以json格式传入callback。)
  198. * @param callback - 确认坐标时调用的回调方法,该方法参数为json格式。例如{x:0,y:0,z:0}。
  199. */
  200. this.StartPickupCoordinate=function(callback){
  201. view.startSelectVertice(callback);
  202. }
  203. /**
  204. * 结束捕捉模型坐标。
  205. */
  206. this.EndPickupCoordinate=function(){
  207. view.endSelectVertice();
  208. }
  209. /**
  210. * 开始测量。
  211. * @param type 测量类型,1-坐标测量。2-距离测量。
  212. */
  213. this.StartMeasure=function(type){
  214. view.startMeasure(type);
  215. }
  216. /**
  217. * 结束测量。
  218. */
  219. this.EndMeasure=function(){
  220. view.endMeasure();
  221. }
  222. /**
  223. * 根据坐标创建求体。
  224. * @param coordinate - 创建求体的中心点。json格式的数据。例如{x:0,y:0,z:0}。
  225. * @param radius 求体的半径。如果该值小于了0.00001则按0.00001计算。
  226. * @param defcolor 创建时的颜色值。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。
  227. * @returns 返回被创建好的求体id。
  228. */
  229. this.CreateSphereByCoordinate=function(coordinate,radius,defcolor){
  230. return view.createSphere(coordinate,radius,defcolor);
  231. }
  232. /**
  233. * 移除球体。
  234. * @param jsonobject - 需要从当前场景中被移除的球体id,id存放在json对象的"ids"字段。格式为{"ids":["球体id1","球体id2",等]}。
  235. */
  236. this.RemoveSphere=function(jsonobject){
  237. return view.removeSphere(jsonobject);
  238. }
  239. /**
  240. * 根据id修改球体颜色。
  241. * @param id - 球体的id。可通过SphereSelectEvent事件返回。
  242. * @param hexcolor - 模型的颜色。以十六进制表示。例如红色则为0xff0000,白色为0xffffff。
  243. */
  244. this.EditSphereColor=function(id,hexcolor){
  245. view.editSphereColor(id,hexcolor);
  246. };
  247. /**
  248. * 修改背景颜色。
  249. * @param type -背景渐变类型,0-上下渐变,1-左右渐变。
  250. * @param color1 -颜色值1,类型为十六进制颜色的字符串,例如"#FF0000"表示红色。当type为0时,该值表示顶部颜色值。当type为1时,该值表示左边颜色值。
  251. * @param color2 -颜色值2,类型为十六进制颜色的字符串,例如"#FF0000"表示红色。当type为0时,该值表示底部颜色值。当type为1时,该值表示右边颜色值。
  252. */
  253. this.EditBackground=function(type,color1,color2){
  254. view.editBackground(type,color1,color2);
  255. }
  256. /**
  257. * 缩放视角到合适位置。当该方法不传参数的时候,剧中整个场景。当id为模型时,居中模型。
  258. * @param id - 对象的id。可传入模型id、球体id。也可不传参数,不传参数则缩放整个场景。
  259. * @param factor - 缩放的系数。
  260. */
  261. this.ZoomScene=function(id,factor){
  262. view.zoomScene(id,factor);
  263. }
  264. /**
  265. * 选中高亮模型。
  266. * @param id - 对象的id。可传入模型id、球体id。支持id的数组对象[]。
  267. * @param status - 状态,该值为数值,传1为追加,其余值为高亮当前。
  268. */
  269. this.SelectModel=function(id,status){
  270. view.highlightModel(id,status);
  271. }
  272. /**
  273. * 正常炸开模型。
  274. * @param explode - 控制是否炸开,true为开启炸开模型效果,false为恢复正常模型效果。
  275. * @param factor - 当explode为true时,控制炸开的距离系数。取值0-1之间。0为正常模式效果,1为最远炸开效果。
  276. */
  277. this.NormalExplodeModel=function(explode,factor){
  278. view.normalExplodeModel(explode,factor);
  279. }
  280. /**
  281. * 坐标轴可见性设置。
  282. * @param visible - true显示坐标轴,fasle隐藏坐标轴。
  283. */
  284. this.ShowAxis=function(visible){
  285. view.setAxisVisible(visible);
  286. }
  287. /**
  288. * 获取摄像机位置信息,返回字符串。
  289. * @returns 返回字符串,可使用该字符串作为SetCamera方法的参数用来恢复摄像机位置。
  290. */
  291. this.GetCamera=function(){
  292. return view.getCamera();
  293. }
  294. /**
  295. * 恢复摄像机位置信息。
  296. * @param values 摄像机信息字符串,通过GetCamera方法返回的值。
  297. */
  298. this.SetCamera=function(values){
  299. view.setCamera(values);
  300. }
  301. /**
  302. * 设置最小特性剔除
  303. * @param pixelValue 剔除值。
  304. */
  305. this.SetSmallFeatureCulling=function(pixelValue){
  306. view.setSmallFeatureCulling(pixelValue);
  307. }
  308. };