基于PCB设计工具KiCad功能扩展的需求分析

weixin_43425078 2021-12-26 22:36:43

项目背景

PCB中文名称印制线路板,是电子工业的重要部件之一。是设计师根据电子原理图设计加工出来的板子。实现集成电路等各种电子元器件之间的布线和电气连接或电绝缘。PCB很重要,几乎所有与硬件相关的工程师、学生都要做PCB设计,没有PCB设计工具是不行的。KiCad便是一款开源的PCB设计工具。
KiCad是一种免费、开源的EDA设计工具,它能够创建电路原理图并进行PCB布局布线,它具有一个集成化的开发环境,在其之下KiCad包含了如下几款非常精致、相互独立的软件工具。

img

虽然KiCad中功能众多,但几个功能为独立 app,拥有独立的界面,并且目前此软件只能打开一个项目。本实践的目标就是对其进行二次开发,使其可同时打开多个项目,并将几个独立界面的功能集合到一个界面中。

竞品分析

AD(Altium Designer)

Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案——一个既满足当前,也满足未来开发需求的解决方案。

img

我们可以参考AD的项目展示方式和功能模型来进行设计。

需求分析

工程树修改需求实现分析

需求:
1.实现多个工程项目导入。
2.不同工程项目间文件可复制。效果如图所示。

img

实现思路:
1.在同一个进程中创建新项目时去掉 unload 旧项目的逻辑,进行相应问题修正,UI界面更新设计。
2.工程文件之间的复制粘贴,Kicad 复制时,使用的不是系统的粘贴板,导致无法在两个原理图之间复制内容。实现 1 的功能后保持工程项目均在同一个 workspace 中
应该可以实现复制,具体实现完 1 之后再做验证评估,进行具体调试。

界面整合需求实现分析

需求:
1.开发一个显示平台,集成几个功能:工程树,原理图,器件原理图库,版图,器件封装库。效果如图所示。

img

源码分析:
wxWidgets 程序封装了 main 函数和消息循环。通常情况下,整个程序通过继承 wxApp类并用全局宏 wxIMPLEMENT_APP,传入 wxApp 的派生类的类名实现对类的实例化并进入消息循环。
在进入消息循环之前,创建主窗口的工作通过在 wxApp 的派生类中重新实现wxApp 的虚函数 OnInit 来完成。
主窗口通常是 wxFrame 或 wxDialog 的派生类,其中的控件都作为主窗口类的成员变量,在主窗口类的构造函数中初始化。

实现思路:
1.以 Kicad.cpp 的 Frame 作为主页面,合并其他几个 APP 的 onInit.
2.新建一个或选一个 Frame 作为主页面,作为平台,兼容其他几个 app 的 onInit.
3.在选取的主 Frame 上增加对应的图标来调用各个可执行的独立进程 APP。

用例建模

img

主目录和显示平台作为用例与用户进行交互,
主目录下有3D查看器、PCB计算工具等功能,开发主界面将其整合到一个统一的界面中;
显示平台包含工程树,原理图,器件原理图库,版图和器件封装库,
其中工程树下可以打开多个项目,并且可以实现项目间的通信。

业务领域建模

1)找出实体,抽象出相关的类
将整个工程的实体抽象为以下几个类:用户、启动程序页面、主界面、项目、工具APP、图标显示、平台。

2)确定类与类之间的关系
其中,用户可以
1.启动软件,执行启动程序界面;
2.创建新项目,一个用户可以创建多个项目,并且多个项目可以存在于一个页面中;
3.使用KiCAD中的各种工具;
4.对主界面进行操作;
5.点击各工具的图标。
对于每一个项目来说,可以使用在一个页面中使用多个工具;
每个工具APP与工具图标一一对应;
主界面包含多个工具的图标,点击图标后便会调用相应工具的接口;

img

业务数据建模

最后,根据业务领域模型,我们可以得到项目的数据模型:

img

学号:553

...全文
470 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧