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 ...
随机推荐
- 使用upstream和subrequest访问第三方服务
本文是对陶辉<深入理解Nginx>第5章内容的梳理以及实现,代码和注释基本出自此书. 一.upstream:以向nginx服务器的请求转化为向google服务器的搜索请求为例 (一)模块框 ...
- asp.net mvc Route 使用自定义条件(constraints)禁止某ip登陆
asp.net mvc Route 使用自定义条件(constraints)禁止某ip登陆 前言 本文的目的是利用Mvc route创建一个自定义约束来控制路由跳转实现禁止ip登陆,当然例子可能不合理 ...
- C#跨窗体调用控件(委托回调函数使用例子)
问题: 有两个窗体,FORM1(含一个label控件,一个名为显示form2的button控件)和FORM2(含一个button控件).启动时,FORM1中点击button控件显示form2使FORM ...
- Http的四种post方式
1.引言 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 POST 一般用来向服务端提交 ...
- dtree实现上下级关系的显示
在实际开发中我们常常要涉及到到在页面上显示上下级关系这样的需求 ,我的实现方法: 环境:S2SH+mysql 数据库结构如下图: 其中mgr字段是指经理,也就是自己的上一级 映射信息: Action和 ...
- 两行代码实现微信小程序联系人sidebar
话不多说,先给你们看看核心数据和结构: 一.数据: city的json array,letter的array (city的json array里的首字母是我手工放置进去的,你也可以通过for循环获得c ...
- jQuery+HTML5声音提示
WEB应用中,有时需要播放特定的声音,比如有新消息或者在线聊天消息声音提示,以前我们通过flash实现,今天我们将使用jQuery和HTML5结合示例来实现如何把声音提示带入WEB应用中. 在本例中, ...
- 集中式(CVS、SVN)VS分布式(Git)
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.中央服务器就好比是一个图 ...
- 新mac上安装,查看,设置一些常用的软件
安装 brew install ~ 查看相关信息 brew info ~ 设置登录自启动 brew services start ~(本质是在~/Library/LaunchAgents/下面加了对应 ...
- ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序
服务器上某个数据库出现' ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程'错误,要解决该问题首先查看一下数据库现有的进程数,是否已经达到参数processes的大小. 使用 ...