二维CAD绘图系统-数据结构参考

从大作业来看,选择CAD系统的小组比较多,但部分同学对CAD绘图系统的链表数据结构设计不合理,导致后续缩放、旋转、选中、文件保存及读取等功能实现上比较棘手。

现给大家参考兼容多图形的数据结构设计,个人认为在图形操作及文件方面比较容易管理。

参考数据结构:

//记录每个图元点的位置信息,坐标点的链表结构
typedef struct PRIMITIVE_POINT {
	double x, y;			//the point coordinate.
	PRIMITIVE_POINT *next;
}primitive_point;

//记录每个图元的头结点
typedef struct PRIMITIVE_HEAD {
	size_t	type;// the type of current primitive
	bool	fill_state;	//Set a fill when fill_state = 1
	COLOR	fill_color;	//The color of fill color
	COLOR	line_color;	//Set line color
	STYLE	line_style;	//Set line style
	size_t 	line_width;	//Set line width
	bool 	selected_state; //The state is set to 1 if a user selects the primitive
	OTHER	other_parameters; //Set other parameters for extension
	primitive *p;	//A pointer points to the primitive
}primitive_head;

//利用**数组**或**链表**连接各个图元
primitive_head primitive_head_array[MAX_PRIMITIVE_NUMBER];

参考数据结构图:
图中红色点表示每个primitive对应的点,每个形状可以由若干图元构成。链表中仅保存图元信息(点位置)即可,通过头结点的type获取当前的形状信息,然后获取链表中每个节点的具体含义。
图中的primitive_head_array,也可以用链表结构表示。
矩形采用三个节点存储,是为了防止旋转操作情况下歧义形状的绘制。
在这里插入图片描述
通过上述链表结构定义,所有图形均可以通过同一种数据结构表达,能够有效降低代码复用性,提高开发效率。
除此之外,该数据结构也比较容易添加自定义图形(例如demo中的房子、鱼、立方体等),并容易修改固定的自定义图形。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: CAD是计算机辅助设计的简称,是现代设计和制造中不可缺少的工具。CAD软件呈现出的图形虽然精细,但实际上都是由一些基本的几何构件组成,其本质上是由数据构成。CAD二次开发就是在CAD软件基础之上,通过编写程序,扩展其功能,实现特定需求。 从零开始学习CAD二次开发需要掌握以下技能: 1. 掌握对CAD不同版本中的API 不同版本的CAD会有不同的API,要想开发对应版本的插件或者应用,我们需要对此有足够的准备。最常用的API是ObjectARX,它是由Autodesk开发的一组C++类库,通过ObjectARX可以轻松创建扩展功能和应用。 2. 理解CAD的对象模型 在CAD中,对象分为诸如CAD图形、块、对象等等元素。单独一个对象只有它的位置、描述等元信息。当许多对象互相组合,我们才能创建出完整的CAD图形。插件开发的核心就是用代码操作这些对象,并实现特定的功能。 3. 熟悉CAD的各种数据结构 在二次开发过程中,我们需要对CAD中出现的数据结构有所了解。比如说图层、块、样式、文本,等等。这些数据结构是对CAD图形数据的描述,对于一个开发者来说,掌握这些结构能让我们更好的实现开发需求。 总之,CAD二次开发需要我们在熟悉CAD软件的基础上,掌握API、对象模型和数据结构等技能。通过自学和实践不断提升,逐步走上从入门到精通的道路。 ### 回答2: CAD二次开发是一项非常重要的技能,它的应用非常广泛,特别是在机械制造、建筑设计等领域。如果你想从入门到精通,需要具备以下几点能力: 一、掌握CAD的基本知识 在CAD二次开发之前,需要先学习CAD的基本知识,包括绘图、图层管理、坐标系、实体、属性等。只有有了这些基础知识,才能更好地进行二次开发。 二、学习CAD二次开发工具 掌握CAD二次开发最重要的就是掌握工具。常见的CAD二次开发工具有Lisp、.NET、VBA等,需要选择一种或多种进行学习。这些工具的学习成本不同,但都需要进行练习才能掌握。 三、熟悉CAD二次开发API 掌握CAD二次开发的关键是学习API(应用程序接口)。CAD提供了很多的API,比如ObjectARX、AutoLisp、VBA等,需要深入学习和掌握。API能够帮助开发者进行自动化操作,实现快速编程。 四、不断实践 只有不断地练习才能够真正掌握CAD二次开发的技能。可以通过编写一些小程序、脚本等来加强自己的实践,同时也可以借鉴其他开发者的代码和程序来学习和提高。 总的来说,如果想要从入门到精通CAD二次开发,需要先确立自己学习目标,根据目标选择合适的工具和API进行学习,并且不断进行实践和练习,才能够真正掌握这项技能。 ### 回答3: CAD二次开发从入门到精通,顾名思义就是通过编写程序来扩展CAD软件的功能。通过二次开发,可以更好地满足用户的需求,提高CAD软件的效率和使用体验。下面将从入门、基础知识、实践以及进阶几个方面来探讨CAD二次开发的全过程。 一、入门: 首先需要掌握好CAD软件的基本操作和各种命令的使用,其次要了解AutoCAD的指令集以及CAD编程的基本原理和语言。学习CAD二次开发需要对VB、VBA、Lisp、.Net等编程语言均有一定了解。 二、基础知识: 了解CAD应用程序界面(CAD API),能够查询和编辑CAD图形数据。CAD二次开发的主要技术包括VB、VBA、Lisp、.Net等,其中Lisp较为常用,具有简单易学的特点。学习Lisp从简单的语句语法入手,掌握几个重要的函数,如DEFUN、SETQ、IF等。同时,要具备良好的逻辑思维和代码调试能力,对常用CAD命令如画线、画圆等的操作对象进行熟悉,掌握CAD软件所涉及的一些实体类、坐标系等。 三、实践: 通过实际的编程实践,将理论知识转化为实际的应用。编写程序的过程中需要有逻辑思路,并且要有完备的测试流程,以确保程序能够顺利运行。实践的过程中,需要有学习笔记,并且在理解基础语法后,不断进行实践,打造自己的CAD二次开发工具库。 四、进阶: 在通过实践对CAD二次开发有了深刻理解后,可以一步步深入到更高阶段。例如,完成ACAD/BRX的二次开发,进行三维图形编程等。在进阶阶段,需要不断的学习、实践和总结,同时还要有自我提升和不断完善自己的编程技术的意识。 总结: 学习CAD二次开发需要扎实的基础知识,实践编程工程,并且不断提升技术。需要坚持学习,在实践中切实提高,不断积累经验,不断提升自我技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值