Arthur...J
CAD/CAM软件开发,EDA软件开发,图像处理软件开发
展开
-
编写一款2D CAD/CAM软件(二十)转存
为了方便debug调试,那么应该封装一个打印字符串的接口函数。通过一个接口函数将文件转存为一个测试参考的文件。以部分类的转存为例。原创 2024-06-11 11:45:01 · 63 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十九)点选图形
在框选图形的基础上增加图元是否击中的判断。原创 2024-06-02 17:31:22 · 76 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十八)框选图形
实现第一种操作相对比较简单:为每个图像计算一个边框Frame,然后计算这个Frame是否完全在选择框内。实现第二种操作则相对麻烦。如果你认为只要计算出Frame与选择框是否相交就可以,那么你想得过于简单了。比如一个圆,它的Frame和选择框相交并不等同于圆本身与选择框相交。因此第二种方法需要补充更多关于不同几何图形是否相交的API,这一部分我们将会在后续的文章中陆续补充上。本文先关注如何实现第一种操作。原创 2024-04-26 21:30:29 · 282 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十七)绘制选择框
本文先来实现框选的第一部分,那就是绘制出按住鼠标左键拖动形成的矩形框。原创 2024-04-24 21:43:16 · 1040 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十六)交互绘制图形
以此为模板,可以将绘制其它基本图元的功能补齐。原创 2024-04-21 10:33:52 · 593 阅读 · 1 评论 -
编写一款2D CAD/CAM软件(十五)封装交互操作类
至此,我们仍然还不能使用鼠标与软件进行交互来进行基本图元的绘制,因为我们还没有对绘制的操作类进行封装,在下一篇文章中我们将实现基本的交互操作。原创 2024-04-20 10:04:34 · 755 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十四)绘制工具栏
前面的文章已经封装了数个最基本的图元,但是视图的呈现是基于测试数据形成的。为了尽快完善软件交互的框架和能力,本文将增加工具栏。原创 2024-04-17 20:39:56 · 486 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十三)绘制折线
将一组离散的点按顺序通过直线段相连即构成折线。原创 2024-04-16 20:54:19 · 274 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十二)绘制圆
QPainter中有多个绘制椭圆的接口,长轴半径与短轴半径相等的椭圆即正圆。注意设置QPainter的画刷QBrush为空,否则绘制的将是填充的圆。注意这里的长度变换,从几何图形坐标系转为视图坐标系的半径长度。测试数据中增加了圆形。原创 2024-04-16 20:24:10 · 217 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(四)坐标系
我们仅使用视图坐标系和图形坐标系2个坐标系来简化坐标系模型。原创 2024-04-03 21:36:34 · 227 阅读 · 1 评论 -
编写一款2D CAD/CAM软件(九)视图缩放
用户通过视图缩放能够查看几何图形的精细结构、局部细节或者查看全局构成。视图缩放最友好和最方便的操作方式一般是通过鼠标滚轮的转动来实现的。原创 2024-04-13 20:30:47 · 801 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(三)几何图元
这里暂时只定义点,直线和圆,其它几何图元陆续增加。这是一个2D的CAD/CAM软件,所以这里的点定义在二维的直角坐标系下。同样其它几何图元也定义在二维直角坐标系下。y_ = y;x_ = x;y_ = y;return x_;return y_;两点定义一条直线(确切的说是线段)。end_ = end;原创 2024-04-01 15:53:02 · 180 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(七)GUI
GUI是用户与应用交互的桥梁。如果应用的需求简单,那么GUI的实现可以选择一些单窗口的组件来实现,比如对话框。如果应用的需求复杂,那么GUI的实现仅靠一些单窗口组件是难以达到目的的。这里我们选择使用QMainWIndow+QMdiArea的基本框架来支持多文档等特性的实现。注意一点,GUI界面的所有实现都在j-main模块中。让我们开启GUI实现之旅吧!本文的目的是将在上一篇Unit test的几何图形绘制到窗口上,后续再添加更多的功能。原创 2024-04-11 20:08:15 · 577 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(十)视图拖拽
一般视图操作是通过按压鼠标滚轮拖动实现视图的平移操作。原创 2024-04-14 12:00:40 · 491 阅读 · 1 评论 -
编写一款2D CAD/CAM软件(八)窗口缩放
当用户对窗口尺寸进行调整时,将引起resize事件的传递。原创 2024-04-13 16:18:15 · 566 阅读 · 0 评论 -
编写一款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 · 398 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(五)视图
有些引擎使用CPU的能力,有些则充分发挥GPU的能力,而对于CAD/CAM这种面向大型绘图设计的图形软件,不仅仅需要充分发挥硬件的能力,而且需要进行多种图形学、算法的优化才能达到满足用户需求的目的。这里我们暂时使用Qt提供的QPainter作为绘图引擎,该引擎是使用CPU来进行绘图,理解容易、使用简单。而对于图形坐标系和视图坐标系的缩放比例ratio_,以及图形坐标系的原点在视图坐标系下的坐标位置(x_orig_geo_, y_orig_geo_)可以参照上一篇关于坐标系的说明。原创 2024-04-06 19:09:34 · 700 阅读 · 8 评论 -
编写一款2D CAD/CAM软件(十一)文档
软件在编辑、访问、使用数据时,数据在内存里;当用户离线,数据在文档里,在硬盘里;文档构成了数据的集合,完整地、独立地表示一个设计。因此,本文封装了一个文档类JDocument用于数据的管理,同时增加了一个单独地文档模块库j-document来实现。原创 2024-04-14 19:08:22 · 335 阅读 · 1 评论 -
编写一款2D CAD/CAM软件(六)Unit Test
Unit Test对于大型软件项目是非常重要的,能够帮助developer快速发现、定位和解决问题。基于现有的Unit Test框架来构建单元测试是事半功倍的事情,比如Google Test或QTest等。由于我们的软件是基于Qt GUI的,考虑到同一框架的兼容、匹配性更高,因此我们这里选择使用QTest框架来构建Unit test.原创 2024-04-08 19:59:38 · 435 阅读 · 0 评论 -
编写一款2D CAD/CAM软件(二)软件模块组成
这里我们把这款代开发的CAD/CAM软件叫做JCad,因此每个模块增加了j-的前缀.原创 2024-03-30 18:40:37 · 432 阅读 · 0 评论