- 博客(41)
- 收藏
- 关注
原创 编写一款2D CAD/CAM软件(二十一)生产ASCII ART Logo
发挥你的想象力、艺术创造力,在各种位图编辑软件中生产软件Logo的位图,例如位图名称为logo.png.然后打开ascii.txt文件,查看根据位图生成的ASCII ART Logo.利用QCommandLineParser来显示ASCII ART Logo.1) 安装jp2a工具:sudo apt install jp2a。
2024-07-20 16:45:44
881
原创 编写一款2D CAD/CAM软件(二十)转存
为了方便debug调试,那么应该封装一个打印字符串的接口函数。通过一个接口函数将文件转存为一个测试参考的文件。以部分类的转存为例。
2024-06-11 11:45:01
159
原创 LLVM IR 生成 -emit-llvm
emit-llvm 生成IR文件,默认结果为bitcode结果(.bc);-S 生成汇编格式文件。输入:test.cc。输出:test.ll。
2024-05-30 09:33:57
359
原创 GDB断点执行的次数
需求背景:条件断点可能执行多次,但是可能在最后一次执行引发了后续的问题,但是断点位置并非问题现场,如何使得断点在最后一次停下来?
2024-05-11 13:36:37
680
原创 编写一款2D CAD/CAM软件(十八)框选图形
实现第一种操作相对比较简单:为每个图像计算一个边框Frame,然后计算这个Frame是否完全在选择框内。实现第二种操作则相对麻烦。如果你认为只要计算出Frame与选择框是否相交就可以,那么你想得过于简单了。比如一个圆,它的Frame和选择框相交并不等同于圆本身与选择框相交。因此第二种方法需要补充更多关于不同几何图形是否相交的API,这一部分我们将会在后续的文章中陆续补充上。本文先关注如何实现第一种操作。
2024-04-26 21:30:29
352
原创 std::map/unordered_map count & find perf
对于std::map/unordered_map而言,因key值仅能出现一次,故其count函数的实现一般会调用find函数,其perf没有大的差别。对于std::map/unordered_map而言,std::cout只有0或1的返回值。如果仅需要知道std::map/unordered_map中是否含某key值,那么使用count即可。std::cout, 遍历容器,对某个元素出现的次数进行计数,返回次数。std::find, 遍历容器,如果找到第一个就返回其迭代器。
2024-04-22 15:36:42
335
原创 编写一款2D CAD/CAM软件(十五)封装交互操作类
至此,我们仍然还不能使用鼠标与软件进行交互来进行基本图元的绘制,因为我们还没有对绘制的操作类进行封装,在下一篇文章中我们将实现基本的交互操作。
2024-04-20 10:04:34
852
原创 编写一款2D CAD/CAM软件(十四)绘制工具栏
前面的文章已经封装了数个最基本的图元,但是视图的呈现是基于测试数据形成的。为了尽快完善软件交互的框架和能力,本文将增加工具栏。
2024-04-17 20:39:56
565
原创 编写一款2D CAD/CAM软件(十二)绘制圆
QPainter中有多个绘制椭圆的接口,长轴半径与短轴半径相等的椭圆即正圆。注意设置QPainter的画刷QBrush为空,否则绘制的将是填充的圆。注意这里的长度变换,从几何图形坐标系转为视图坐标系的半径长度。测试数据中增加了圆形。
2024-04-16 20:24:10
304
原创 编写一款2D CAD/CAM软件(十一)文档
软件在编辑、访问、使用数据时,数据在内存里;当用户离线,数据在文档里,在硬盘里;文档构成了数据的集合,完整地、独立地表示一个设计。因此,本文封装了一个文档类JDocument用于数据的管理,同时增加了一个单独地文档模块库j-document来实现。
2024-04-14 19:08:22
415
1
原创 编写一款2D CAD/CAM软件(九)视图缩放
用户通过视图缩放能够查看几何图形的精细结构、局部细节或者查看全局构成。视图缩放最友好和最方便的操作方式一般是通过鼠标滚轮的转动来实现的。
2024-04-13 20:30:47
906
原创 编写一款2D CAD/CAM软件(七)GUI
GUI是用户与应用交互的桥梁。如果应用的需求简单,那么GUI的实现可以选择一些单窗口的组件来实现,比如对话框。如果应用的需求复杂,那么GUI的实现仅靠一些单窗口组件是难以达到目的的。这里我们选择使用QMainWIndow+QMdiArea的基本框架来支持多文档等特性的实现。注意一点,GUI界面的所有实现都在j-main模块中。让我们开启GUI实现之旅吧!本文的目的是将在上一篇Unit test的几何图形绘制到窗口上,后续再添加更多的功能。
2024-04-11 20:08:15
654
原创 编写一款2D CAD/CAM软件(六)Unit Test
Unit Test对于大型软件项目是非常重要的,能够帮助developer快速发现、定位和解决问题。基于现有的Unit Test框架来构建单元测试是事半功倍的事情,比如Google Test或QTest等。由于我们的软件是基于Qt GUI的,考虑到同一框架的兼容、匹配性更高,因此我们这里选择使用QTest框架来构建Unit test.
2024-04-08 19:59:38
508
原创 编写一款2D CAD/CAM软件(五)视图
有些引擎使用CPU的能力,有些则充分发挥GPU的能力,而对于CAD/CAM这种面向大型绘图设计的图形软件,不仅仅需要充分发挥硬件的能力,而且需要进行多种图形学、算法的优化才能达到满足用户需求的目的。这里我们暂时使用Qt提供的QPainter作为绘图引擎,该引擎是使用CPU来进行绘图,理解容易、使用简单。而对于图形坐标系和视图坐标系的缩放比例ratio_,以及图形坐标系的原点在视图坐标系下的坐标位置(x_orig_geo_, y_orig_geo_)可以参照上一篇关于坐标系的说明。
2024-04-06 19:09:34
827
8
原创 编写一款2D CAD/CAM软件(三)几何图元
这里暂时只定义点,直线和圆,其它几何图元陆续增加。这是一个2D的CAD/CAM软件,所以这里的点定义在二维的直角坐标系下。同样其它几何图元也定义在二维直角坐标系下。y_ = y;x_ = x;y_ = y;return x_;return y_;两点定义一条直线(确切的说是线段)。end_ = end;
2024-04-01 15:53:02
242
原创 编写一款2D CAD/CAM软件(一)前言
为何需要CAD/CAM软件?CAD/CAM软件对于工业设计与生产的重要性不言而喻。在这个倡导智能制造的时代,CAD/CAM软件的地位日益重要。处于领先地位的CAD/CAM软件有哪些?请登录AutoDesk官网查看其产品全家桶系列。有哪些开源CAD/CAM软件?FreeCADQCadQCAD有哪些国产CAD/CAM软件?中望CAD浩辰CAD。
2024-03-30 17:45:45
559
原创 Basic principles of backward/downward compatibility of files
【代码】Basic principles of backward/downward compatibility of files。
2024-03-27 15:50:27
304
Debugging with GDB
2024-04-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人