🫧 励志不掉头发的内向程序员:个人主页
🌅偶尔悲伤,偶尔被幸福所完善
👓️博主简介:
前言
本专栏我打算来讲讲一个工程项目它的运行逻辑,有很多小伙伴们在写代码的时候可能经常会有一些疑惑,我们的代码到底是怎么运行成一个软件的,我们学的各种数据结构,各种算法,在软件中到底是以什么样的形式呈现的,今天我便决定来讲解讲解一个开源的工程级软件”Librecad“,并通过这款软件来让大家学习和了解我们一个大型项目的流程以及一起来锻炼锻炼看大型项目的能力。
一、浅谈 LIbreCAD
LibreCAD 是一款免费、开源、跨平台的 2D CAD软件。
作为一款成熟的 2D CAD 软件,LibreCAD 提供了全面的绘图和编辑工具。 1、全面的绘图实体:支持绘制线条、多段线、样条曲线、圆、椭圆、圆弧等基本图形。同时,也支持文本标注、尺寸标注(线性、半径、直径、引线)、填充图案(Hatch)和块(Block)的创建与管理。 2、强大的编辑与修改工具:提供了移动、复制、镜像、缩放、偏移、修剪、倒角等丰富的图形编辑功能。 精确的绘图辅助:拥有强大的捕捉功能,可以精确捕捉端点、中点、圆心、交点等关键点。同时支持笛卡尔坐标系和极坐标系。 3、灵活的图层管理:支持图层的创建、可见性切换和打印控制,并且实体的属性(颜色、线宽、线型)可以由其所在图层决定。 4、高度可定制的界面:用户可以自定义工具栏和菜单,打造符合个人习惯的工作界面。此外,软件支持通过命令行输入指令,并提供了插件系统以扩展功能。 5、多语言支持:界面已本地化为超过30种语言,包括中文。
LibreCAD 基于 Qt 框架开发,因此能很好地运行在WIndow、Linux、macOS三大主流操作系统上,我这里主要是通过在WIndow上去讲解它的源码。
博主用的是Librecad2.2.0(可以点击这个链接下载)版本的,大家可以自己去安装然后去运行起来玩玩看看。我们之后也会讲解上面的功能,来让大家看看,我们日常的一些常见的功能,在我们的底层中是如何实现的。
二、浅谈结构
LibreCAD 的结构可以看作是一个基于 Qt 框架、高度模块化的 C++ 应用。它通过清晰的分层和模块划分,将复杂的 CAD 功能组织得井井有条,既便于开发维护,也利于功能扩展。
它的整体架构可以从以下几个层面来理解: 从仓库的根目录看,代码主要分为四个部分: 1、librecad/:核心,包含程序的主要源代码、界面和核心库。 2、plugins/:插件,存放官方或第三方插件,用于扩展软件功能。 3、libraries/:第三方库,存放项目依赖的外部库。 4、tools/:工具,包含开发和维护用的辅助工具。
我们主要会去了解核心的文件夹librecad,我们的CAD的核心功能都是在这个文件夹实现的。
这是主要的核心代码,它大概有20万行,但是大家不用担心,跟着博主来一起揭开它的神秘的面纱,到后面你就会发现,其实这个代码写的十分的优雅。它有着高内聚低耦合的模块化、经典的文档-视图分离,以及对开发者和社区极其友好的扩展性。我们之后就都会体会到的。
总结
本章节主要就是来了解了解我们的LibreCAD是什么的,等到后续章节我们便会开始一层一层的深入去了解LibreCAD的实现原理,大家也可以去试着把它安装下来去使用使用,然后思考各功能的实现方式哦。