V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
johnman
V2EX  ›  问与答

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

  •  
  •   johnman · Dec 17, 2020 · 2522 views
    This topic created in 1959 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
        1
    murmur  
       Dec 17, 2020
    autocad 好像不简单,专业性太强,简单了直接没法用了,你的需求是啥,咋突然想到这个东西
    johnman
        2
    johnman  
    OP
       Dec 17, 2020
    @murmur 并不想做成一个专业的 cad 软件,我的需求是
    最简单的可以根据一张背景层图片( 2d 俯视 layout 图,可以是图片,也可以是 autocad 格式的 dxf 图片),用户可以编辑层上面画一些墙、门、窗、地板(这些元素也是俯视即可)等建筑图形,保存成 json 后传回后端。

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

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