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 ...
随机推荐
- Newtonsoft.Json 时区差解决方法
在使用Newtonsoft.Json时会遇到这样的问题,数据库存的值跟接收到反序列的值差了8个小时.这时,只要在反序列化时设置一下就可以了. JsonConvert.DeserializeObject ...
- shell脚本作为保证PHP脚本不挂掉的守护进程实例
前几天开始跑一份数据名单,名单需要提供用户名.是否有手机号.是否有邮箱,用户名单我轻易的获取到了,但是,用户名单有2000w之多,并且去检测用户是否有手机号.是否有邮箱必须得通过一个对外开放的安全接口 ...
- Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
接下来我们试验虚拟机的网络配置功能,KVM虚拟机网络配置主要有两种方式:NAT方式和Bridge方式.今天我们主要理解和实验NAT方式的网络配置. NAT方式是kvm安装后的默认方式,它支持主机与虚拟 ...
- Android零点一度的区别——Matrix
2013-07-07 导语:Matrix是android中对图像绘制的处理(旋转.放缩.平移等等),貌似书本翻页就是用这种方式处理的 正文: 1.基于坐标(px,py)旋转degrees度, post ...
- Sql Server 自定义函数(原创)
---------------------------------------------------------------------------------------------- 传入字符串 ...
- js区分汉字和字符,校验长度
遇到这么一个问题, 长度限制输入150个英文字符(小于等于150个英文字符长度),超出则直接禁止输入,并提醒:摘要输入必须小于等于75个中文字符长度! 长度校验倒是没问题,但是要区分汉字还是英文 ...
- asp.net MVC 模拟实现与源码分析
前言 本文流程#1: 从一个空项目->模拟实现一个从/Home/Test形式的URL敲入->后台逻辑处理->传入后台model参数->调用razor引擎->前台展示 涉及 ...
- [ios2]使用NSOperationQueue简化多线程开发和队列的优先级 【转】
多线程开发是一件需要特别精心的事情,即使是对有多年开发经验的工程师来说. 为了能让初级开发工程师也能使用多线程,同时还要简化复杂性.各种编程工具提供了各自的办法.对于iOS来说,建议在尽可能的情况下避 ...
- 浅析ThreadLocal
这是我的第一篇博客,条理不是很清晰,不过还是希望能对大家有所帮助. 首先明确一下这个类的作用,ThreadLocal类是用来为每个线程提供了一份变量的副本,即每个线程的局部变量.每个线程都在自己的栈空 ...
- VSFTP服务——实验
一.VSFTP 作用:提供文件共享服务,可以应用在互联网中,实现外地登录服务器下载公司文件的功能,不区分客户端,在windows和linux中都是可以使用的 1.安装vsftpd [root@Serv ...