web html页面显示autocad等dwg格式图形文件方法

基本有2种思路:

一种是转换后显示,比如vectordraw,将dwg转换成vds格式,再在web中显示,支持图层啊之类。还有CADViewer JS是转成SVG,pdf等格式,然后用web浏览……其实转换格式也是一个办法,用golang在后端,当有请求的时候,调用转换程序AutoXChange进行dwg到pdf的转换。如下列代码,缺点有3个,一个是万一后端转换不成功,等待很久,还要退出这个进程,另一个缺点是,autoxchange虽然支持字体路径,但是似乎不起作用,还是无法显示中文,最后一个当然是需要购买啦,否则有水印。

package main

import (
	"fmt"
	"os/exec"
	"time"
)

func main() {
	iname := "Office.dwg"
	oname := "office.svg"
	//	fontpath := "\\Fonts" "-FP", fontpath,
	arg := []string{"-i", iname, "-o", oname, "-DF", "arial", "-f", "svg", "-text", "-v=5"}
	//ax2017 -i office.dwg -o office.pdf -f pdf -text -v=5
	cmd := exec.Command("ax2019.exe", arg...)
	//记录开始时间
	start := time.Now()
	err := cmd.Start()
	if err != nil {
		//		fmt.Println(err)
		fmt.Printf("err: %v", err)
	}
	err = cmd.Wait() //Wait等待command退出,他必须和Start一起使用,如果命令能够顺利执行完并顺利退出则返回nil,否则的话便会返回error,其中Wait会是放掉所有与cmd命令相关的资源
	//	buf, err := cmd.Output() //运行命令并返回其标准输出
	if err != nil {
		fmt.Printf("err: %v", err)
	}
	//记录结束时间差
	elapsed := time.Since(start)
	fmt.Printf("elapsed: %s\n", elapsed)
}

另一个思路是用控件显示,比如DWGViewX,autovue,mxdraw,autovue没试验出来。dwgviewx只支持IE浏览器,有**版,去除了水印,但是客户端用ie访问的时候,需要下载activity控件,并安装一下,它只支持中文的宋体啊,黑体啊,之类,不支持那些单线字体。

mxdraw,autovue,dwgviewx控件的clsid有个共同的特点,见下图:在运行regedit注册表中搜ctrl.1,f3键搜下一个。

web html页面显示autocad等dwg格式图形文件方法_第1张图片

dwgviewx的效果

web html页面显示autocad等dwg格式图形文件方法_第2张图片

不支持单线中文字体

web html页面显示autocad等dwg格式图形文件方法_第3张图片

	
		



DWGViewX Demo-DWG Viewer ActiveX Control






Zoom In | Zoom Out | Zoom All                             
| Zoom Window| Pan| Show/Hide Toolbar                             

 | Show/Hide LayoutBar                            

 |Print                           

 |Background                           

If the control can't display correctly, please download and install the control first.

Download DWGViewX

Help for Developers...

mxdraw:很好地支持中文单线字体,虽然代码里有支持chrome的写法,但是chrome还是打不开。有水印,对于浏览图纸不影响。推荐使用。

web html页面显示autocad等dwg格式图形文件方法_第4张图片






  
  
  
  
  MxDraw控件
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  





你可能感兴趣的:(水利项目管理,水利信息化,项目管理,工程管理,工程师知识管理系统)