- 博客(5)
- 收藏
- 关注
原创 LibreCAD源码阅读:撤销和重做
在LibreCAD中,撤销和重做的功能的实现方式是通过设置实体的显示或隐藏来实现的。这种方式在二维CAD中尚且可以使用,在复杂一点的三维CAD中基本上不可用的。例如最常见的三维实体的布尔运算,实体A与实体B相加得到实体C,但是实体C减去实体A通常并不等于实体B。另外LibreCAD不支持非原子实体的修剪,比如不支持直线段与矩形的修剪功能。所以LibreCAD的功能也只是很基础的。
2024-04-22 01:06:58
1905
原创 LibreCAD源码阅读:实体捕捉与选择
特征类继承于捕捉类,表明在执行任意一个特征时,都可以使用捕捉和选择的功能。而创建特征类时,传入了当前工作文档中的实体容器给特征类对象了,然后进一步传递给捕捉类,所以捕捉类能够利用这些数据和当前鼠标点来判断是否有实体被选中了。
2024-04-09 21:48:27
682
原创 LibreCAD源码阅读:特征执行流程
按下界面的一个按钮,启用一个特征(功能),后续鼠标、键盘的操作都是在逐步确定特征的参数。界面交互采用MVC设计模式,鼠标在视图中的点击事件会先传递给事件处理类,由事件处理类分发给活动的特征。在特征内部,记录了特征当前执行到了哪一步。特征执行完成后,就会生成一个与该特征对应的实体对象,并添加到实体容器中,然后重绘视图,即可显示所绘制的特征。
2024-04-04 20:24:40
1601
原创 LibreCAD源码阅读:实体绘制流程
在LibreCAD中,绘图的画布是QWidget的派生类,绘图设备是QPainter的派生类,利用Qt提供的事件机制进行重绘事件通知。有一点需要吐槽一下,容器类继承于实体类RS_Entity,而直线类RS_Line、圆类RS_Circle等绘图实体类型也是继承于RS_Entity,然后可以包含若干RS_Entity对象。这种奇怪的设计不符合一般认知,造成了源码阅读困难,应予以修正。
2024-03-30 17:07:35
1211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人