当前位置: 首页 > news >正文

【Acadrust】Rust 语言的高性能 CAD 库

Acadrust是一个用Rust 语言编写的高性能 CAD 库,专注于读写DXFDWG格式的 CAD 文件。它通过利用 Rust 的内存安全、零成本抽象和并行计算等特性,实现了比同类 C# 库快 2-3 倍、内存占用低 30-50% 的性能表现。

🚀 核心特性

  • 全面的文件格式支持:支持 DXF(ASCII 和二进制)和 DWG 原生二进制格式,涵盖 AutoCAD R12 到 2018+ 的几乎所有主流版本
  • 丰富的图形实体:提供41 种图形实体类型,包括基础图形(线、圆、弧、椭圆)、复杂曲线(样条线、多段线)、标注(尺寸、引线、表格)以及三维实体(网格、面片、ACIS 实体)
  • 完整的表格系统:支持图层、线型、文字样式、标注样式等 9 种标准表格管理
  • ACIS 三维实体支持:可解析和写入 SAT(文本)和 SAB(二进制)格式的 ACIS 实体数据,并提供参数化构建器(立方体、圆柱、球体、圆环等)
  • 健壮的解析机制:提供错误容忍解析模式,可收集诊断信息而不会因单个错误中断解析
  • 可选的 Serde 支持:通过启用serde特性,可为所有类型实现Serialize/Deserialize,方便 JSON 等格式的序列化

📦 安装与快速入门

安装

Cargo.toml中添加依赖:

[dependencies] acadrust = "0.3.0"

如需 Serde 序列化支持:

acadrust = { version = "0.3.0", features = ["serde"] }

读取 DXF 文件

useacadrust::{DxfReader,CadDocument};fnmain()->Result<(),Box<dynstd::error::Error>>{// 读取 DXF 文件letdoc=DxfReader::from_file("input.dxf")?.read()?;println!("实体数量: {}",doc.entities().count());Ok(())}

读取 DWG 文件

useacadrust::{DwgReader,CadDocument};letmutreader=DwgReader::from_file("input.dwg")?;letdoc=reader.read()?;

创建并写入文件

useacadrust::{CadDocument,DxfWriter,entities::{Line,EntityType},types::Color};letmutdoc=CadDocument::new();// 创建红色线段letmutline=Line::from_coords(0.0,0.0,0.0,100.0,50.0,0.0);line.common.color=Color::RED;doc.add_entity(EntityType::Line(line))?;// 写入 DXFDxfWriter::new(&doc).write_to_file("output.dxf")?;

操作图层

useacadrust::{CadDocument,tables::Layer,types::Color};letmutdoc=CadDocument::new();// 创建新图层letmutlayer=Layer::new("MY_LAYER");layer.color=Color::from_index(1);// 红色doc.add_table_entry(layer)?;// 后续创建的实体可以指定该图层

📐 支持的版本矩阵

版本代码AutoCAD 版本DXF 支持DWG 支持
AC1009R12读写
AC1012R13读写读写
AC1014R14读写读写
AC10152000读写读写
AC10182004读写读写
AC10212007读写读写
AC10242010读写读写
AC10272013读写读写
AC10322018+读写读写

🏗️ 架构设计

Acadrust 采用基于 trait 的模块化设计:

  • CadDocument:中央文档容器,包含标题变量、表格、实体和对象
  • Entitytrait:所有图形实体的基础 trait
  • TableEntrytrait:所有表格项(图层、线型等)的基础 trait
  • 分层模块entitiestablesobjectsiotypes等模块各司其职

📊 性能优势

  • 解析速度:比 C# 实现快 2-3 倍
  • 内存占用:降低 30-50%,并支持零拷贝解析
  • 大文件处理:支持内存映射 I/O 和 Rayon 并行迭代

🔮 路线图

项目正在积极开发中,未来计划支持:

  • 完整的 DWG 二进制格式支持
  • 几何运算(偏移、修剪、延伸)
  • SVG/PDF 导出
  • 空间索引
  • LISP 表达式求值

📝 开源协议

Acadrust 采用MIT 许可证,可自由用于商业和开源项目。

http://www.jsqmd.com/news/545885/

相关文章:

  • 使用UI-TARS-desktop实现跨应用数据同步:ERP与CRM系统集成
  • Flowable 7.x 实战:手把手教你从数据库里捞出BPMN2.0 XML并优雅展示(Vue3 + Spring Boot)
  • 3 月小结
  • Win10下mitie安装失败:subprocess.CalledProcessError的深度排查与实战修复
  • 从数据采集到模型部署:用Lerobot+本地数据集训练一个会抓积木的机械臂(避坑指南)
  • 如何快速完成笔记迁移:Obsidian Importer 完整实战指南
  • 深度实战:数据库工程与SQL调优——从索引失效到千万级数据秒查
  • PTA 编程题(C语言)-- 解密兔子繁殖问题的迭代算法
  • OpenOCD入门到精通:第27章 综合实战:STM32 全流程开发
  • Tiktok Shop PHP SDK 深度解析:企业级电商集成架构设计与最佳实践
  • MobaXterm专业版功能解析与使用教程:提升开发效率的终端工具
  • Kite心跳机制深度剖析:如何保证微服务高可用性
  • M3U8live.cn:轻量无广告的 HLS 流媒体在线调试神器,开发者必备
  • HP-Socket开源项目媒体合作后续跟进:反馈与关系维护
  • 如何在Linux上为MacBook安装智能风扇控制工具MBPFan:解决过热问题的完整指南
  • 解决Windows PM2服务化难题:开发者与运维的离线部署实践指南
  • RPA-Python与pytest-openstackclient集成:10步实现OpenStack测试自动化完整指南
  • ArcGIS Desktop绘图工具条保姆级详解:从画个框到专业地图标注,手把手教你玩转图形元素
  • 为什么92%的FastAPI AI项目在v2.0升级后流式中断?揭秘官方未文档化的3个协程陷阱及架构图级修复方案
  • UEFI调试日志过滤工具开发:5步实现自定义过滤工具
  • 终极PoeCharm指南:三步打造你的流放之路完美角色
  • 猫抓:一站式浏览器资源嗅探与下载解决方案
  • 联想笔记本BIOS解锁工具安全配置指南:从问题诊断到高级应用
  • OpenOCD入门到精通:第26章 代码贡献与社区参与
  • 笔记本插手机卡收不到短信?一个开关就能解决
  • 聚焦核心赛道:高压直流网络直流断路器市场规模锁定58.87亿元,发展态势稳健
  • 数据结构(数组和链表)
  • OT网络安全2026:智能制造业现状报告中的六大数据驱动趋势
  • YOLOv8训练轮数优化指南:如何根据收敛情况智能调整epochs
  • 安卓手机一键投屏电脑?全机型通用教程,办公看剧都好用