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

虽然KiCad中功能众多,但几个功能为独立 app,拥有独立的界面,并且目前此软件只能打开一个项目。本实践的目标就是对其进行二次开发,使其可同时打开多个项目,并将几个独立界面的功能集合到一个界面中。
Altium Designer 提供了唯一一款统一的应用方案,其综合电子产品一体化开发所需的所有必须技术和功能。Altium Designer 在单一设计环境中集成板级和FPGA系统设计、基于FPGA和分立处理器的嵌入式软件开发以及PCB版图设计、编辑和制造。并集成了现代设计数据管理功能,使得Altium Designer成为电子产品开发的完整解决方案——一个既满足当前,也满足未来开发需求的解决方案。

我们可以参考AD的项目展示方式和功能模型来进行设计。
需求:
1.实现多个工程项目导入。
2.不同工程项目间文件可复制。效果如图所示。

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

源码分析:
wxWidgets 程序封装了 main 函数和消息循环。通常情况下,整个程序通过继承 wxApp类并用全局宏 wxIMPLEMENT_APP,传入 wxApp 的派生类的类名实现对类的实例化并进入消息循环。
在进入消息循环之前,创建主窗口的工作通过在 wxApp 的派生类中重新实现wxApp 的虚函数 OnInit 来完成。
主窗口通常是 wxFrame 或 wxDialog 的派生类,其中的控件都作为主窗口类的成员变量,在主窗口类的构造函数中初始化。
实现思路:
1.以 Kicad.cpp 的 Frame 作为主页面,合并其他几个 APP 的 onInit.
2.新建一个或选一个 Frame 作为主页面,作为平台,兼容其他几个 app 的 onInit.
3.在选取的主 Frame 上增加对应的图标来调用各个可执行的独立进程 APP。

主目录和显示平台作为用例与用户进行交互,
主目录下有3D查看器、PCB计算工具等功能,开发主界面将其整合到一个统一的界面中;
显示平台包含工程树,原理图,器件原理图库,版图和器件封装库,
其中工程树下可以打开多个项目,并且可以实现项目间的通信。
1)找出实体,抽象出相关的类
将整个工程的实体抽象为以下几个类:用户、启动程序页面、主界面、项目、工具APP、图标显示、平台。
2)确定类与类之间的关系
其中,用户可以
1.启动软件,执行启动程序界面;
2.创建新项目,一个用户可以创建多个项目,并且多个项目可以存在于一个页面中;
3.使用KiCAD中的各种工具;
4.对主界面进行操作;
5.点击各工具的图标。
对于每一个项目来说,可以使用在一个页面中使用多个工具;
每个工具APP与工具图标一一对应;
主界面包含多个工具的图标,点击图标后便会调用相应工具的接口;

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

学号:553