整个过程分为如下几个步骤:
1、安装vue 脚手架2、创建项目3、引入 bimface 响应的文件4、修改 app.vue 文件,实现页面渲染这里还是使用 vue cli
通过如下命令,全局安装 vue 脚手架工具
npm install -g @vue/cli
安装好之后,可以通过安装 nrm ,来切换镜像源,也可以直接进行下一步
找一个合适的目录,打开 cmd 或者 powshell,键入如下命令,创建名为 bimface-demo 的项目
vue create bimface-demo
接下来,就是一系列选择了,通过截图的方式演示
通过上下箭头选择 manually lect features ,表示不适用默认配置,而是要自己配置 vue 项目,然后敲击回车
下面询问,是否将上面的选择保存为模板,下次创建 vue 项目时可以直接使用次模板,我们这里输入 n,然后回车,等待创建项目完成
首先运行一下项目,看看项目创建的是否成功
使用 vs cde(建议使用 vs code,而不是 webstorm 等) 打开刚刚创建的项目 bimface-demo
打开方式是,在 vs cde 的菜单栏,选择文件->打开文件夹,然后选择 bimface-demo 文件夹,然后点击 选择文件夹 即可
打开之后,在编辑器左侧“资源管理器”中,右键单击空白处,选择“在继承终端中打开”,或者使用快捷键 ctrl+`(就是 tab 键上面的那个键),也可以在编辑器中打开终端,这是一个类似于 cmd 的命令行工具,我们可以在这里键入一些命令,而不用专门开启 cmd 或者 powshell
在终端中键入如下命令,然后回车,启动服务
npm run rve
当出现如下界面,表示启动成功
上面都是一些准备工作,下面开始真正的编写代码
因为 广联达 没有提供 bimface 的相关包,如 bimfacesdkloader,所以无法通过 npm 的方式在 vue 项目中安装 bimfacesdkloader,所以只能通过传统方式引入了
在项目目录中,找到 public 目录中的 index.html,打开
将 demo 中引入的几个 css 和 js 文件,在这里引入,别忘了保存文件
首先在项目根目录下,找到 .eslintrc.js 文件,打开,将标红的文件注释,目的是取消 eslint 对代码的检查,减少很多麻烦
然后在项目根目录的 src 目录下找到 app.vue 文件,打开,在这个页面中编写代码,渲染 bimface 模型
将 demo 中的项目代码,复制到 vue 文件中的 template 模板中
<template> <div id="app"> <ction class="wrap"> <ction class="viewer-box"> <div class="viewer-2d" id="viewer2d"></div> <div class="viewer-3d" id="viewer3d"></div> </ction> </ction> </div></template>
将文件中 style 标签中的代码全部删除
将 demo 中的 js 代码,修改后拷贝到 script 标签中
加入 data 函数,存储组件中需要的数据
添加 mounted 方法,将如下代码加进来
注意在合适的位置添加 this 关键字,用以表示当前组件
mounted() { let options = new bimfacesdkloaderconfig(); options.viewtoken = this.viewtoken; bimfacesdkloader.load(options, this.successcallback, this.failurecallback); },在 小海螺methods 中添加两个自定义方法 successcallback 和 failurecallback
注意:方法开始的位置,声明 that 变量用于指代 this,因为在此函数中,某些情况下, this 不再指代当前 vue 组件
methods:{ successcallback(viewmetadata) { let that=this // 获取dom元素 let dom3d = document.getelementbyid生物制药毕业论文('viewer3d'); // 配置参数 let config = new glodon.bimface.application.webapplication3dconfig(); config.domelement = dom3d; config.enableviewhou = fal; //取消工具条 config.toolbars = []; // 创建viewer3d对象 let app = new glodon.bimface.application.webapplication3d(config); // 添加模型 app.addview(that.viewtoken); let viewer3d = app.getviewer(); //模型点击监听事件 app.addeventlistener(glodon.bimface.viewer.viewer3devent.mouclicked, function (objectdata) { componentid = objectdata.objectid; //根据模型构件id获取对应图纸的构件id that.viewerdrawing.todrawingid(that.componentid, getelementid); // 定义获取图纸对应图元id的回调函数 function getelementid(elementid) { if (elementid) { //如果当前图纸有对应的模型构件id,就缩放到对应位置 that.viewerdrawing.zoomtoobject(elementid); that.viewerdrawing.update(); } el { //如果当前图纸没有对应的模型构件id,需进一步判断是否有包含该构件的图纸 viewer3d.getdrawinglistbyid(that.fileid, that.componentid, getdrawing); function getdrawing(data) { if (data.length) { // 取第一张图纸进行二三维联动 let drawingid = data[0].viewinfo.id; that.viewerdrawing.destroy(); that.viewerdrawing.load(viewtoken, drawingid) } } } } } ) // 监听添加view完成的事件 app.addeventlistener(glodon.bimface.viewer.viewer3devent.viewadded, function () { // 渲染3d模型 app.render(); //自适应屏幕大小 window.onresize = function () { viewer3d.resize(document.documentelement.clientwidth, document.documentelement.clientheight - 40) } //隐藏右上角viewhou //viewer3d.hideviewhou(); let options2d = new bimfacesdkloaderconfig(); options2d.viewtoken = that.viewtoken; options2d.viewtype = bimfaceviewtypeoption.drawingview; bimfacesdkloader.load(options2d, successcallback2d, failurecallback2d); function successcallback2d(viewmetadata) { let dom2d = document.getelementbyid('viewer2d'); let config2d = new g出国英语lodon.bimface.viewer.viewerdrawingconfig(); config2d.domelement = dom2d; //添加图纸 that.viewerdrawing = new glodon.bimface.viewer.viewerdrawing(config2d); let drawingurl = viewmetadata.drawingurl; //如果是单模型的话,只需要传图纸id let _id = 582803; that.viewerdrawing.load(that.viewtoken, _id); //如果是集成模型的话,需要传图纸id和单模型的fileid // let _id =1287057; // let _fileid =1628186476905664; // viewerdrawing.load(viewtoken,_id,_fileid); // 监听图纸加载完成的事件 that.viewerdrawing.addeventlistener(glodon.bimface.viewer.viewerdrawingevent.loaded, zoomtoelement); function zoomtoelement() { if (that.componentid) { that.viewerdrawing.todrawingid(that.componentid, function (elementid) { //缩放到对应位置 that.viewerdrawing.zoomtoobject(elementid); that.viewerdrawing.update(); console.log(elementid); }) } el { console.log("!componentid"); } } that.viewerdrawing.addeventlistener(glodon.bimface.viewer.viewerdrawingevent.lectionchanged, function (objectdata) { if (objectdata.length > 0) { //根据图纸点击的构件id获取对应的模型构件id let componentid_2 = that.viewerdrawing.tomodelid(objectdata[0]); viewer3d.clearisolation(); //定位到该构件 viewer3d.tlectedcomponentsbyid([componentid_2]); //是否存在构件 let ixist = viewer3d.getviewer().getcomponentinfobyurid(componentid_2); if (ixist) { viewer3d.zoomtolectedcomponents(); } el { viewer3d.render(); } } }) } function failurecallback2d(error) { console.log(error); } }) }, failurecallback(error) { console.log(error); } }到此这篇关于vue 中使用 bimface详情的文章就介绍到这了,更多相关vue 中我不会说英语使用 bimface内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 21:21:04,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0fc9e4be9763874e8fb02df17e323621.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:vue 中使用 bimface详情.doc
本文 PDF 下载地址:vue 中使用 bimface详情.pdf
| 留言与评论(共有 0 条评论) |