ARXObject的入门学习
刚刚学习一样新东西的时候,首先要解决的几个问题
1. 任何搭建一个项目环境;
2. 新建一个项目的流程;
3. 调试;
4. 熟悉其API;
5. 错误积累与解决办法;
6. 其中隐含的语法知识和UML知识;
这是针对代码而言,如果对专业背景不熟悉,还能掌握相关背景知识。
这篇主要讲的是基本流程如下:
2.1 基于AutoCAD内部的实现机制,必须在堆上创建对象,而不能用下面的语句创建直线的对象:
比如: AcDbLine line(ptStart, ptEnd);
只能用: AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);
这只是在内存上创建,并没有添加到图形数据库中,因此不可能会显示在图形窗口中。
2.2 获得指向块表的指针
AcDbBlockTable *pBlockTable;//获得指向块表的指针;
acdbHostApplicationServices()->workingDatabase() 能够获得一个指向当前活动的图形数据库的指针。
getBlockTable是AcDbDatabase类的一个成员函数,用于获得指向图形数据库的块表的指针。
2.3 获得指向特定的块表记录(模型空间)的指针
AcDbBlockTableRecord *pBlockTableRecord; //获得指向特定的块表记录(模型空间)的指针
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
AcDbBlockTable::getAt(…) 是获得块表中特定的记录。
2.4 在块表记录中添加实体
AcDbObjectId lineId; //将AcDbline类的对象添加到块表记录中
pBlockTableRecord->appendAcDbEntity(lineId, pLine);
AcDbBlockTableRecord::appendAcDbEntity(…); //用于将pEntity指向的实体添加到块表记录和图形数据库中。
2.5 关闭图形数据库的各种对象
pBlockTable->close();
pBlockTableRecord->close();
pLine->close();
要注意: 1). 打开或创建数据库对象之后,必须尽可能早的关闭它。
2). 不要使用delete pLine。在C++中,new,delete运算符配对使用。但在ObjectARX的编程中,当用appendAcDbEntity函数将对象添加到图形数据库之后,就需要由图形数据库来操作该对象。这里是由内部自己释放了吗?
ARXObject的入门学习的更多相关文章
- vue入门学习(基础篇)
vue入门学习总结: vue的一个组件包括三部分:template.style.script. vue的数据在data中定义使用. 数据渲染指令:v-text.v-html.{{}}. 隐藏未编译的标 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- PyQt4入门学习笔记(三)
# PyQt4入门学习笔记(三) PyQt4内的布局 布局方式是我们控制我们的GUI页面内各个控件的排放位置的.我们可以通过两种基本方式来控制: 1.绝对位置 2.layout类 绝对位置 这种方式要 ...
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
- Hadoop入门学习笔记---part2
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...
- Retrofit 入门学习
Retrofit 入门学习官方RetrofitAPI 官方的一个例子 public interface GitHubService { @GET("users/{user}/repos&qu ...
- MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...
- opengl入门学习
OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...
随机推荐
- 依赖注入(IOC)二
依赖注入(IOC)二 上一章我们讲了构造注入与设值注入,这一篇我们主要讲接口注入与特性注入. 接口注入 接口注入是将抽象类型的入口以方法定义在一个接口中,如果客户类型需要获得这个方法,就需要以实现这个 ...
- Linux 学习 step by step (2)
Linux 学习 step by step (2) Linux,想要我说爱你真的不容易了,尽管,你是ubutun,尽管,你有蛮界面.但是,操作你,还是没有操作windows那么的如鱼得水了.为了更 ...
- 如何使用开源库,吐在VS2013发布之前,顺便介绍下V2013的新特性"Bootstrap"
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" 刚看到Visual Studio 2013 Preview - ASP.NET, M ...
- struts征程:1.初识struts2
1.struts2在开发中所必须用到的jar包导入到项目的lib目录下 2.在web.xml中配置一个过滤器,代码格式如下 <filter> <filter-name>stru ...
- CCNA网络工程师学习进程(7)路由器的路由配置
前面一节已经介绍了路由器的端口配置,接着我们介绍路由器的路由配置:静态路由.默认路由和浮动路由的配置:动态路由协议的配置,包括RIP.IGRP.EIGRP和OSPF. (1)路由器的基 ...
- 在收购Sun六年后,Oracle终于瞄准了Java的非付费用户
Java语言毫无疑问已经成为软件社区的一个品牌和开放的产业标准.自从2010年Oracle收购了Sun Microsystems公司之后,很多人就担心这在某种程度上是软件开源产业的一次失败,甚至会造成 ...
- Node.js(初识)
之前有了解过一点Node.js,只是一直停留在文字描述,没有真正使用过Node.js,如今因为工作的原因,开始真正接触到Node.js,也开始深入学习. Node.js具体是用来做什么的,我想一开始接 ...
- 《CLR Via C#》读书笔记,持续更新...
写了快5年代码了,一直都是使用别人发明的语言,别人发明的框架做快速开发,还从来没有真正深刻的学习过底层的一些东西,于是今年我打算读<CLR Via C#>这本书,认识一下C#的底层,我觉得 ...
- Redmine管理项目1-自定义属性
先是点击页面导航条(最上面那排菜单,有主页.我的工作台.项目.管理.帮助等)上的“管理”菜单,看到下图: 看到里面的“自定义属性”菜单了吧,点击它,可以看到下面的界面: 点击那个“新建自定义属性”菜单 ...
- buildroot 重新编译 package
/************************************************************************* * buildroot 重新编译 package ...