天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 111|回复: 0

ObjectARX编程(四) --------符号表简述

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
在上一节探讨数据库的时候已经了解到,符号表是AutoCAD中一种容器,保存了对应的符号表记录,用来实现AutoCAD中的某种对象:
符号表名        符号表功能
AcDbViewTable
(视图表)        适用于 AcDbViewTableRecord 类,表示在数据库中存储的视图。
视图与CAD的"VIEW"命令相关联
AcDbViewportTable
(视口表)        适用于 AcDbViewportTableRecord 类,表示在CAD中当前系统变
量TILEMODE的值为1时的视口设置。视口配置由CAD的 VPORTS
命令创建。不要和 MVIEW 命令混淆,当系统变量 TILEMODE 的
值为0是,该命令创建视口实体。
AcDbLinetypeTable
(线性表)        适用于 AcDbLinetypeTableRecord 类,表示图形数据库中的线性。
AcDbLayerTable
(层表)        适用于 AcDbLayerTableRecord类,表示图层。
AcDbTextStyleTable
(文字样式表)        适用于 AcDbTextStyleTable 类,表示文字样式。
AcDbUCSTable
(用户坐标系表)        适用于 AcDbUCSTableRecord 类,表示图形数据库中的存储的用户
坐标系。
AcDbRegAppTable
(应用程序名注册表)        适用于 AcDbRegAppTableRecord 类,表示为图形数据库中对象的扩
展实体数据而注册的应用程序名。
AcDbDimStyleTable
(尺寸标注样式表)        适用于 AcDbDimStyleTableRecord 类,表示图形数据库中的尺寸标注
样式。
AcDbBlockTable
(块表)        适用于 AcDbDimStyleTableRecord 类,表示图形数据库中定义的块。
此表含有两个非常重要的记录:模型空间和图纸空间。所有的实体(可
见对象)均防御块表AcDbBlockTable中。




每一个符号表都有一个相应的符号表记录,用来存储符号表中的记录的实体。




AcDbBlockTable AcDbBlockTableRecord (块表)

AcDbDimStyleTable AcDbDimStyleTableRecord (尺寸样式表)

AcDbLayerTable AcDbLayerTableRecord (层表)

AcDbLinetypeTable AcDbLinetypeTableRecord (线型表)

AcDbRegAppTable AcDbRegAppTableRecord (程序注册表)

AcDbTextStyleTable AcDbTextStyleTableRecord (文字样式表)

AcDbUCSTable AcDbUCSTableRecord (用户坐标表)

AcDbViewportTable AcDbViewportTableRecord (视口表)

AcDbViewTable AcDbViewTableRecord (视图表)




  从数据库获取的各种符号表的方法大同小异,处理可以使用getSymbolTable函数,还可以根据符号表的具体类型调用相应的函数,如获得块表可以使用 getBlockTable函数,获取层表可以调用 getLayerTable函数。

Acad::ErrorStatus getSymbolTable(AcDbXXXTable*& pTable,AcDb::OpenMode mode);

Acad::ErrorStatus getXXXTable(AcDbXXXTable*& pTable,AcDb::OpenMode mode);

注: XXX表示你想要获取的具体的表, mode 是表的打开方式,读或者写。




所有的符号表都继承自AcDbSymbolTable类, 该类包含如下函数

add: 想记录符号表中添加一条新的记录,各种符号表实现的形式略不一样。

Acad::ErrorStatus AcDbXXXTable::add(AcDbXXXTableRecord* pRecord); //项XXX表添加一条记录

Acad::ErrorStatus AcDbXXXTable::add(AcDbObjectID& objectID,AcDbXXXTableRecord* pRecord);




getAt: 获取符号表中特定名称的记录的指针或ID。

Acad::ErrorStatus AcDbXXXTable::getAt(const char* pEntityName,AcDb::OpenMode mode,

AcDbXXXTableRecord*& precord,Adesk::BooleanOpenErasedRecord=Adesk::kFalse);

Acad::ErrorStatus AcDbXXXTable::getAt(const char* pEntityName,AcDbObjectId& recorded,

AcDbXXXTableRecord*& precord,Adesk::Boolean openErasedRecord=Adesk::kFalse);




has: 判断符号表中是否包含特定的记录。

Acad::ErrorStatus AcDbXXXTable::has(const char* pEntityName)const;




newIterator: 创建一个符号表遍历器,访问符号表中所有的记录。

Acad::ErrorStatus AcDbXXXTable::newIterator(AcDbXXXIterator*& pIterator,

Adesk::Boolean atBeginning=Adesk::kTrue,Adesk::Boolean skipErased = Adesk::kTrue)const;




  块表中包含有两天特殊的记录:*MODEL_SPACE(模型空间)和*PAPER_SPACE(图纸空间)。所有的AutoCAD实体均属于这两个记录。

 

 

 

 

ObjectARX编程(四) --------符号表简述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:28 , Processed in 0.145426 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表