johnman
V2EX  ›  问与答

前端实现简单 2d autocad 的思路或者参考?

  •  
  •   johnman · Dec 17, 2020 · 3046 views
    This topic created in 2147 days ago, the information mentioned may be changed or developed.
    前端小白,想做一个简单的 web 2d 类似可以编辑的 autocad 的软件。支持看图或一些基本的画图操作。

    前期看了一些,在线的 autocad 看图软件,是在后端生成 PNG 图片发送到前端 canvas 显示,每次移动、放大、图层隐藏等都是后端生成新的 png 推送到浏览器。感觉这种方式用来显示应该没有问题,不适合用户自己画图或者编辑新的文件。
    我的问题

    [ 1 ] 应该选 canvas 吧? svg 虽然是矢量,dom 效率还是差一些?

    [ 2 ] 如果要画图,还是需要在前端有 dom 节点可以操作并且在前端渲染比较好?

    [ 3 ] 有没有比较好的项目可以参考?在网上搜索了有一个 le5le-topology 感觉不错,但是还是有一点差别,le5le 有点类似 visio

    谢谢各位
    15 replies  •  2023-11-19 17:22:24 +08:00
    murmur
    murmur
    Dec 17, 2020
    1
    autocad 好像不简单,专业性太强,简单了直接没法用了,你的需求是啥,咋突然想到这个东西
    johnman
    johnman
    OP
    Dec 17, 2020
    2
    @murmur 并不想做成一个专业的 cad 软件,我的需求是
    最简单的可以根据一张背景层图片( 2d 俯视 layout 图,可以是图片,也可以是 autocad 格式的 dxf 图片),用户可以编辑层上面画一些墙、门、窗、地板(这些元素也是俯视即可)等建筑图形,保存成 json 后传回后端。

    当然,如果可以做得智能一些,例如,如果可以处理 dxf 的层,可以把整个 dxf 的一个层都变成墙
    lower
    lower
    Dec 17, 2020
    3
    你需要的是 web-gl
    用 threejs 搞

    我这有一套现成的代码,不知道有没有兴趣
    johnman
    johnman
    OP
    Dec 17, 2020
    5
    @lower 有 demo 不
    johnman
    johnman
    OP
    Dec 17, 2020
    6
    @lower github 有个 dxf-parser 及配套的 three-dxf 就是用 threejs 显示 dxf,试了一下还是能够完整显示所有元素
    lower
    lower
    Dec 17, 2020
    7
    @johnman 之前有,现在好像关了;
    主要就是基于 threejs 搞的,2d/3d 视角的场景都行,,然后就是各种门窗元素就是往场景添加模型,设置模型的各种属性;
    导入导出涉及到解析 dwg 文件格式,这块好像比较复杂。如果有这方面的需求就麻烦了。
    代码是公司的,大概看过,里面写的很乱……想了一下估计对你也没参考价值。
    johnman
    johnman
    OP
    Dec 17, 2020
    8
    @lower dwg 打算用开源库在后台转换为 dxf 来绕开它,主要是不想搞那么复杂。
    lower
    lower
    Dec 17, 2020
    9
    @johnman 难搞的就是兼容它,我看那个项目里,解析 dwg 也是服务端搞的,但是在 cad 里画的,要遵守一套复杂严格的规则来创建 /命名层,才能正常识别解析到在线平台里,这一点感觉难搞。
    aec4d
    aec4d
    Dec 17, 2020 via iPhone
    10
    处理过类似的项目,用 dxf,dxf 规范比较简单。然后写代码在 dxf 和另外一种矢量格式互转就可以了
    horizon
    horizon
    Dec 17, 2020
    11
    horizon
    horizon
    Dec 17, 2020
    12
    johnman
    johnman
    OP
    Dec 18, 2020
    13
    @horizon 这个太合适了。但只能借鉴了。
    fractal3D
    fractal3D
    Nov 19, 2023
    14
    转成图片是不合适的,因为 cad 不仅仅是预览,还需要有一些数据结构的交互,所以通常会自定义一些数据结构。我们也开发了一个可以支持 dwg 等格式的开发引擎,可以借鉴:
    fractal3D
    fractal3D
    Nov 19, 2023
    15
    转成图片是不合适的,因为 cad 不仅仅是预览,还需要有一些数据结构的交互,所以通常会自定义一些数据结构。我们也开发了一个可以支持 dwg 等格式的开发引擎,可以借鉴:
    分形三维,https://fractal3d.everxyz.com/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5028 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 08:12 · PVG 16:12 · LAX 00:12 · JFK 03:12
    ♥ Do have faith in what you're doing.