预览后缀名为dwg的文件

预览后缀名为dwg的文件

预览后缀名为dwg的文件,如: xxx.dwg,时 后端会把dwg文件转化为vsf流文件。然后前端可以借助visualizeJS进行预览,具体实现如下:

在Vue3中

1、在public中引入Visualize预览工具及其相关依赖

在这里插入图片描述

2、在index.html中引入

在这里插入图片描述

3、在.vue文件中使用

<template>
  <canvas id="dwg-canvas" style="width: 100%; height: 100%"></canvas>
</template>

<script lang="ts" setup>
import { watch } from 'vue';
// dwgUrl: vsf流文件路径
// 该路径可以是:本地文件路径,如:/public/xxx.vsf
// 也可以是:后端接口 http:xxxx/xxx.vsf
const props = defineProps({
  dwgUrl: {
    type: String,
    default: () => '',
  },
});
const previewDWG = (dwgUrl) => {
  // getVisualizeLibInst 全局方法,只要引入了VisualizeJS即可使用
  const lib = window.getVisualizeLibInst();
  const token = localStorage.getItem('TOKEN') as string;
  const headers = {
    Authorization: `Bearer ${JSON.parse(token).access_token}`,
  };
  lib.postRun.push(() => {
    const canvas = document.getElementById('dwg-canvas') as HTMLCanvasElement;
    canvas.height = canvas.clientHeight;
    canvas.width = canvas.clientWidth;
    lib.canvas = canvas;
    lib.Viewer.initRender(canvas.width, canvas.height, true);

    const viewer = lib.Viewer.create();
    function resize() {
      canvas.height = canvas.clientHeight;
      canvas.width = canvas.clientWidth;
      viewer.resize(0, canvas.width, canvas.height, 0);
      viewer.update();
    }
    resize();
    window.addEventListener('resize', resize);
    const plugin = new window.OdaViewerPlugin(lib);
    plugin.setActive(plugin.type.Pan);
    plugin.setAutoSelect(true);
    // headers : 后端vsf接口需要权限时,需要携带token
    fetch(dwgUrl, { headers })
      .then((responce) => responce.arrayBuffer())
      .then((arrayBuffer) => {
        viewer.clear();
        viewer.parseFile(new Uint8Array(arrayBuffer));
        viewer.zoomExtents();
      });
    function render() {
      viewer.update();
      requestAnimationFrame(render);
    }
    render();
  });
};

watch(
  () => props.dwgUrl,
  (dwgUrl) => {
    previewDWG(dwgUrl);
  },
  {
    immediate: true,
    deep: true,
  },
);
</script>
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原谅我很悲

不要打赏哦,加个好友一起学习呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值