博文

复杂管网CAD文件 转 JSON 实战记录

图片
引言 随着智慧城市和智慧管网项目的日益普及,将传统的 CAD 图纸数据转换为 Web 前端友好的 JSON 格式,已成为我们经常面临的挑战。这个过程不仅涉及数据格式的转换,更重要的是对原始 CAD 数据进行高效、精准的清洗。本文将详细记录我如何将某区域的 CAD 管网图纸清洗并转换为 Web 前端友好的 JSON 数据,希望能为遇到类似问题的你提供一份实用的操作指南。 项目背景与资料概况 本次项目资料为某区域的管网 CAD 图纸,其中包含了地形地貌、地下建筑等多种不相关的图层。 CAD 数据面临的挑战 在处理这份 CAD 图纸时,我们遇到了以下几个主要问题: 文件体积庞大 :原始 CAD 文件非常大,对计算机性能(尤其是内存)要求较高,处理起来效率低下。 图层繁多复杂 :图纸中包含大量与管网无关的图层,需要进行精细化筛选和清洗。 冗余信息干扰 :需要处理的管网图层(如雨水、污水管网)中,包含大量流向箭头等多余线段,这些信息在转换为 JSON 后会增加数据量并干扰前端展示。 数据清洗与转换步骤 1. CAD 数据初步处理 首先,我们利用 CAD 的“选择相似”功能筛选出所需图层内容(例如雨水管网、污水管网),并将其复制到一个新的 CAD 文件中,确保坐标系不变。这一步旨在剥离不相关的图层,减少文件大小。 2. 清洗冗余流向箭头 在数据清洗过程中,我遇到了一个棘手的问题:管网上的流向箭头与管线本身在样式(线型、宽度)上几乎一致,难以区分。经过仔细观察,我发现所有箭头的尺寸是相同的。因此,我编写了一个 LISP 脚本来自动删除特定长度范围内的多段线,从而高效地去除了上万个不必要的流向箭头,极大地简化了数据。 ( defun  c :DelPLInRange  (  /  ss ent len target-ents min-len max-len cmdecho regenmode)    ;; 定义长度范围   ( setq  min-len  1.118 )   ( setq  max-len  1.19 )  ...