上一小节我们看到了符号表包含了一系列的表(共9个),这些表数量是固定的,用户不能增加新的表,也不能删除现有的表. 符号表名称 符号表功能 Block Table 块表 存储图形数据库中定义的块.此表中含有两个非常重要的记录:模型空间和图纸空间. Dimension Style Table 尺寸标注样式表 存储尺寸标注样式 Layer Table 层表 存储图层 Linetype Table 线型表 存储线型 RegApp Table 应用程序名注册表 存储为图形数据库中对象的扩展实体数据而注册的…
为了清楚的了解块表的组成内容,让我们利用MgdDbg工具查看一下块表中的块表记录.在开始页面,以无样板模式新建一个.dwg文件(图 4‑7(1)),这样的话,默认的块表记录只有3条(图 4‑7(2)),分别是模型空间和两个布局(这3条特殊的块表记录我们暂且不去研究,等把普通的块表记录弄明白之后,再研究这3条特殊的块表记录).这里涉及到了两个名词:块表和块表记录,需要加以区分,不能混淆.块表是9个符号表中的一员,块表中包含的内容是块表记录,块表记录是块表的“成员”. (1) (2) 图 4‑7 (…
块表记录是包裹实体对象的最后一层包装了,接下来让我们继续利用MgdDbg工具查看上一小节创建的块定义内的对象有哪些. 操作步骤如下:选择块表记录TestBlock,在右侧列表中找到“Entities within block”,选中该行并单击鼠标左键,弹出Snoop Objects对话框,列表中显示出了创建块定义时选择的两个对象:圆和直线.(下图中BED.BEE分别为实体对象的句柄(Handle)). 图 4‑10 TestBlock块表记录中的实体对象 如果刚才创建块时,您选择了删除所选对象,…
数据库的结构是什么样的?对象是如何存储在数据库中的?这些问题我们需要搞明白.在此我们可以借助工具ArxDbg或MgdDbg来查看数据库结构及其内容.下图就是利用MgdDbg工具查看到的内容,我们可以看到数据库主要由符号表(Symbol Tables)及命名对象字典(Dictionaries)组成.符号表及字典的具体内容在后续小节中详述. (1) (2) 图 4‑6 数据库主要组成部分 如何从文档中获取数据库,因比较简单,将在后续的代码中直接列出.…
再次想象另外一个场景:启动AutoCAD程序后,您新建了两个.dwg文件,也就是说创建了两个文档(Document)对象.将窗口进行层叠,您看到的窗口应该与下图类似: 图 4‑3 如何访问这些文档呢?还是让我们通过简单的代码来了解一下吧: 利用向导创建项目,在MyCommands类中添加以下代码,之后编译.加载并运行命令. [CommandMethod("MyGroup", "ListDocs", CommandFlags.Modal)] public void L…
想象这样一个场景:当您开始一天的工作,坐到电脑前面,用鼠标双击桌面上的AutoCAD Civil 3D图标,这时一个AutoCAD Civil 3D应用程序将运行起来.打开Windows任务管理器,我们可以看到类似窗口: 图 4‑1 应用程序 本书中所涉及的二次开发程序,都是在这个AutoCAD Civil 3D应用程序基础上运行的,虽然我们可以实现利用自己的程序来控制AutoCAD的加载与运行,但这部分内容并不在本书的所涵盖的内容之中,如果您需要这方面的资料,你需要查阅其他资料,在AutoCA…
http://blog.csdn.net/wangbingcsu/article/details/48340479 C++编译器符号表有哪些内容? 很早就想写一篇关于符号表的学习小结,可是迟迟不能下笔.其一是因为符号表在编译器的设计中占有举足轻重的地位[我们在学习编译原理的时候更多的是注重principles,而没有关心一个编译器的实现,所以符号表讲解的也比较少],编译阶段的每“遍”都会和符号表打交道,本人只做过一个Mini C的编译器的前端部分,感觉功底不够:其二是因为我想在原来C语言的基础上…
详解link  有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行).或者对语言的一些部分不知道为什么要(或者不要)这样那样设计.了解本文之后, 或许会有一些答案.      首先看看我们是如何写一个程序的.如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而…
推荐序 本文介绍了恢复符号表的技巧,并且利用该技巧实现了在 Xcode 中对目标程序下符号断点调试,该技巧可以显著地减少逆向分析时间.在文章的最后,作者以支付宝为例,展示出通过在 UIAlertView 的 show 方法处下断点,从而获得支付宝的调用栈的过程. 本文涉及的代码也开源在:https://github.com/tobefuturer/restore-symbol,欢迎 Star 和提 Issue.感谢作者授权发表. 作者介绍:杨君,中山大学计算机系研究生,iOS 开发者,擅长领域…
程序减肥,strip,eu-strip 及其符号表 我们要给我们生成的可执行文件和DSO瘦身,因为这样可以节省更多的磁盘空间,所以我们移除了debug信息,移除了符号表信息,同时我们还希望万一出事了,比如coredump了,我们能获取更多的信息,这时候我们又希望有符号表.     我们等不能做到呢.Linux下是怎么解决这个矛盾的呢?先看第一个问题,程序减肥.      1 程序减肥     我写了个简单的代码,main调用了foo,foo调用了bar,其中bar故意访问了非法地址,为了引起co…